From 633ea9cb4ad84e810bbd51a904c4029a22ce0b19 Mon Sep 17 00:00:00 2001
From: Sina Karvandi
Date: Thu, 24 Jul 2025 01:09:16 +0200
Subject: [PATCH 001/323] Update CREDITS.md
---
CREDITS.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/CREDITS.md b/CREDITS.md
index a7990bf3..cc83026d 100644
--- a/CREDITS.md
+++ b/CREDITS.md
@@ -4,7 +4,7 @@ The list provided comprises individuals who have made significant contributions
## Credits:
-The attributions listed on this credits page are acknowledged without any particular order.
+Just so you know – the attributions listed on this credits page are acknowledged without any particular order.
- All of the [contributors](https://github.com/HyperDbg/HyperDbg/graphs/contributors)
- Sina Karvandi ([@Intel80x86](https://twitter.com/Intel80x86))
@@ -24,4 +24,5 @@ The attributions listed on this credits page are acknowledged without any partic
- xmaple555 ([@xmaple555](https://github.com/xmaple555)) for contributions in HyperDbg core and the script engine
- Abbas Masoumi Gorji ([@AbbasMasoumiG](https://twitter.com/AbbasMasoumiG))
- Björn Ruytenberg ([@0Xiphorus](https://twitter.com/0Xiphorus))
-- Marcis Zarins ([@CokeTree3](https://github.com/CokeTree3))
+- Marcis Zarins ([@CokeTree3](https://github.com/CokeTree3)) for his works on enhancing HyperEvade project
+- Artem Shishkin ([@honorary_bot](https://twitter.com/honorary_bot)) for always answering our hypervisor questions
From 2fdf0f59de632294dbecda55a0d80174dd41aebd Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 26 Jul 2025 01:53:43 +0200
Subject: [PATCH 002/323] Restore release build optimizations and fix CPUID
register restoration
---
CHANGELOG.md | 9 ++++++++
.../hyperdbg_driver/hyperdbg_driver.vcxproj | 2 +-
.../user/hyperdbg_app/hyperdbg_app.vcxproj | 2 +-
hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj | 2 +-
hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj | 2 +-
hyperdbg/hyperevade/hyperevade.vcxproj | 2 +-
hyperdbg/hyperkd/hyperkd.vcxproj | 2 +-
hyperdbg/hyperlog/hyperlog.vcxproj | 2 +-
hyperdbg/include/SDK/headers/Constants.h | 2 +-
hyperdbg/kdserial/kdserial.vcxproj | 2 +-
.../code/assembly/asm-vmx-checks.asm | 23 ++++++++++++-------
hyperdbg/libhyperdbg/libhyperdbg.vcxproj | 2 +-
hyperdbg/script-engine/script-engine.vcxproj | 2 +-
hyperdbg/symbol-parser/symbol-parser.vcxproj | 2 +-
14 files changed, 36 insertions(+), 20 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2a3f785e..60f2028d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.15.0.0] - 2025-XX-XX
+New release of the HyperDbg Debugger.
+
+### Added
+
+### Changed
+- Restored the previous optimization on the release builds
+- Fixed the issue of not properly restoring registers after the 'CPUID' instruction
+
## [0.14.0.0] - 2025-07-23
New release of the HyperDbg Debugger.
diff --git a/examples/kernel/hyperdbg_driver/hyperdbg_driver.vcxproj b/examples/kernel/hyperdbg_driver/hyperdbg_driver.vcxproj
index 9d1bb8aa..51e06464 100644
--- a/examples/kernel/hyperdbg_driver/hyperdbg_driver.vcxproj
+++ b/examples/kernel/hyperdbg_driver/hyperdbg_driver.vcxproj
@@ -86,7 +86,7 @@
true
Create
pch.h
- Disabled
+ Full
true
diff --git a/examples/user/hyperdbg_app/hyperdbg_app.vcxproj b/examples/user/hyperdbg_app/hyperdbg_app.vcxproj
index 60ad1eb1..9624c627 100644
--- a/examples/user/hyperdbg_app/hyperdbg_app.vcxproj
+++ b/examples/user/hyperdbg_app/hyperdbg_app.vcxproj
@@ -91,7 +91,7 @@
pch.h
$(SolutionDir)include;$(ProjectDir)header;%(AdditionalIncludeDirectories)
true
- Disabled
+ MaxSpeed
Console
diff --git a/hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj b/hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj
index 66c49f57..c7a30489 100644
--- a/hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj
+++ b/hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj
@@ -110,7 +110,7 @@ copy "$(SolutionDir)miscellaneous\constants\pciid\pci.ids" "$(OutDir)constants\p
MultiThreadedDebug
true
stdcpp20
- Disabled
+ MaxSpeed
Console
diff --git a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
index f4b2dbd8..43f98fd3 100644
--- a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
+++ b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
@@ -91,7 +91,7 @@
MultiThreaded
true
stdcpp20
- Disabled
+ MaxSpeed
Console
diff --git a/hyperdbg/hyperevade/hyperevade.vcxproj b/hyperdbg/hyperevade/hyperevade.vcxproj
index 73963ef4..e95f4b8c 100644
--- a/hyperdbg/hyperevade/hyperevade.vcxproj
+++ b/hyperdbg/hyperevade/hyperevade.vcxproj
@@ -87,7 +87,7 @@
Create
pch.h
stdcpp20
- Disabled
+ Full
true
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj b/hyperdbg/hyperkd/hyperkd.vcxproj
index a756dd53..cd52c9a1 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj
@@ -91,7 +91,7 @@
Create
pch.h
stdcpp20
- Disabled
+ Full
true
diff --git a/hyperdbg/hyperlog/hyperlog.vcxproj b/hyperdbg/hyperlog/hyperlog.vcxproj
index 269be648..1b9bfc9e 100644
--- a/hyperdbg/hyperlog/hyperlog.vcxproj
+++ b/hyperdbg/hyperlog/hyperlog.vcxproj
@@ -87,7 +87,7 @@
Create
pch.h
stdcpp20
- Disabled
+ Full
true
diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h
index 15609cc7..065244ab 100644
--- a/hyperdbg/include/SDK/headers/Constants.h
+++ b/hyperdbg/include/SDK/headers/Constants.h
@@ -17,7 +17,7 @@
//////////////////////////////////////////////////
#define VERSION_MAJOR 0
-#define VERSION_MINOR 14
+#define VERSION_MINOR 15
#define VERSION_PATCH 0
//
diff --git a/hyperdbg/kdserial/kdserial.vcxproj b/hyperdbg/kdserial/kdserial.vcxproj
index d63b62f0..5d67a92b 100644
--- a/hyperdbg/kdserial/kdserial.vcxproj
+++ b/hyperdbg/kdserial/kdserial.vcxproj
@@ -118,7 +118,7 @@
$(IntDir);%(AdditionalIncludeDirectories);$(KM_IncludePath);$(ProjectDir)..\..\inc
true
stdcpp20
- Disabled
+ Full
$(DDK_LIB_PATH);%(AdditionalLibraryDirectories);$(SolutionDir)libraries\kdserial\$(PlatformTarget)
diff --git a/hyperdbg/libhyperdbg/code/assembly/asm-vmx-checks.asm b/hyperdbg/libhyperdbg/code/assembly/asm-vmx-checks.asm
index bc2360d7..dd81a1d8 100644
--- a/hyperdbg/libhyperdbg/code/assembly/asm-vmx-checks.asm
+++ b/hyperdbg/libhyperdbg/code/assembly/asm-vmx-checks.asm
@@ -10,25 +10,32 @@ PUBLIC AsmVmxSupportDetection
;------------------------------------------------------------------------
AsmVmxSupportDetection PROC
-
- xor eax, eax
- inc eax
+ push rbx
+ push rcx
+ push rdx
+
+ xor eax, eax
+ inc eax
cpuid
- xor rax, rax
- bt ecx, 05h
- jc VMXSupport
+ xor rax, rax
+ bt ecx, 05h
+ jc VMXSupport
VMXNotSupport:
jmp RetInst
VMXSupport:
- mov rax, 01h
+ mov rax, 01h
RetInst:
+ pop rdx
+ pop rcx
+ pop rbx
+
ret
AsmVmxSupportDetection ENDP
;------------------------------------------------------------------------
-END
\ No newline at end of file
+END
\ No newline at end of file
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
index 98415643..ccc5ca5b 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
@@ -106,7 +106,7 @@
CompileAsCpp
true
stdcpp20
- Disabled
+ MaxSpeed
Windows
diff --git a/hyperdbg/script-engine/script-engine.vcxproj b/hyperdbg/script-engine/script-engine.vcxproj
index 56da3d98..a97154b5 100644
--- a/hyperdbg/script-engine/script-engine.vcxproj
+++ b/hyperdbg/script-engine/script-engine.vcxproj
@@ -93,7 +93,7 @@
$(SolutionDir)\script-engine\header;$(SolutionDir)\include;$(SolutionDir)\script-engine;$(SolutionDir)\script-eval;%(AdditionalIncludeDirectories)
true
stdcpp20
- Disabled
+ MaxSpeed
Windows
diff --git a/hyperdbg/symbol-parser/symbol-parser.vcxproj b/hyperdbg/symbol-parser/symbol-parser.vcxproj
index 7cded059..1732405a 100644
--- a/hyperdbg/symbol-parser/symbol-parser.vcxproj
+++ b/hyperdbg/symbol-parser/symbol-parser.vcxproj
@@ -87,7 +87,7 @@
$(SolutionDir)\include;$(SolutionDir)dependencies;$(ProjectDir);%(AdditionalIncludeDirectories)
true
stdcpp20
- Disabled
+ MaxSpeed
Console
From 373158da821eb0be877e8ecef3ff9d8ca998b907 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 27 Jul 2025 19:31:08 +0200
Subject: [PATCH 003/323] fix the building issues with the bp and the .start
commands
---
CHANGELOG.md | 5 ++---
hyperdbg/include/SDK/headers/Constants.h | 4 ++--
.../code/debugger/commands/debugging-commands/bp.cpp | 2 +-
.../code/debugger/commands/meta-commands/start.cpp | 3 ++-
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 60f2028d..b665ce81 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,14 +4,13 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## [0.15.0.0] - 2025-XX-XX
+## [0.14.1.0] - 2025-07-27
New release of the HyperDbg Debugger.
-### Added
-
### Changed
- Restored the previous optimization on the release builds
- Fixed the issue of not properly restoring registers after the 'CPUID' instruction
+- Fixed the of the user debugger with the 'bp' and the '.start' commands
## [0.14.0.0] - 2025-07-23
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h
index 065244ab..77907f39 100644
--- a/hyperdbg/include/SDK/headers/Constants.h
+++ b/hyperdbg/include/SDK/headers/Constants.h
@@ -17,8 +17,8 @@
//////////////////////////////////////////////////
#define VERSION_MAJOR 0
-#define VERSION_MINOR 15
-#define VERSION_PATCH 0
+#define VERSION_MINOR 14
+#define VERSION_PATCH 1
//
// Example of __DATE__ string: "Jul 27 2012"
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/bp.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/bp.cpp
index 949f1477..b25ad65b 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/bp.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/bp.cpp
@@ -195,7 +195,7 @@ CommandBp(vector CommandTokens, string Command)
//
#if ActivateUserModeDebugger == FALSE
- if (!g_IsSerialConnectedToRemoteDebugger)
+ if (!g_IsSerialConnectedToRemoteDebuggee)
{
ShowMessages("the user-mode debugger in VMI Mode is still in the beta version and not stable. "
"we decided to exclude it from this release and release it in future versions. "
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp
index 2446727c..fc4c9de7 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp
@@ -17,6 +17,7 @@
extern std::wstring g_StartCommandPath;
extern std::wstring g_StartCommandPathAndArguments;
extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
+extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
/**
* @brief help of the .start command
@@ -65,7 +66,7 @@ CommandStart(vector CommandTokens, string Command)
//
#if ActivateUserModeDebugger == FALSE
- if (!g_IsSerialConnectedToRemoteDebugger)
+ if (!g_IsSerialConnectedToRemoteDebuggee)
{
ShowMessages("the user-mode debugger in VMI Mode is still in the beta version and not stable. "
"we decided to exclude it from this release and release it in future versions. "
From 2e4269b5d34470c21fd5a229f6de2747e369d864 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 27 Jul 2025 20:08:10 +0200
Subject: [PATCH 004/323] change versioning and README.md
---
CHANGELOG.md | 11 ++++++++++-
README.md | 13 +++++++++++++
hyperdbg/include/SDK/headers/Constants.h | 4 ++--
3 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b665ce81..7d159c3b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,13 +4,22 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.15.0.0] - 2025-XX-XX
+New release of the HyperDbg Debugger.
+
+### Added
+-
+
+### Changed
+-
+
## [0.14.1.0] - 2025-07-27
New release of the HyperDbg Debugger.
### Changed
- Restored the previous optimization on the release builds
- Fixed the issue of not properly restoring registers after the 'CPUID' instruction
-- Fixed the of the user debugger with the 'bp' and the '.start' commands
+- Fixed the building issues of the user debugger with the 'bp' and the '.start' commands
## [0.14.0.0] - 2025-07-23
New release of the HyperDbg Debugger.
diff --git a/README.md b/README.md
index d7dcda15..03d3a2eb 100644
--- a/README.md
+++ b/README.md
@@ -73,6 +73,19 @@ In case you use one of **HyperDbg**'s components in your work, please consider c
year={2024}
}
```
+
+**3. [hwdbg: Debugging Hardware Like Software (EuroSec'25)](https://dl.acm.org/doi/abs/10.1145/3722041.3723101)** [[PDF](https://dl.acm.org/doi/pdf/10.1145/3722041.3723101)]
+
+```
+@inproceedings{karvandi2025hwdbg,
+ title={hwdbg: Debugging Hardware Like Software},
+ author={Karvandi, Mohammad Sina and Meghdadizanjani, Soroush and Monfared, Saleh Khalaj and van der Kouwe, Erik and Slowinska, Asia},
+ booktitle={Proceedings of the 18th European Workshop on Systems Security},
+ pages={56--62},
+ year={2025}
+}
+```
+
You can also read [this article](https://research.hyperdbg.org/debugger/kernel-debugger-design/) as it describes the overall architecture, technical difficulties, design decisions, and internals of HyperDbg Debugger, [this article](https://research.hyperdbg.org/vmm/transparency/) about our efforts on vm-exit transparency, [this article](https://research.hyperdbg.org/debugger/chasing-bugs/) about chasing bugs within hypervisors, and [this article](https://research.hyperdbg.org/debugger/gaining-insights/) about new reverse engineering techniques introduced in HyperDbg. More articles, posts, and resources are available at the **[awesome](https://github.com/HyperDbg/awesome)** repo, and in addition, the **[slides](https://github.com/HyperDbg/slides)** repo provides presentation slides for further reference.
diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h
index 77907f39..065244ab 100644
--- a/hyperdbg/include/SDK/headers/Constants.h
+++ b/hyperdbg/include/SDK/headers/Constants.h
@@ -17,8 +17,8 @@
//////////////////////////////////////////////////
#define VERSION_MAJOR 0
-#define VERSION_MINOR 14
-#define VERSION_PATCH 1
+#define VERSION_MINOR 15
+#define VERSION_PATCH 0
//
// Example of __DATE__ string: "Jul 27 2012"
From 39611961121cd563953c2b546c201f9f7c0db412 Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 2 Aug 2025 23:18:18 +0200
Subject: [PATCH 005/323] add support for SMI related functionalities
---
CHANGELOG.md | 3 +-
hyperdbg/hyperhv/code/interface/Export.c | 15 ++
hyperdbg/hyperhv/code/processor/Smm.c | 140 ++++++++++++++
hyperdbg/hyperhv/header/common/Msr.h | 12 ++
hyperdbg/hyperhv/header/processor/Smm.h | 30 +++
hyperdbg/hyperhv/hyperhv.vcxproj | 2 +
hyperdbg/hyperhv/hyperhv.vcxproj.filters | 6 +
hyperdbg/hyperhv/pch.h | 1 +
.../hyperkd/code/debugger/kernel-level/Kd.c | 20 ++
hyperdbg/hyperkd/code/driver/Ioctl.c | 44 +++++
hyperdbg/include/SDK/headers/Connection.h | 2 +
hyperdbg/include/SDK/headers/ErrorCodes.h | 12 ++
hyperdbg/include/SDK/headers/Ioctls.h | 7 +
.../include/SDK/headers/RequestStructures.h | 33 ++++
.../SDK/imports/kernel/HyperDbgVmmImports.h | 4 +
.../SDK/imports/user/HyperDbgLibImports.h | 7 +
.../commands/extension-commands/smi.cpp | 176 ++++++++++++++++++
.../code/debugger/core/debugger.cpp | 10 +
.../code/debugger/core/interpreter.cpp | 2 +
.../code/debugger/kernel-level/kd.cpp | 35 ++++
.../kernel-level/kernel-listening.cpp | 22 +++
hyperdbg/libhyperdbg/code/export/export.cpp | 13 ++
hyperdbg/libhyperdbg/header/commands.h | 6 +
hyperdbg/libhyperdbg/header/debugger.h | 4 +
hyperdbg/libhyperdbg/header/help.h | 3 +
hyperdbg/libhyperdbg/header/kd.h | 3 +
hyperdbg/libhyperdbg/libhyperdbg.vcxproj | 1 +
.../libhyperdbg/libhyperdbg.vcxproj.filters | 3 +
28 files changed, 615 insertions(+), 1 deletion(-)
create mode 100644 hyperdbg/hyperhv/code/processor/Smm.c
create mode 100644 hyperdbg/hyperhv/header/processor/Smm.h
create mode 100644 hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/smi.cpp
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7d159c3b..fe138c25 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,7 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
New release of the HyperDbg Debugger.
### Added
--
+- Added the '!smi' command for performing operations related to System Management Interrupt (SMI) ([link](https://docs.hyperdbg.org/commands/extension-commands/smi))
+- Export the SDK functions for SMI operations
### Changed
-
diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c
index 8332a473..11e9aa36 100644
--- a/hyperdbg/hyperhv/code/interface/Export.c
+++ b/hyperdbg/hyperhv/code/interface/Export.c
@@ -865,3 +865,18 @@ VmFuncIdtQueryEntries(PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS IdtQueryReques
{
IdtEmulationQueryIdtEntriesRequest(IdtQueryRequest, ReadFromVmxRoot);
}
+
+/**
+ * @brief Perform actions related to System Management Interrupts (SMIs)
+ *
+ * @param SmiOperationRequest
+ * @param ApplyFromVmxRootMode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+VmFuncSmmPerformSmiOperation(SMI_OPERATION_PACKETS * SmiOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
+{
+ return SmmPerformSmiOperation(SmiOperationRequest, ApplyFromVmxRootMode);
+}
diff --git a/hyperdbg/hyperhv/code/processor/Smm.c b/hyperdbg/hyperhv/code/processor/Smm.c
new file mode 100644
index 00000000..d5a49091
--- /dev/null
+++ b/hyperdbg/hyperhv/code/processor/Smm.c
@@ -0,0 +1,140 @@
+/**
+ * @file Smm.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Routines for operations related to System Management Mode (SMM)
+ * @details
+ *
+ * @version 0.15
+ * @date 2025-08-02
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+/*
+ * @brief Read the count of System Management Interrupts (SMIs)
+ *
+ * @return UINT64
+ */
+UINT64
+SmmReadSmiCount()
+{
+ UINT64 SmiCount = 0;
+
+ //
+ // Read the SMI count from MSR
+ //
+ SmiCount = (UINT64)__readmsr(MSR_SMI_COUNT);
+
+ return SmiCount;
+}
+
+/*
+ * @brief Trigger a Power SMI
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+SmmTriggerPowerSmi()
+{
+ UINT8 SmmResponse = 0;
+
+ //
+ // check the initial value recieve from 0xB3 port
+ //
+ SmmResponse = __inbyte(0xb2);
+
+ //
+ // write to 0xB2 port to cause SMI
+ //
+ __outbyte(0xb2, SMI_TRIGGER_POWER_VALUE);
+
+ //
+ // Check the respose in port 0xB3
+ //
+ SmmResponse = __inbyte(0xb2);
+
+ if (SmmResponse == SMI_TRIGGER_POWER_VALUE)
+ {
+ //
+ // If the response is SMI_TRIGGER_POWER_VALUE, it means the SMI was triggered successfully
+ //
+ return TRUE;
+ }
+ else
+ {
+ //
+ // If the response is not SMI_TRIGGER_POWER_VALUE, it means the SMI was not triggered successfully
+ //
+ return FALSE;
+ }
+}
+
+/**
+ * @brief Perform actions related to System Management Interrupts (SMIs)
+ *
+ * @param SmiOperationRequest
+ * @param ApplyFromVmxRootMode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+SmmPerformSmiOperation(SMI_OPERATION_PACKETS * SmiOperationRequest, BOOLEAN ApplyFromVmxRootMode)
+{
+ BOOLEAN Status = FALSE;
+
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
+ //
+ // Check the SMI operation type and perform the corresponding action
+ //
+ switch (SmiOperationRequest->SmiOperationType)
+ {
+ case SMI_OPERATION_REQUEST_TYPE_READ_COUNT:
+
+ //
+ // Read the SMI count from the MSR
+ //
+ SmiOperationRequest->SmiCount = SmmReadSmiCount();
+
+ Status = TRUE;
+ break;
+
+ case SMI_OPERATION_REQUEST_TYPE_TRIGGER_POWER_SMI:
+
+ if (SmmTriggerPowerSmi())
+ {
+ //
+ // If the SMI was triggered successfully
+ //
+ Status = TRUE;
+ }
+ else
+ {
+ //
+ // If the SMI was not triggered successfully, set error status
+ //
+ SmiOperationRequest->KernelStatus = DEBUGGER_ERROR_UNABLE_TO_TRIGGER_SMI;
+ }
+
+ break;
+
+ default:
+
+ Status = FALSE;
+ SmiOperationRequest->KernelStatus = DEBUGGER_ERROR_INVALID_SMI_OPERATION_PARAMETERS;
+
+ break;
+ }
+
+ //
+ // Set the status of the SMI operation request
+ //
+ if (Status)
+ {
+ SmiOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
+
+ return Status;
+}
diff --git a/hyperdbg/hyperhv/header/common/Msr.h b/hyperdbg/hyperhv/header/common/Msr.h
index 2665c691..eab90724 100644
--- a/hyperdbg/hyperhv/header/common/Msr.h
+++ b/hyperdbg/hyperhv/header/common/Msr.h
@@ -11,6 +11,18 @@
*/
#pragma once
+//////////////////////////////////////////////////
+// MSR Numbers //
+//////////////////////////////////////////////////
+
+/**
+ * @brief MSR for System Management Interrupt (SMI) count
+ *
+ * @details This MSR is used to read the count of System Management Interrupts (SMIs)
+ * that have occurred since the last reset
+ */
+#define MSR_SMI_COUNT 0x00000034
+
//////////////////////////////////////////////////
// Structures //
//////////////////////////////////////////////////
diff --git a/hyperdbg/hyperhv/header/processor/Smm.h b/hyperdbg/hyperhv/header/processor/Smm.h
new file mode 100644
index 00000000..05946608
--- /dev/null
+++ b/hyperdbg/hyperhv/header/processor/Smm.h
@@ -0,0 +1,30 @@
+/**
+ * @file Smm.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Headers relating to operations related to System Management Mode (SMM)
+ * @details
+ *
+ * @version 0.15
+ * @date 2025-08-02
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Constants //
+//////////////////////////////////////////////////
+
+/**
+ * @brief SMI trigger port value
+ *
+ */
+#define SMI_TRIGGER_POWER_VALUE 0x80
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+BOOLEAN
+SmmPerformSmiOperation(SMI_OPERATION_PACKETS * SmiOperationRequest, BOOLEAN ApplyFromVmxRootMode);
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj b/hyperdbg/hyperhv/hyperhv.vcxproj
index 3bed16d4..115bc667 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj
@@ -167,6 +167,7 @@
+
@@ -271,6 +272,7 @@
+
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj.filters b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
index da238598..6481ff8d 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj.filters
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
@@ -323,6 +323,9 @@
code\interface
+
+ code\processor
+
@@ -598,6 +601,9 @@
header\hooks
+
+ header\processor
+
diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h
index 4b05699f..c3fd0dc1 100644
--- a/hyperdbg/hyperhv/pch.h
+++ b/hyperdbg/hyperhv/pch.h
@@ -107,6 +107,7 @@
#include "vmm/vmx/Events.h"
#include "devices/Apic.h"
#include "devices/Pci.h"
+#include "processor/Smm.h"
#include "processor/Idt.h"
#include "vmm/vmx/Mtf.h"
#include "vmm/vmx/Counters.h"
diff --git a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
index 6927da1a..d9ad35b5 100644
--- a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
+++ b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
@@ -2295,6 +2295,7 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
PDEBUGGER_SEARCH_MEMORY SearchQueryPacket;
PDEBUGGEE_BP_PACKET BpPacket;
PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS PtePacket;
+ PSMI_OPERATION_PACKETS SmiOperationPacket;
PDEBUGGER_APIC_REQUEST ApicPacket;
PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS IdtEntryPacket;
PDEBUGGER_PAGE_IN_REQUEST PageinPacket;
@@ -2988,6 +2989,25 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
break;
+ case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_SMI_OPERATION:
+
+ SmiOperationPacket = (SMI_OPERATION_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
+
+ //
+ // Perform the SMI operations (it's in vmx-root)
+ //
+ VmFuncSmmPerformSmiOperation(SmiOperationPacket, TRUE);
+
+ //
+ // Send the result of the '!smi' back to the debuggee
+ //
+ KdResponsePacketToDebugger(DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGEE_TO_DEBUGGER,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_SMI_OPERATION_REQUESTS,
+ (CHAR *)SmiOperationPacket,
+ SIZEOF_SMI_OPERATION_PACKETS);
+
+ break;
+
case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_ACTIONS_ON_APIC:
ApicPacket = (DEBUGGER_APIC_REQUEST *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index 97e85d28..1a4de8c5 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -58,6 +58,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
PDEBUGGER_PREPARE_DEBUGGEE DebuggeeRequest;
PDEBUGGER_PAUSE_PACKET_RECEIVED DebuggerPauseKernelRequest;
PDEBUGGER_GENERAL_ACTION DebuggerNewActionRequest;
+ PSMI_OPERATION_PACKETS SmiOperationRequest;
PVOID BufferToStoreThreadsAndProcessesDetails;
NTSTATUS Status;
ULONG InBuffLength; // Input buffer length
@@ -1210,6 +1211,49 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
break;
+ case IOCTL_PERFORM_SMI_OPERATION:
+
+ //
+ // First validate the parameters.
+ //
+ if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_SMI_OPERATION_PACKETS ||
+ Irp->AssociatedIrp.SystemBuffer == NULL)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ LogError("Err, invalid parameter to IOCTL dispatcher");
+ break;
+ }
+
+ InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
+ OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
+
+ if (!InBuffLength || !OutBuffLength)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place
+ //
+ SmiOperationRequest = (PSMI_OPERATION_PACKETS)Irp->AssociatedIrp.SystemBuffer;
+
+ //
+ // Perform the SMI operation (it's not from vmx-root)
+ //
+ VmFuncSmmPerformSmiOperation(SmiOperationRequest, FALSE);
+
+ Irp->IoStatus.Information = SIZEOF_SMI_OPERATION_PACKETS;
+ Status = STATUS_SUCCESS;
+
+ //
+ // Avoid zeroing it
+ //
+ DoNotChangeInformation = TRUE;
+
+ break;
+
case IOCTL_SEND_USER_DEBUGGER_COMMANDS:
//
diff --git a/hyperdbg/include/SDK/headers/Connection.h b/hyperdbg/include/SDK/headers/Connection.h
index 920997de..912f3b8b 100644
--- a/hyperdbg/include/SDK/headers/Connection.h
+++ b/hyperdbg/include/SDK/headers/Connection.h
@@ -100,6 +100,7 @@ typedef enum _DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_ACTIONS_ON_APIC,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_QUERY_PCIDEVINFO,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_READ_IDT_ENTRIES,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_SMI_OPERATION,
//
// Debuggee to debugger
@@ -137,6 +138,7 @@ typedef enum _DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_APIC_REQUESTS,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_PCIDEVINFO,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_QUERY_IDT_ENTRIES_REQUESTS,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_SMI_OPERATION_REQUESTS,
//
// hardware debuggee to debugger
diff --git a/hyperdbg/include/SDK/headers/ErrorCodes.h b/hyperdbg/include/SDK/headers/ErrorCodes.h
index e6d4b09e..c3d82979 100644
--- a/hyperdbg/include/SDK/headers/ErrorCodes.h
+++ b/hyperdbg/include/SDK/headers/ErrorCodes.h
@@ -563,6 +563,18 @@
*/
#define DEBUGGER_ERROR_CANNOT_PUT_EPT_HOOKS_ON_PHYSICAL_ADDRESS_ABOVE_512_GB 0xc0000056
+/**
+ * @brief error, invalid parameters for SMI operation request
+ *
+ */
+#define DEBUGGER_ERROR_INVALID_SMI_OPERATION_PARAMETERS 0xc0000057
+
+/**
+ * @brief error, unable to trigger SMI
+ *
+ */
+#define DEBUGGER_ERROR_UNABLE_TO_TRIGGER_SMI 0xc0000058
+
//
// WHEN YOU ADD ANYTHING TO THIS LIST OF ERRORS, THEN
// MAKE SURE TO ADD AN ERROR MESSAGE TO ShowErrorMessage(UINT32 Error)
diff --git a/hyperdbg/include/SDK/headers/Ioctls.h b/hyperdbg/include/SDK/headers/Ioctls.h
index 37cb6139..ffe60a76 100644
--- a/hyperdbg/include/SDK/headers/Ioctls.h
+++ b/hyperdbg/include/SDK/headers/Ioctls.h
@@ -323,3 +323,10 @@
*/
#define IOCTL_SET_BREAKPOINT_USER_DEBUGGER \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x825, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+/**
+ * @brief ioctl, to perform SMI operations
+ *
+ */
+#define IOCTL_PERFORM_SMI_OPERATION \
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x826, METHOD_BUFFERED, FILE_ANY_ACCESS)
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 7fce50cb..2681ef08 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1224,6 +1224,39 @@ static_assert(sizeof(IO_APIC_ENTRY_PACKETS) < PacketChunkSize,
/* ==============================================================================================
*/
+/**
+ * @brief Perform actions related to SMIs
+ *
+ */
+typedef enum _SMI_OPERATION_REQUEST_TYPE
+{
+ SMI_OPERATION_REQUEST_TYPE_READ_COUNT,
+ SMI_OPERATION_REQUEST_TYPE_TRIGGER_POWER_SMI,
+
+} SMI_OPERATION_REQUEST_TYPE;
+
+/**
+ * @brief The structure of I/O APIC result packet in HyperDbg
+ *
+ */
+typedef struct _SMI_OPERATION_PACKETS
+{
+ SMI_OPERATION_REQUEST_TYPE SmiOperationType;
+ UINT64 SmiCount;
+ UINT32 KernelStatus;
+
+} SMI_OPERATION_PACKETS, *PSMI_OPERATION_PACKETS;
+
+/**
+ * @brief Debugger size of SMI_OPERATION_PACKETS
+ *
+ */
+#define SIZEOF_SMI_OPERATION_PACKETS \
+ sizeof(SMI_OPERATION_PACKETS)
+
+/* ==============================================================================================
+ */
+
/**
* @brief Maximum number of IDT entries
*
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
index 4479eeee..1ccce907 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
@@ -159,6 +159,10 @@ IMPORT_EXPORT_VMM VOID
VmFuncIdtQueryEntries(PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS IdtQueryRequest,
BOOLEAN ReadFromVmxRoot);
+IMPORT_EXPORT_VMM BOOLEAN
+VmFuncSmmPerformSmiOperation(SMI_OPERATION_PACKETS * SmiOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode);
+
IMPORT_EXPORT_VMM UINT16
VmFuncGetCsSelector();
diff --git a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
index 8ae491ac..4c0bd9be 100644
--- a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
+++ b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
@@ -249,6 +249,13 @@ hyperdbg_u_get_io_apic(IO_APIC_ENTRY_PACKETS * io_apic);
IMPORT_EXPORT_LIBHYPERDBG BOOLEAN
hyperdbg_u_get_idt_entry(INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS * idt_packet);
+//
+// SMM related command
+// Exported functionality of the '!smi' command
+//
+IMPORT_EXPORT_LIBHYPERDBG BOOLEAN
+hyperdbg_u_perform_smi_operation(SMI_OPERATION_PACKETS * SmiOperation);
+
//
// Transparent mode related command
// Exported functionality of the '!hide', and '!unhide' commands
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/smi.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/smi.cpp
new file mode 100644
index 00000000..2c1b5e97
--- /dev/null
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/smi.cpp
@@ -0,0 +1,176 @@
+/**
+ * @file smi.cpp
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief !smi command
+ * @details
+ * @version 0.15
+ * @date 2025-08-02
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+//
+// Global Variables
+//
+extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
+
+/**
+ * @brief help of the !smi command
+ *
+ * @return VOID
+ */
+VOID
+CommandSmiHelp()
+{
+ ShowMessages("!smi : shows details and triggers functionalities related to System Management Interrupt (SMI).\n\n");
+
+ ShowMessages("syntax : \t!smi [Function (string)]\n");
+
+ ShowMessages("\n");
+ ShowMessages("\t\te.g : !smi count\n");
+ ShowMessages("\t\te.g : !smi trigger\n");
+}
+
+/**
+ * @brief Send SMI requests
+ *
+ * @param SmiRequest
+ *
+ * @return VOID
+ */
+BOOLEAN
+CommandSmiSendRequest(SMI_OPERATION_PACKETS * SmiOperationRequest)
+{
+ BOOL Status;
+ ULONG ReturnedLength;
+
+ if (g_IsSerialConnectedToRemoteDebuggee)
+ {
+ //
+ // Send the request over serial kernel debugger
+ //
+ if (!KdSendSmiPacketsToDebuggee(SmiOperationRequest, SIZEOF_SMI_OPERATION_PACKETS))
+ {
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+ else
+ {
+ AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnFalse);
+
+ //
+ // Send IOCTL
+ //
+ Status = DeviceIoControl(
+ g_DeviceHandle, // Handle to device
+ IOCTL_PERFORM_SMI_OPERATION, // IO Control Code (IOCTL)
+ SmiOperationRequest, // Input Buffer to driver.
+ SIZEOF_SMI_OPERATION_PACKETS, // Input buffer length
+ SmiOperationRequest, // Output Buffer from driver.
+ SIZEOF_SMI_OPERATION_PACKETS, // Length of output buffer in bytes.
+ &ReturnedLength, // Bytes placed in buffer.
+ NULL // synchronous call
+ );
+
+ if (!Status)
+ {
+ ShowMessages("ioctl failed with code 0x%x\n", GetLastError());
+
+ return FALSE;
+ }
+
+ if (SmiOperationRequest->KernelStatus == DEBUGGER_OPERATION_WAS_SUCCESSFUL)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+}
+
+/**
+ * @brief Request to perform an SMI operation
+ *
+ * @param SmiOperation
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperDbgPerformSmiOperation(SMI_OPERATION_PACKETS * SmiOperation)
+{
+ return CommandSmiSendRequest(SmiOperation);
+}
+
+/**
+ * @brief !smi command handler
+ *
+ * @param CommandTokens
+ * @param Command
+ *
+ * @return VOID
+ */
+VOID
+CommandSmi(vector CommandTokens, string Command)
+{
+ SMI_OPERATION_PACKETS SmiOperationRequest = {0};
+
+ if (CommandTokens.size() != 2)
+ {
+ ShowMessages("incorrect use of the '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
+
+ CommandSmiHelp();
+ return;
+ }
+
+ if (CompareLowerCaseStrings(CommandTokens.at(1), "count"))
+ {
+ SmiOperationRequest.SmiOperationType = SMI_OPERATION_REQUEST_TYPE_READ_COUNT;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "trigger"))
+ {
+ SmiOperationRequest.SmiOperationType = SMI_OPERATION_REQUEST_TYPE_TRIGGER_POWER_SMI;
+ }
+ else
+ {
+ ShowMessages("incorrect use of the '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
+ CommandSmiHelp();
+ return;
+ }
+
+ //
+ // Send the SMI operation request
+ //
+ if (CommandSmiSendRequest(&SmiOperationRequest))
+ {
+ if (SmiOperationRequest.SmiOperationType == SMI_OPERATION_REQUEST_TYPE_READ_COUNT)
+ {
+ if (SmiOperationRequest.SmiCount == 0)
+ {
+ ShowMessages("SMI count: 0 (for security reasons, nested-virtualization environment (VMs) are unable to communicate with UEFI firmware)\n");
+ }
+ else
+ {
+ ShowMessages("SMI count: 0x%x\n", SmiOperationRequest.SmiCount);
+ }
+ }
+ else if (SmiOperationRequest.SmiOperationType == SMI_OPERATION_REQUEST_TYPE_TRIGGER_POWER_SMI)
+ {
+ ShowMessages("power SMI triggered successfully (you can use '!smi count' to view the number of executed SMIs)\n");
+ }
+ }
+ else
+ {
+ ShowErrorMessage(SmiOperationRequest.KernelStatus);
+ return;
+ }
+}
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index 6a26e969..5f2272aa 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -553,6 +553,16 @@ ShowErrorMessage(UINT32 Error)
Error);
break;
+ case DEBUGGER_ERROR_INVALID_SMI_OPERATION_PARAMETERS:
+ ShowMessages("err, invalid SMI operation parameter(s) are specified (%x)\n",
+ Error);
+ break;
+
+ case DEBUGGER_ERROR_UNABLE_TO_TRIGGER_SMI:
+ ShowMessages("err, unable to trigger SMI, are you running on a nested-virtualization environment? (%x)\n",
+ Error);
+ break;
+
default:
ShowMessages("err, error not found (%x)\n",
Error);
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
index 7c37d0fb..38bdfa89 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
@@ -1626,6 +1626,8 @@ InitializeCommandsDictionary()
g_CommandsList["!idt"] = {&CommandIdt, &CommandIdtHelp, DEBUGGER_COMMAND_IDT_ATTRIBUTES};
+ g_CommandsList["!smi"] = {&CommandSmi, &CommandSmiHelp, DEBUGGER_COMMAND_SMI_ATTRIBUTES};
+
//
// hwdbg commands
//
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
index 74284c46..e5fb1880 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
@@ -1020,6 +1020,41 @@ KdSendApicActionPacketsToDebuggee(PDEBUGGER_APIC_REQUEST ApicRequest, UINT32 Exp
return TRUE;
}
+/**
+ * @brief Send requests for SMI operation packet to the debuggee
+ *
+ * @param SmiOperationRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+KdSendSmiPacketsToDebuggee(PSMI_OPERATION_PACKETS SmiOperationRequest, UINT32 ExpectedRequestSize)
+{
+ //
+ // Set the request data
+ //
+ DbgWaitSetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_SMI_OPERATION_RESULT, SmiOperationRequest, ExpectedRequestSize);
+
+ //
+ // Send the SMI request packets
+ //
+ if (!KdCommandPacketAndBufferToDebuggee(
+ DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGER_TO_DEBUGGEE_EXECUTE_ON_VMX_ROOT,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_SMI_OPERATION,
+ (CHAR *)SmiOperationRequest,
+ SIZEOF_SMI_OPERATION_PACKETS))
+ {
+ return FALSE;
+ }
+
+ //
+ // Wait until the result of actions to SMI is received
+ //
+ DbgWaitForKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_SMI_OPERATION_RESULT);
+
+ return TRUE;
+}
+
/**
* @brief Send requests for IDT packet to the debuggee
* @param IdtRequest
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
index 9181344e..412c6baa 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
@@ -69,6 +69,7 @@ ListeningSerialPortInDebugger()
PDEBUGGEE_BP_PACKET BpPacket;
PDEBUGGER_SHORT_CIRCUITING_EVENT ShortCircuitingPacket;
PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS PtePacket;
+ PSMI_OPERATION_PACKETS SmiOperationPacket;
PDEBUGGER_PAGE_IN_REQUEST PageinPacket;
PDEBUGGER_VA2PA_AND_PA2VA_COMMANDS Va2paPa2vaPacket;
PDEBUGGEE_BP_LIST_OR_MODIFY_PACKET ListOrModifyBreakpointPacket;
@@ -984,6 +985,27 @@ StartAgain:
break;
+ case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_SMI_OPERATION_REQUESTS:
+
+ SmiOperationPacket = (SMI_OPERATION_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
+
+ //
+ // Get the address and size of the caller
+ //
+ DbgWaitGetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_SMI_OPERATION_RESULT, &CallerAddress, &CallerSize);
+
+ //
+ // Copy the memory buffer for the caller
+ //
+ memcpy(CallerAddress, SmiOperationPacket, CallerSize);
+
+ //
+ // Signal the event relating to receiving result of SMI operation
+ //
+ DbgReceivedKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_SMI_OPERATION_RESULT);
+
+ break;
+
case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_BRINGING_PAGES_IN:
PageinPacket = (DEBUGGER_PAGE_IN_REQUEST *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
diff --git a/hyperdbg/libhyperdbg/code/export/export.cpp b/hyperdbg/libhyperdbg/code/export/export.cpp
index 0786054f..dc29a1a4 100644
--- a/hyperdbg/libhyperdbg/code/export/export.cpp
+++ b/hyperdbg/libhyperdbg/code/export/export.cpp
@@ -726,6 +726,19 @@ hyperdbg_u_get_idt_entry(INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS * idt_packet
return HyperDbgGetIdtEntry(idt_packet);
}
+/**
+ * @brief Perform SMI operation
+ *
+ * @param SmiOperation The SMI operation packet
+ *
+ * @return
+ */
+BOOLEAN
+hyperdbg_u_perform_smi_operation(SMI_OPERATION_PACKETS * SmiOperation)
+{
+ return HyperDbgPerformSmiOperation(SmiOperation);
+}
+
/**
* @brief Run hwdbg script
*
diff --git a/hyperdbg/libhyperdbg/header/commands.h b/hyperdbg/libhyperdbg/header/commands.h
index 23bbb3f3..c5abdbba 100644
--- a/hyperdbg/libhyperdbg/header/commands.h
+++ b/hyperdbg/libhyperdbg/header/commands.h
@@ -472,6 +472,9 @@ typedef std::map CommandType;
#define DEBUGGER_COMMAND_IDT_ATTRIBUTES \
DEBUGGER_COMMAND_ATTRIBUTE_LOCAL_COMMAND_IN_DEBUGGER_MODE
+#define DEBUGGER_COMMAND_SMI_ATTRIBUTES \
+ DEBUGGER_COMMAND_ATTRIBUTE_LOCAL_COMMAND_IN_DEBUGGER_MODE
+
//////////////////////////////////////////////////
// Command Functions //
//////////////////////////////////////////////////
@@ -755,6 +758,9 @@ CommandPcicam(vector CommandTokens, string Command);
VOID
CommandIdt(vector CommandTokens, string Command);
+VOID
+CommandSmi(vector CommandTokens, string Command);
+
//
// hwdbg commands
//
diff --git a/hyperdbg/libhyperdbg/header/debugger.h b/hyperdbg/libhyperdbg/header/debugger.h
index e2e419ec..17c69a00 100644
--- a/hyperdbg/libhyperdbg/header/debugger.h
+++ b/hyperdbg/libhyperdbg/header/debugger.h
@@ -60,6 +60,7 @@
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_APIC_ACTIONS 0x1c
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_PCIDEVINFO_RESULT 0x1d
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_IDT_ENTRIES 0x1e
+#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_SMI_OPERATION_RESULT 0x1f
//////////////////////////////////////////////////
// Event Details //
@@ -301,6 +302,9 @@ HyperDbgGetIoApic(IO_APIC_ENTRY_PACKETS * IoApic);
BOOLEAN
HyperDbgGetIdtEntry(INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS * IdtPacket);
+BOOLEAN
+HyperDbgPerformSmiOperation(SMI_OPERATION_PACKETS * SmiOperation);
+
BOOLEAN
HyperDbgEnableTransparentMode(UINT32 ProcessId, CHAR * ProcessName, BOOLEAN IsProcessId);
diff --git a/hyperdbg/libhyperdbg/header/help.h b/hyperdbg/libhyperdbg/header/help.h
index ae1bb603..f28c0d30 100644
--- a/hyperdbg/libhyperdbg/header/help.h
+++ b/hyperdbg/libhyperdbg/header/help.h
@@ -306,6 +306,9 @@ CommandPcicamHelp();
VOID
CommandIdtHelp();
+VOID
+CommandSmiHelp();
+
//
// hwdbg commands
//
diff --git a/hyperdbg/libhyperdbg/header/kd.h b/hyperdbg/libhyperdbg/header/kd.h
index edfcaa4b..fc60129e 100644
--- a/hyperdbg/libhyperdbg/header/kd.h
+++ b/hyperdbg/libhyperdbg/header/kd.h
@@ -201,6 +201,9 @@ KdSendVa2paAndPa2vaPacketToDebuggee(PDEBUGGER_VA2PA_AND_PA2VA_COMMANDS Va2paAndP
BOOLEAN
KdSendApicActionPacketsToDebuggee(PDEBUGGER_APIC_REQUEST ApicRequest, UINT32 ExpectedRequestSize);
+BOOLEAN
+KdSendSmiPacketsToDebuggee(PSMI_OPERATION_PACKETS SmiOperationRequest, UINT32 ExpectedRequestSize);
+
BOOLEAN
KdSendQueryIdtPacketsToDebuggee(PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS IdtRequest);
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
index ccc5ca5b..6e8fb39c 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
@@ -180,6 +180,7 @@
+
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
index 06b9ee0a..1da54152 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
@@ -592,6 +592,9 @@
code\debugger\commands\debugging-commands
+
+ code\debugger\commands\extension-commands
+
From 11f8c2ebed53fe7cfc01147ba2fe77a3e5276554 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 3 Aug 2025 00:13:37 +0200
Subject: [PATCH 006/323] update changelog and change the help message of SMI
command
---
CHANGELOG.md | 2 +-
.../code/debugger/commands/extension-commands/smi.cpp | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fe138c25..960a5914 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,7 +9,7 @@ New release of the HyperDbg Debugger.
### Added
- Added the '!smi' command for performing operations related to System Management Interrupt (SMI) ([link](https://docs.hyperdbg.org/commands/extension-commands/smi))
-- Export the SDK functions for SMI operations
+- Export the SDK functions for SMI operations ([link](https://docs.hyperdbg.org/commands/extension-commands/smi#sdk))
### Changed
-
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/smi.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/smi.cpp
index 2c1b5e97..0c86d843 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/smi.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/smi.cpp
@@ -24,7 +24,8 @@ extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
VOID
CommandSmiHelp()
{
- ShowMessages("!smi : shows details and triggers functionalities related to System Management Interrupt (SMI).\n\n");
+ ShowMessages("!smi : shows details and triggers functionalities related to System Management Interrupt (SMI).\n");
+ ShowMessages("Note : SMIs are triggered using APM I/O Decode Registers and SMI count are from MSR_SMI_COUNT MSR (0x34).\n\n");
ShowMessages("syntax : \t!smi [Function (string)]\n");
From 853e5c95116489bc44842d7dcc517bc22c054213 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 3 Aug 2025 00:41:28 +0200
Subject: [PATCH 007/323] save and restore XMM registers and enable hyperevade
optimization
---
CHANGELOG.md | 2 +-
.../code/assembly/AsmVmexitHandler.asm | 130 +++++++++---------
hyperdbg/hyperhv/hyperhv.vcxproj | 2 +-
3 files changed, 69 insertions(+), 65 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 960a5914..066c642b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,7 +12,7 @@ New release of the HyperDbg Debugger.
- Export the SDK functions for SMI operations ([link](https://docs.hyperdbg.org/commands/extension-commands/smi#sdk))
### Changed
--
+- The 'hyperhv' project now has build optimizations enabled
## [0.14.1.0] - 2025-07-27
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm b/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
index 0a41fbd1..6008d0a3 100644
--- a/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
+++ b/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
@@ -18,28 +18,30 @@ AsmVmexitHandler PROC
pushfq
; ------------ Save XMM Registers ------------
- ;
+
; ;;;;;;;;;;;; 16 Byte * 16 Byte = 256 + 4 = 260 (0x106 == 0x110 but let's align it to have better performance) ;;;;;;;;;;;;
- ; sub rsp, 0110h
- ;
- ; movaps xmmword ptr [rsp+000h], xmm0 ; each xmm register 128 bit (16 Byte)
- ; movaps xmmword ptr [rsp+010h], xmm1
- ; movaps xmmword ptr [rsp+020h], xmm2
- ; movaps xmmword ptr [rsp+030h], xmm3
- ; movaps xmmword ptr [rsp+040h], xmm4
- ; movaps xmmword ptr [rsp+050h], xmm5
- ; movaps xmmword ptr [rsp+060h], xmm6
- ; movaps xmmword ptr [rsp+070h], xmm7
- ; movaps xmmword ptr [rsp+080h], xmm8
- ; movaps xmmword ptr [rsp+090h], xmm9
- ; movaps xmmword ptr [rsp+0a0h], xmm10
- ; movaps xmmword ptr [rsp+0b0h], xmm11
- ; movaps xmmword ptr [rsp+0c0h], xmm12
- ; movaps xmmword ptr [rsp+0d0h], xmm13
- ; movaps xmmword ptr [rsp+0e0h], xmm14
- ; movaps xmmword ptr [rsp+0f0h], xmm15
- ; stmxcsr dword ptr [rsp+0100h] ; MxCsr is 4 Byte
- ;
+
+ sub rsp, 0110h
+
+ movaps xmmword ptr [rsp+000h], xmm0 ; each xmm register 128 bit (16 Byte)
+ movaps xmmword ptr [rsp+010h], xmm1
+ movaps xmmword ptr [rsp+020h], xmm2
+ movaps xmmword ptr [rsp+030h], xmm3
+ movaps xmmword ptr [rsp+040h], xmm4
+ movaps xmmword ptr [rsp+050h], xmm5
+ movaps xmmword ptr [rsp+060h], xmm6
+ movaps xmmword ptr [rsp+070h], xmm7
+ movaps xmmword ptr [rsp+080h], xmm8
+ movaps xmmword ptr [rsp+090h], xmm9
+ movaps xmmword ptr [rsp+0a0h], xmm10
+ movaps xmmword ptr [rsp+0b0h], xmm11
+ movaps xmmword ptr [rsp+0c0h], xmm12
+ movaps xmmword ptr [rsp+0d0h], xmm13
+ movaps xmmword ptr [rsp+0e0h], xmm14
+ movaps xmmword ptr [rsp+0f0h], xmm15
+
+ stmxcsr dword ptr [rsp+0100h] ; MxCsr is 4 Byte
+
;---------------------------------------------
push r15
@@ -86,27 +88,28 @@ RestoreState:
pop r15
; ------------ Restore XMM Registers ------------
- ;
- ; movaps xmm0, xmmword ptr [rsp+000h]
- ; movaps xmm1, xmmword ptr [rsp+010h]
- ; movaps xmm2, xmmword ptr [rsp+020h]
- ; movaps xmm3, xmmword ptr [rsp+030h]
- ; movaps xmm4, xmmword ptr [rsp+040h]
- ; movaps xmm5, xmmword ptr [rsp+050h]
- ; movaps xmm6, xmmword ptr [rsp+060h]
- ; movaps xmm7, xmmword ptr [rsp+070h]
- ; movaps xmm8, xmmword ptr [rsp+080h]
- ; movaps xmm9, xmmword ptr [rsp+090h]
- ; movaps xmm10, xmmword ptr [rsp+0a0h]
- ; movaps xmm11, xmmword ptr [rsp+0b0h]
- ; movaps xmm12, xmmword ptr [rsp+0c0h]
- ; movaps xmm13, xmmword ptr [rsp+0d0h]
- ; movaps xmm14, xmmword ptr [rsp+0e0h]
- ; movaps xmm15, xmmword ptr [rsp+0f0h]
- ;
- ; ldmxcsr dword ptr [rsp+0100h]
- ;
- ; add rsp, 0110h
+
+ movaps xmm0, xmmword ptr [rsp+000h]
+ movaps xmm1, xmmword ptr [rsp+010h]
+ movaps xmm2, xmmword ptr [rsp+020h]
+ movaps xmm3, xmmword ptr [rsp+030h]
+ movaps xmm4, xmmword ptr [rsp+040h]
+ movaps xmm5, xmmword ptr [rsp+050h]
+ movaps xmm6, xmmword ptr [rsp+060h]
+ movaps xmm7, xmmword ptr [rsp+070h]
+ movaps xmm8, xmmword ptr [rsp+080h]
+ movaps xmm9, xmmword ptr [rsp+090h]
+ movaps xmm10, xmmword ptr [rsp+0a0h]
+ movaps xmm11, xmmword ptr [rsp+0b0h]
+ movaps xmm12, xmmword ptr [rsp+0c0h]
+ movaps xmm13, xmmword ptr [rsp+0d0h]
+ movaps xmm14, xmmword ptr [rsp+0e0h]
+ movaps xmm15, xmmword ptr [rsp+0f0h]
+
+ ldmxcsr dword ptr [rsp+0100h]
+
+ add rsp, 0110h
+
; ----------------------------------------------
popfq
@@ -164,27 +167,28 @@ RestoreState:
pop r15
; ------------ Restore XMM Registers ------------
- ;
- ; movaps xmm0, xmmword ptr [rsp+000h]
- ; movaps xmm1, xmmword ptr [rsp+010h]
- ; movaps xmm2, xmmword ptr [rsp+020h]
- ; movaps xmm3, xmmword ptr [rsp+030h]
- ; movaps xmm4, xmmword ptr [rsp+040h]
- ; movaps xmm5, xmmword ptr [rsp+050h]
- ; movaps xmm6, xmmword ptr [rsp+060h]
- ; movaps xmm7, xmmword ptr [rsp+070h]
- ; movaps xmm8, xmmword ptr [rsp+080h]
- ; movaps xmm9, xmmword ptr [rsp+090h]
- ; movaps xmm10, xmmword ptr [rsp+0a0h]
- ; movaps xmm11, xmmword ptr [rsp+0b0h]
- ; movaps xmm12, xmmword ptr [rsp+0c0h]
- ; movaps xmm13, xmmword ptr [rsp+0d0h]
- ; movaps xmm14, xmmword ptr [rsp+0e0h]
- ; movaps xmm15, xmmword ptr [rsp+0f0h]
- ;
- ; ldmxcsr dword ptr [rsp+0100h]
- ;
- ; add rsp, 0110h
+
+ movaps xmm0, xmmword ptr [rsp+000h]
+ movaps xmm1, xmmword ptr [rsp+010h]
+ movaps xmm2, xmmword ptr [rsp+020h]
+ movaps xmm3, xmmword ptr [rsp+030h]
+ movaps xmm4, xmmword ptr [rsp+040h]
+ movaps xmm5, xmmword ptr [rsp+050h]
+ movaps xmm6, xmmword ptr [rsp+060h]
+ movaps xmm7, xmmword ptr [rsp+070h]
+ movaps xmm8, xmmword ptr [rsp+080h]
+ movaps xmm9, xmmword ptr [rsp+090h]
+ movaps xmm10, xmmword ptr [rsp+0a0h]
+ movaps xmm11, xmmword ptr [rsp+0b0h]
+ movaps xmm12, xmmword ptr [rsp+0c0h]
+ movaps xmm13, xmmword ptr [rsp+0d0h]
+ movaps xmm14, xmmword ptr [rsp+0e0h]
+ movaps xmm15, xmmword ptr [rsp+0f0h]
+
+ ldmxcsr dword ptr [rsp+0100h]
+
+ add rsp, 0110h
+
; ----------------------------------------------
popfq
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj b/hyperdbg/hyperhv/hyperhv.vcxproj
index 115bc667..4adf66c0 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj
@@ -111,7 +111,7 @@
pch.h
$(IntDir)$(TargetName).pch
Neither
- Disabled
+ Full
ZYDIS_STATIC_BUILD;ZYCORE_STATIC_BUILD;ZYAN_NO_LIBC;ZYDIS_NO_LIBC;%(PreprocessorDefinitions)
stdcpp20
From 3f877c36f545db594527789826a76860b064c417 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 3 Aug 2025 01:18:58 +0200
Subject: [PATCH 008/323] create XMM register structures for VM-entries
---
.../code/assembly/AsmVmexitHandler.asm | 3 -
hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c | 5 +-
hyperdbg/hyperhv/header/common/State.h | 93 ++++++++++---------
hyperdbg/include/SDK/headers/BasicTypes.h | 33 +++++++
4 files changed, 83 insertions(+), 51 deletions(-)
diff --git a/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm b/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
index 6008d0a3..dad51b60 100644
--- a/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
+++ b/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
@@ -114,7 +114,6 @@ RestoreState:
popfq
- sub rsp, 0100h ; to avoid error in future functions
jmp VmxVmresume
AsmVmexitHandler ENDP
@@ -186,8 +185,6 @@ RestoreState:
movaps xmm15, xmmword ptr [rsp+0f0h]
ldmxcsr dword ptr [rsp+0100h]
-
- add rsp, 0110h
; ----------------------------------------------
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
index f7a99fc8..c6870c07 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
@@ -31,9 +31,10 @@ VmxVmexitHandler(_Inout_ PGUEST_REGS GuestRegs)
VCpu = &g_GuestState[KeGetCurrentProcessorNumberEx(NULL)];
//
- // Set the registers
+ // Set the registers (general-purpose and XMM)
//
- VCpu->Regs = GuestRegs;
+ VCpu->Regs = GuestRegs;
+ VCpu->XmmRegs = (GUEST_XMM_REGS *)(((CHAR *)GuestRegs) + sizeof(GUEST_REGS));
//
// Indicates we are in Vmx root mode in this logical core
diff --git a/hyperdbg/hyperhv/header/common/State.h b/hyperdbg/hyperhv/header/common/State.h
index c6a587e2..be58354d 100644
--- a/hyperdbg/hyperhv/header/common/State.h
+++ b/hyperdbg/hyperhv/header/common/State.h
@@ -302,52 +302,53 @@ typedef struct _NMI_BROADCASTING_STATE
*/
typedef struct _VIRTUAL_MACHINE_STATE
{
- BOOLEAN IsOnVmxRootMode; // Detects whether the current logical core is on Executing on VMX Root Mode
- BOOLEAN IncrementRip; // Checks whether it has to redo the previous instruction or not (it used mainly in Ept routines)
- BOOLEAN HasLaunched; // Indicate whether the core is virtualized or not
- BOOLEAN IgnoreMtfUnset; // Indicate whether the core should ignore unsetting the MTF or not
- BOOLEAN WaitForImmediateVmexit; // Whether the current core is waiting for an immediate vm-exit or not
- BOOLEAN EnableExternalInterruptsOnContinue; // Whether to enable external interrupts on the continue or not
- BOOLEAN EnableExternalInterruptsOnContinueMtf; // Whether to enable external interrupts on the continue state of MTF or not
- BOOLEAN RegisterBreakOnMtf; // Registered Break in the case of MTFs (used in instrumentation step-in)
- BOOLEAN IgnoreOneMtf; // Ignore (mark as handled) for one MTF
- BOOLEAN NotNormalEptp; // Indicate that the target processor is on the normal EPTP or not
- BOOLEAN MbecEnabled; // Indicate that the target processor is on MBEC-enabled mode or not
- PUINT64 PmlBufferAddress; // Address of buffer used for dirty logging
- BOOLEAN Test; // Used for test purposes
- UINT64 TestNumber; // Used for test purposes (Number)
- GUEST_REGS * Regs; // The virtual processor's general-purpose registers
- UINT32 CoreId; // The core's unique identifier
- UINT32 ExitReason; // The core's exit reason
- UINT32 ExitQualification; // The core's exit qualification
- UINT64 LastVmexitRip; // RIP in the current VM-exit
- UINT64 VmxonRegionPhysicalAddress; // Vmxon region physical address
- UINT64 VmxonRegionVirtualAddress; // VMXON region virtual address
- UINT64 VmcsRegionPhysicalAddress; // VMCS region physical address
- UINT64 VmcsRegionVirtualAddress; // VMCS region virtual address
- UINT64 VmmStack; // Stack for VMM in VM-Exit State
- UINT64 MsrBitmapVirtualAddress; // Msr Bitmap Virtual Address
- UINT64 MsrBitmapPhysicalAddress; // Msr Bitmap Physical Address
- UINT64 IoBitmapVirtualAddressA; // I/O Bitmap Virtual Address (A)
- UINT64 IoBitmapPhysicalAddressA; // I/O Bitmap Physical Address (A)
- UINT64 IoBitmapVirtualAddressB; // I/O Bitmap Virtual Address (B)
- UINT64 IoBitmapPhysicalAddressB; // I/O Bitmap Physical Address (B)
- UINT32 QueuedNmi; // Queued NMIs
- UINT32 PendingExternalInterrupts[PENDING_INTERRUPTS_BUFFER_CAPACITY]; // This list holds a buffer for external-interrupts that are in pending state due to the external-interrupt
- // blocking and waits for interrupt-window exiting
- // From hvpp :
- // Pending interrupt queue (FIFO).
- // Make storage for up-to 64 pending interrupts.
- // In practice I haven't seen more than 2 pending interrupts.
- VMX_VMXOFF_STATE VmxoffState; // Shows the vmxoff state of the guest
- NMI_BROADCASTING_STATE NmiBroadcastingState; // Shows the state of NMI broadcasting
- VM_EXIT_TRANSPARENCY TransparencyState; // The state of the debugger in transparent-mode
- PEPT_HOOKED_PAGE_DETAIL MtfEptHookRestorePoint; // It shows the detail of the hooked paged that should be restore in MTF vm-exit
- UINT8 LastExceptionOccuredInHost; // The vector of last exception occured in host
- UINT64 HostIdt; // host Interrupt Descriptor Table (actual type is SEGMENT_DESCRIPTOR_INTERRUPT_GATE_64*)
- UINT64 HostGdt; // host Global Descriptor Table (actual type is SEGMENT_DESCRIPTOR_32* or SEGMENT_DESCRIPTOR_64*)
- UINT64 HostTss; // host Task State Segment (actual type is TASK_STATE_SEGMENT_64*)
- UINT64 HostInterruptStack; // host interrupt RSP
+ BOOLEAN IsOnVmxRootMode; // Detects whether the current logical core is on Executing on VMX Root Mode
+ BOOLEAN IncrementRip; // Checks whether it has to redo the previous instruction or not (it used mainly in Ept routines)
+ BOOLEAN HasLaunched; // Indicate whether the core is virtualized or not
+ BOOLEAN IgnoreMtfUnset; // Indicate whether the core should ignore unsetting the MTF or not
+ BOOLEAN WaitForImmediateVmexit; // Whether the current core is waiting for an immediate vm-exit or not
+ BOOLEAN EnableExternalInterruptsOnContinue; // Whether to enable external interrupts on the continue or not
+ BOOLEAN EnableExternalInterruptsOnContinueMtf; // Whether to enable external interrupts on the continue state of MTF or not
+ BOOLEAN RegisterBreakOnMtf; // Registered Break in the case of MTFs (used in instrumentation step-in)
+ BOOLEAN IgnoreOneMtf; // Ignore (mark as handled) for one MTF
+ BOOLEAN NotNormalEptp; // Indicate that the target processor is on the normal EPTP or not
+ BOOLEAN MbecEnabled; // Indicate that the target processor is on MBEC-enabled mode or not
+ PUINT64 PmlBufferAddress; // Address of buffer used for dirty logging
+ BOOLEAN Test; // Used for test purposes
+ UINT64 TestNumber; // Used for test purposes (Number)
+ GUEST_REGS * Regs; // The virtual processor's general-purpose registers
+ GUEST_XMM_REGS * XmmRegs; // The virtual processor's XMM registers
+ UINT32 CoreId; // The core's unique identifier
+ UINT32 ExitReason; // The core's exit reason
+ UINT32 ExitQualification; // The core's exit qualification
+ UINT64 LastVmexitRip; // RIP in the current VM-exit
+ UINT64 VmxonRegionPhysicalAddress; // Vmxon region physical address
+ UINT64 VmxonRegionVirtualAddress; // VMXON region virtual address
+ UINT64 VmcsRegionPhysicalAddress; // VMCS region physical address
+ UINT64 VmcsRegionVirtualAddress; // VMCS region virtual address
+ UINT64 VmmStack; // Stack for VMM in VM-Exit State
+ UINT64 MsrBitmapVirtualAddress; // Msr Bitmap Virtual Address
+ UINT64 MsrBitmapPhysicalAddress; // Msr Bitmap Physical Address
+ UINT64 IoBitmapVirtualAddressA; // I/O Bitmap Virtual Address (A)
+ UINT64 IoBitmapPhysicalAddressA; // I/O Bitmap Physical Address (A)
+ UINT64 IoBitmapVirtualAddressB; // I/O Bitmap Virtual Address (B)
+ UINT64 IoBitmapPhysicalAddressB; // I/O Bitmap Physical Address (B)
+ UINT32 QueuedNmi; // Queued NMIs
+ UINT32 PendingExternalInterrupts[PENDING_INTERRUPTS_BUFFER_CAPACITY]; // This list holds a buffer for external-interrupts that are in pending state due to the external-interrupt
+ // blocking and waits for interrupt-window exiting
+ // From hvpp :
+ // Pending interrupt queue (FIFO).
+ // Make storage for up-to 64 pending interrupts.
+ // In practice I haven't seen more than 2 pending interrupts.
+ VMX_VMXOFF_STATE VmxoffState; // Shows the vmxoff state of the guest
+ NMI_BROADCASTING_STATE NmiBroadcastingState; // Shows the state of NMI broadcasting
+ VM_EXIT_TRANSPARENCY TransparencyState; // The state of the debugger in transparent-mode
+ PEPT_HOOKED_PAGE_DETAIL MtfEptHookRestorePoint; // It shows the detail of the hooked paged that should be restore in MTF vm-exit
+ UINT8 LastExceptionOccuredInHost; // The vector of last exception occured in host
+ UINT64 HostIdt; // host Interrupt Descriptor Table (actual type is SEGMENT_DESCRIPTOR_INTERRUPT_GATE_64*)
+ UINT64 HostGdt; // host Global Descriptor Table (actual type is SEGMENT_DESCRIPTOR_32* or SEGMENT_DESCRIPTOR_64*)
+ UINT64 HostTss; // host Task State Segment (actual type is TASK_STATE_SEGMENT_64*)
+ UINT64 HostInterruptStack; // host interrupt RSP
//
// EPT Descriptors
diff --git a/hyperdbg/include/SDK/headers/BasicTypes.h b/hyperdbg/include/SDK/headers/BasicTypes.h
index 0df9d348..24da1a35 100644
--- a/hyperdbg/include/SDK/headers/BasicTypes.h
+++ b/hyperdbg/include/SDK/headers/BasicTypes.h
@@ -66,6 +66,7 @@ typedef unsigned __int64 UINT64, *PUINT64;
//
// DO NOT FUCKING TOUCH THIS STRUCTURE WITHOUT COORDINATION WITH SINA
//
+#pragma pack(push, 1) // Ensure no padding
typedef struct GUEST_REGS
{
//
@@ -94,6 +95,38 @@ typedef struct GUEST_REGS
//
} GUEST_REGS, *PGUEST_REGS;
+#pragma pack(pop)
+
+typedef struct XMM_REG
+{
+ UINT64 XmmLow; // Low 64 bits
+ UINT64 XmmHigh; // High 64 bits
+
+} XMM_REG;
+
+#pragma pack(push, 1) // Ensure no padding
+typedef struct GUEST_XMM_REGS
+{
+ XMM_REG xmm0; // 0x00
+ XMM_REG xmm1; // 0x10
+ XMM_REG xmm2; // 0x20
+ XMM_REG xmm3; // 0x30
+ XMM_REG xmm4; // 0x40
+ XMM_REG xmm5; // 0x50
+ XMM_REG xmm6; // 0x60
+ XMM_REG xmm7; // 0x70
+ XMM_REG xmm8; // 0x80
+ XMM_REG xmm9; // 0x90
+ XMM_REG xmm10; // 0xA0
+ XMM_REG xmm11; // 0xB0
+ XMM_REG xmm12; // 0xC0
+ XMM_REG xmm13; // 0xD0
+ XMM_REG xmm14; // 0xE0
+ XMM_REG xmm15; // 0xF0
+ UINT32 mxcsr; // 0x100
+
+} GUEST_XMM_REGS, *PGUEST_XMM_REGS;
+#pragma pack(pop)
/**
* @brief struct for extra registers
From 464e7c67360b7e76cd9e48f95b69c33c8250e7f2 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 3 Aug 2025 23:31:49 +0200
Subject: [PATCH 009/323] Fix unloading (VMXOFF) crash when restoring XMM
registers
---
CHANGELOG.md | 3 +
.../code/assembly/AsmVmexitHandler.asm | 96 +++++++++++--------
hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c | 1 +
3 files changed, 60 insertions(+), 40 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 066c642b..0f90281e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,9 @@ New release of the HyperDbg Debugger.
### Changed
- The 'hyperhv' project now has build optimizations enabled
+- Reformat VMXOFF restoring routines to restore general-purpose and XMM registers correctly before moving to the previous stack
+- Fix unloading (VMXOFF) crash when restoring XMM registers
+- Fix the problem with restoring XMM registers (#468) ([link](https://github.com/HyperDbg/HyperDbg/issues/468))
## [0.14.1.0] - 2025-07-27
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm b/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
index dad51b60..bd821e9b 100644
--- a/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
+++ b/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
@@ -15,11 +15,13 @@ AsmVmexitHandler PROC
; irql less or equal as it doesn't exist, so we just put some extra space avoid
; these kind of errors
- pushfq
+ ; --------------- Save RFLAGS ----------------
+
+ pushfq ; Save the flags register (RFLAGS)
; ------------ Save XMM Registers ------------
- ; ;;;;;;;;;;;; 16 Byte * 16 Byte = 256 + 4 = 260 (0x106 == 0x110 but let's align it to have better performance) ;;;;;;;;;;;;
+ ; 16 Byte * 16 Byte = 256 + 4 = 260 (0x104 == 0x110 but let's align it to have better performance)
sub rsp, 0110h
@@ -42,7 +44,7 @@ AsmVmexitHandler PROC
stmxcsr dword ptr [rsp+0100h] ; MxCsr is 4 Byte
- ;---------------------------------------------
+ ; ------ Save General-purpose Registers ------
push r15
push r14
@@ -60,21 +62,28 @@ AsmVmexitHandler PROC
push rdx
push rcx
push rax
-
+
+ ; ----------- Call VM-exit Handler -----------
+
mov rcx, rsp ; Fast call argument to PGUEST_REGS
+
sub rsp, 020h ; Free some space for Shadow Section
call VmxVmexitHandler
add rsp, 020h ; Restore the state
- cmp al, 1 ; Check whether we have to turn off VMX or Not (the result is in RAX)
+ cmp al, 1 ; Check whether we have to turn off VMX or Not (the result is in RAX)
+
je AsmVmxoffHandler
-
+
+ ; ----------- Restore XMM Registers ----------
+
RestoreState:
+
pop rax
pop rcx
pop rdx
pop rbx
- pop rbp ; rsp
+ pop rbp ; rsp
pop rbp
pop rsi
pop rdi
@@ -110,9 +119,11 @@ RestoreState:
add rsp, 0110h
- ; ----------------------------------------------
+ ; --------------- Restore RFLAGS ---------------
- popfq
+ popfq ; Restore the flags register (RFLAGS)
+
+ ; ----------------------------------------------
jmp VmxVmresume
@@ -121,38 +132,16 @@ AsmVmexitHandler ENDP
;------------------------------------------------------------------------
AsmVmxoffHandler PROC
-
- sub rsp, 020h ; shadow space
- call VmxReturnStackPointerForVmxoff
- add rsp, 020h ; remove for shadow space
-
- mov [rsp+88h], rax ; now, rax contains rsp
-
- sub rsp, 020h ; shadow space
- call VmxReturnInstructionPointerForVmxoff
- add rsp, 020h ; remove for shadow space
-
- mov rdx, rsp ; save current rsp
-
- mov rbx, [rsp+88h] ; read rsp again
-
- mov rsp, rbx
-
- push rax ; push the return address as we changed the stack, we push
- ; it to the new stack
-
- mov rsp, rdx ; restore previous rsp
-
- sub rbx,08h ; we push sth, so we have to add (sub) +8 from previous stack
- ; also rbx already contains the rsp
- mov [rsp+88h], rbx ; move the new pointer to the current stack
-
+
+ ; ------ Restore General-purpose Registers ------
+
RestoreState:
+
pop rax
pop rcx
pop rdx
pop rbx
- pop rbp ; rsp
+ pop rbp ; rsp
pop rbp
pop rsi
pop rdi
@@ -184,14 +173,41 @@ RestoreState:
movaps xmm14, xmmword ptr [rsp+0e0h]
movaps xmm15, xmmword ptr [rsp+0f0h]
- ldmxcsr dword ptr [rsp+0100h]
+ ldmxcsr dword ptr [rsp+0100h]
+
+ add rsp, 0110h
+
+ ; --------------- Restore RFLAGS ---------------
+
+ popfq ; Restore the flags register (RFLAGS)
+
+ ; ------------ Get Stack Pointer ---------------
+
+ sub rsp, 020h ; shadow space
+ call VmxReturnStackPointerForVmxoff
+ add rsp, 020h ; remove for shadow space
+
+ push rax ; save the current rsp, we will restore it later
+
+
+ ; ------------ Get Instruction Pointer ---------
+
+ sub rsp, 020h ; shadow space
+ call VmxReturnInstructionPointerForVmxoff
+ add rsp, 020h ; remove for shadow space
+
+ pop rsp ; restore rsp
+ push rax ; push the instruction pointer
; ----------------------------------------------
- popfq
- pop rsp ; restore rsp
+ ; There might be some registers that are modified by above CALLs,
+ ; but here we do not care about them since we are also in a function,
+ ; so the caller do not expect us to preserve these volatile registers
- ret ; jump back to where we called Vmcall
+ xor rax, rax ; clear RAX to indicate VMXOFF was successful (VMCALL Status)
+
+ ret ; jump back to where we called Vmcall
AsmVmxoffHandler ENDP
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
index c6870c07..59587977 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
@@ -78,6 +78,7 @@ VmxVmexitHandler(_Inout_ PGUEST_REGS GuestRegs)
// LogInfo("VM_EXIT_REASON : 0x%x", ExitReason);
// LogInfo("VMCS_EXIT_QUALIFICATION : 0x%llx", VCpu->ExitQualification);
//
+
switch (ExitReason)
{
case VMX_EXIT_REASON_TRIPLE_FAULT:
From 7b03230a421782ef29e9a38866836136d8607f02 Mon Sep 17 00:00:00 2001
From: alish14
Date: Mon, 4 Aug 2025 05:21:16 +0330
Subject: [PATCH 010/323] add Rich header entries struct
---
hyperdbg/libhyperdbg/header/pe-parser.h | 31 +++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/hyperdbg/libhyperdbg/header/pe-parser.h b/hyperdbg/libhyperdbg/header/pe-parser.h
index 180569e3..eb24fb89 100644
--- a/hyperdbg/libhyperdbg/header/pe-parser.h
+++ b/hyperdbg/libhyperdbg/header/pe-parser.h
@@ -23,3 +23,34 @@ PeIsPE32BitOr64Bit(const WCHAR * AddressOfFile, PBOOLEAN Is32Bit);
UINT32
PeGetSyscallNumber(LPCSTR NtFunctionName);
+int
+FindRichHeader(PIMAGE_DOS_HEADER dosHeader, char key[5]);
+
+void
+SetRichEntries(int richHeaderSize, char* richHeaderPtr);
+
+void
+FindRichEntries(char* richHeaderPtr, int richHeaderSize, char key[]);
+
+int
+DecryptRichHeader(char key[], int index, char* dataPtr);
+
+
+typedef struct __RICH_HEADER_INFO {
+ int size;
+ char* ptrToBuffer;
+ int entries;
+} RICH_HEADER_INFO, * PRICH_HEADER_INFO;
+
+typedef struct __RICH_HEADER_ENTRY {
+ WORD prodID;
+ WORD buildID;
+ DWORD useCount;
+} RICH_HEADER_ENTRY, * PRICH_HEADER_ENTRY;
+
+typedef struct __RICH_HEADER {
+ PRICH_HEADER_ENTRY entries;
+} RICH_HEADER, * PRICH_HEADER;
+
+RICH_HEADER_INFO PEFILE_RICH_HEADER_INFO;
+RICH_HEADER PEFILE_RICH_HEADER;
\ No newline at end of file
From af3c228beddd5b14cec63bdecbd3f4f05d2df2ce Mon Sep 17 00:00:00 2001
From: alish14
Date: Mon, 4 Aug 2025 05:21:49 +0330
Subject: [PATCH 011/323] add rich parser code
---
.../code/debugger/user-level/pe-parser.cpp | 120 ++++++++++++++++++
1 file changed, 120 insertions(+)
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index 1b7900de..8ac0e425 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -19,6 +19,86 @@
*
* @return VOID
*/
+int
+FindRichHeader(PIMAGE_DOS_HEADER dosHeader, char key[]) {
+ char* baseAddr = (char*)dosHeader;
+ DWORD offset = dosHeader->e_lfanew;
+
+ for (DWORD i = 0; i < offset - 4; ++i) {
+ if (baseAddr[i] == 'R' &&
+ baseAddr[i + 1] == 'i' &&
+ baseAddr[i + 2] == 'c' &&
+ baseAddr[i + 3] == 'h') {
+ memcpy(key, baseAddr + i + 4, 4);
+ return i;
+ }
+ }
+
+ return 0;
+}
+void
+FindRichEntries(char* richHeaderPtr, int richHeaderSize, char key[]) {
+ for (int i = 0; i < richHeaderSize; i += 4) {
+ for (int x = 0; x < 4; x++) {
+ richHeaderPtr[i + x] ^= key[x];
+ }
+ }
+
+ PEFILE_RICH_HEADER_INFO.size = richHeaderSize;
+ PEFILE_RICH_HEADER_INFO.ptrToBuffer = richHeaderPtr;
+ PEFILE_RICH_HEADER_INFO.entries = (richHeaderSize - 16) / 8;
+}
+
+void
+SetRichEntries(int richHeaderSize, char* richHeaderPtr) {
+ for (int i = 16; i < richHeaderSize; i += 8) {
+ WORD prodID = ((unsigned char)richHeaderPtr[i + 3] << 8) | (unsigned char)richHeaderPtr[i + 2];
+ WORD buildID = ((unsigned char)richHeaderPtr[i + 1] << 8) | (unsigned char)richHeaderPtr[i];
+ DWORD useCount = ((unsigned char)richHeaderPtr[i + 7] << 24) |
+ ((unsigned char)richHeaderPtr[i + 6] << 16) |
+ ((unsigned char)richHeaderPtr[i + 5] << 8) |
+ (unsigned char)richHeaderPtr[i + 4];
+
+ PEFILE_RICH_HEADER.entries[(i / 8) - 2] = { prodID, buildID, useCount };
+
+ if (i + 8 >= richHeaderSize) {
+ PEFILE_RICH_HEADER.entries[(i / 8) - 1] = { 0x0000, 0x0000, 0x00000000 };
+ }
+ }
+}
+
+
+
+int
+DecryptRichHeader(char key[], int index, char* dataPtr) {
+ memcpy(key, dataPtr + (index + 4), 4);
+
+ int indexPointer = index - 4;
+ int richHeaderSize = 0;
+
+ while (true) {
+ char tmpchar[4];
+ memcpy(tmpchar, dataPtr + indexPointer, 4);
+
+ for (int i = 0; i < 4; i++) {
+ tmpchar[i] ^= key[i];
+ }
+
+ indexPointer -= 4;
+ richHeaderSize += 4;
+
+ if (tmpchar[1] == 0x61 && tmpchar[0] == 0x44) {
+ break;
+ }
+ }
+
+ return richHeaderSize;
+}
+
+
+
+
+
VOID
PeHexDump(CHAR * Ptr, int Size, int SecAddress)
{
@@ -121,6 +201,40 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * Sectio
//
DosHeader = (PIMAGE_DOS_HEADER)BaseAddr; // 0x04000000
+ char key[4];
+ int richHeaderOffset = FindRichHeader(DosHeader, key);
+
+ if (richHeaderOffset == 0) {
+ ShowMessages("Rich header not found\n");
+ }
+ char* dataPtr = new char[DosHeader->e_lfanew];
+ DWORD bytesRead = 0;
+
+ BOOL result = ReadFile(FileHandle, dataPtr, DosHeader->e_lfanew, &bytesRead, NULL);
+ if (!result || bytesRead != DosHeader->e_lfanew) {
+ ShowMessages("ReadFile failed or incomplete read");
+ }
+ int richHeaderSize = DecryptRichHeader(key, richHeaderOffset, dataPtr);
+ int indexPointer = richHeaderOffset - richHeaderSize;
+
+ char* richHeaderPtr = new char[richHeaderSize];
+ memcpy(richHeaderPtr, dataPtr + indexPointer, richHeaderSize);
+ delete[] dataPtr;
+
+ FindRichEntries(richHeaderPtr, richHeaderSize, key);
+ PEFILE_RICH_HEADER.entries = new RICH_HEADER_ENTRY[PEFILE_RICH_HEADER_INFO.entries];
+ SetRichEntries(richHeaderSize, richHeaderPtr);
+ for (int i = 0; i < PEFILE_RICH_HEADER_INFO.entries; i++) {
+ ShowMessages(" 0x%X 0x%X 0x%X: %d.%d.%d\n",
+ PEFILE_RICH_HEADER.entries[i].buildID,
+ PEFILE_RICH_HEADER.entries[i].prodID,
+ PEFILE_RICH_HEADER.entries[i].useCount,
+ PEFILE_RICH_HEADER.entries[i].buildID,
+ PEFILE_RICH_HEADER.entries[i].prodID,
+ PEFILE_RICH_HEADER.entries[i].useCount);
+ }
+
+
//
// Check for Valid DOS file
//
@@ -170,6 +284,12 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * Sectio
goto Finished;
}
+
+
+
+
+
+
//
// Offset of NT Header is found at 0x3c location in DOS header specified by
// e_lfanew
From 7baec5ebedbc263feb4c23bf8d83794817fe3a6f Mon Sep 17 00:00:00 2001
From: alish14
Date: Tue, 5 Aug 2025 04:49:10 +0330
Subject: [PATCH 012/323] header alias moved
---
hyperdbg/libhyperdbg/header/pe-parser.h | 2 --
1 file changed, 2 deletions(-)
diff --git a/hyperdbg/libhyperdbg/header/pe-parser.h b/hyperdbg/libhyperdbg/header/pe-parser.h
index eb24fb89..95d874c4 100644
--- a/hyperdbg/libhyperdbg/header/pe-parser.h
+++ b/hyperdbg/libhyperdbg/header/pe-parser.h
@@ -52,5 +52,3 @@ typedef struct __RICH_HEADER {
PRICH_HEADER_ENTRY entries;
} RICH_HEADER, * PRICH_HEADER;
-RICH_HEADER_INFO PEFILE_RICH_HEADER_INFO;
-RICH_HEADER PEFILE_RICH_HEADER;
\ No newline at end of file
From 76adc4ff759dfff74e7aff85595d6b7ca7532bb3 Mon Sep 17 00:00:00 2001
From: alish14
Date: Tue, 5 Aug 2025 04:49:48 +0330
Subject: [PATCH 013/323] add comment and change rich header displaying format
---
.../code/debugger/user-level/pe-parser.cpp | 202 ++++++++++++++----
1 file changed, 164 insertions(+), 38 deletions(-)
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index 8ac0e425..4e95d279 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -12,55 +12,140 @@
#include "pch.h"
/**
- * @brief Show hex dump of sections of PE
- * @param Ptr
- * @param Size
- * @param SecAddress
- *
- * @return VOID
+ * @brief Global structure containing Rich header metadata and buffer information
+ *
+ * Contains the size of the Rich header, pointer to the decrypted buffer,
+ * and the number of tool entries found in the header.
*/
+RICH_HEADER_INFO PEFILE_RICH_HEADER_INFO;
+
+
+/**
+ * @brief Global structure containing the parsed Rich header entries
+ *
+ * Holds an array of individual Rich header entries, each containing
+ * product ID, build ID, and usage count for compilation tools.
+ */
+RICH_HEADER PEFILE_RICH_HEADER;
+
+
+
+
+
+
+/**
+ * @brief Locates the Rich header signature in a PE file
+ *
+ * The Rich header is an undocumented Microsoft structure embedded in PE files
+ * that contains information about the tools and compilers used during the build process.
+ * This function searches for the "Rich" signature string within the DOS stub area.
+ *
+ * @param dosHeader Pointer to the DOS header structure of the PE file
+ * @param key Output buffer to store the 4-byte XOR key found after "Rich" signature
+ *
+ * @note The Rich header is located between the DOS header and PE header
+ * @note The XOR key is used to decode the actual Rich header entries
+ **/
int
FindRichHeader(PIMAGE_DOS_HEADER dosHeader, char key[]) {
+ // Get base address for offset calculations
char* baseAddr = (char*)dosHeader;
+
+ // Get PE header offset - this defines our search boundary
DWORD offset = dosHeader->e_lfanew;
+
+ // Search for "Rich" signature
+ // We stop 4 bytes before the PE header to avoid reading beyond bounds
for (DWORD i = 0; i < offset - 4; ++i) {
+
+ // Check for "Rich" signature (4 ASCII bytes)
if (baseAddr[i] == 'R' &&
baseAddr[i + 1] == 'i' &&
baseAddr[i + 2] == 'c' &&
baseAddr[i + 3] == 'h') {
+ // Extract the 4-byte XOR key that immediately follows "Rich"
memcpy(key, baseAddr + i + 4, 4);
+
+ // Return the offset where "Rich" signature was found
return i;
}
}
-
+ // Rich header signature not found
return 0;
}
+
+/**
+ * @brief Decrypts Rich header data using XOR decryption and initializes header info
+ *
+ * The Rich header is encrypted using a simple XOR cipher with a 4-byte key.
+ * This function decrypts the entire header in-place and populates the global
+ * PEFILE_RICH_HEADER_INFO structure with metadata about the decrypted data.
+ *
+ * @param richHeaderPtr Pointer to the raw Rich header data to be decrypted
+ * @param richHeaderSize Size of the Rich header data in bytes
+ * @param key 4-byte XOR key used for decryption
+ *
+ * @note The Rich header uses a repeating 4-byte XOR key for encryption
+ * @note After decryption, the header contains 16 bytes of metadata followed by 8-byte entries
+ * @note Each entry represents one compilation tool (compiler, linker, assembler, etc.)
+ *
+ */
void
FindRichEntries(char* richHeaderPtr, int richHeaderSize, char key[]) {
+ // Decrypt the entire Rich header using XOR with the 4-byte key
for (int i = 0; i < richHeaderSize; i += 4) {
+ // Apply XOR decryption to each 4-byte block
for (int x = 0; x < 4; x++) {
richHeaderPtr[i + x] ^= key[x];
}
}
-
+ // Initialize the Rich header info structure
PEFILE_RICH_HEADER_INFO.size = richHeaderSize;
PEFILE_RICH_HEADER_INFO.ptrToBuffer = richHeaderPtr;
+
+ // Calculate number of entries: subtract 16-byte header, divide by 8 bytes per entry
PEFILE_RICH_HEADER_INFO.entries = (richHeaderSize - 16) / 8;
}
+
+/**
+ * @brief Parses decrypted Rich header data into structured entries
+ *
+ * After decryption, the Rich header contains a series of 8-byte entries, each describing
+ * a compilation tool used during the build process. This function extracts and converts
+ * the little-endian binary data into structured RICH_ENTRY objects.
+ *
+ * Rich header format after decryption:
+ * - Bytes 0-15: Header metadata (DanS signature + padding)
+ * - Bytes 16+: 8-byte entries (prodID:2, buildID:2, useCount:4)
+ *
+ * @param richHeaderSize Size of the entire Rich header in bytes
+ * @param richHeaderPtr Pointer to the decrypted Rich header data
+ *
+ * @warning Assumes the Rich header has been properly decrypted first
+ */
void
SetRichEntries(int richHeaderSize, char* richHeaderPtr) {
+ // Start at offset 16 to skip the header metadata, process 8-byte entries
for (int i = 16; i < richHeaderSize; i += 8) {
+
+ // Extract Product ID (bytes 2-3 of entry, little-endian)
WORD prodID = ((unsigned char)richHeaderPtr[i + 3] << 8) | (unsigned char)richHeaderPtr[i + 2];
+
+ // Extract Build ID (bytes 0-1 of entry, little-endian)
WORD buildID = ((unsigned char)richHeaderPtr[i + 1] << 8) | (unsigned char)richHeaderPtr[i];
+
+ // Extract Use Count (bytes 4-7 of entry, little-endian 32-bit)
DWORD useCount = ((unsigned char)richHeaderPtr[i + 7] << 24) |
((unsigned char)richHeaderPtr[i + 6] << 16) |
((unsigned char)richHeaderPtr[i + 5] << 8) |
(unsigned char)richHeaderPtr[i + 4];
+ // Store the parsed entry (adjust index: i/8 gives entry number, -2 for header offset)
PEFILE_RICH_HEADER.entries[(i / 8) - 2] = { prodID, buildID, useCount };
+ // Add null terminator entry if this is the last entry
if (i + 8 >= richHeaderSize) {
PEFILE_RICH_HEADER.entries[(i / 8) - 1] = { 0x0000, 0x0000, 0x00000000 };
}
@@ -68,25 +153,49 @@ SetRichEntries(int richHeaderSize, char* richHeaderPtr) {
}
-
+/**
+ * @brief Determines the size of the Rich header by finding the DanS signature
+ *
+ * The Rich header begins with the "DanS" signature (after decryption) and ends
+ * with the "Rich" signature. This function works backwards from the "Rich" signature
+ * to find the beginning and calculate the total size.
+ *
+ * Rich header structure:
+ * [DanS signature] [Padding] [Tool Entries] [Rich signature] [XOR Key]
+ *
+ * @param key 4-byte XOR key for decryption (extracted from after "Rich" signature)
+ * @param index Offset where "Rich" signature was found
+ * @param dataPtr Pointer to the beginning of the PE file data
+ *
+ * @return int Size of the Rich header in bytes, or 0 if DanS signature not found
+ *
+ */
int
DecryptRichHeader(char key[], int index, char* dataPtr) {
+ // Copy the XOR key from the 4 bytes immediately following "Rich"
memcpy(key, dataPtr + (index + 4), 4);
+ // Start searching backwards from just before the "Rich" signature
int indexPointer = index - 4;
int richHeaderSize = 0;
+ // Search backwards for the DanS signature that marks the beginning
while (true) {
char tmpchar[4];
+ // Read 4 bytes and decrypt them with the XOR key
memcpy(tmpchar, dataPtr + indexPointer, 4);
for (int i = 0; i < 4; i++) {
tmpchar[i] ^= key[i];
}
+ // Move backwards and increment size counter
indexPointer -= 4;
richHeaderSize += 4;
+
+ // Check for DanS signature (0x44='D', 0x61='a' after decryption)
+ // Note: Checking bytes 1,0 due to little-endian storage
if (tmpchar[1] == 0x61 && tmpchar[0] == 0x44) {
break;
}
@@ -96,8 +205,14 @@ DecryptRichHeader(char key[], int index, char* dataPtr) {
}
-
-
+/**
+ * @brief Show hex dump of sections of PE
+ * @param Ptr
+ * @param Size
+ * @param SecAddress
+ *
+ * @return VOID
+ */
VOID
PeHexDump(CHAR * Ptr, int Size, int SecAddress)
@@ -154,7 +269,7 @@ PeHexDump(CHAR * Ptr, int Size, int SecAddress)
BOOLEAN
PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * SectionToShow, BOOLEAN Is32Bit)
{
- BOOLEAN Result = FALSE;
+ BOOLEAN Result = FALSE,RichFound=FALSE;
HANDLE MapObjectHandle, FileHandle; // File Mapping Object
UINT32 NumberOfSections; // Number of sections
LPVOID BaseAddr; // Pointer to the base memory of mapped file
@@ -204,34 +319,26 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * Sectio
char key[4];
int richHeaderOffset = FindRichHeader(DosHeader, key);
- if (richHeaderOffset == 0) {
- ShowMessages("Rich header not found\n");
- }
- char* dataPtr = new char[DosHeader->e_lfanew];
- DWORD bytesRead = 0;
+ if (richHeaderOffset != 0) {
+ char* dataPtr = new char[DosHeader->e_lfanew];
+ DWORD bytesRead = 0;
- BOOL result = ReadFile(FileHandle, dataPtr, DosHeader->e_lfanew, &bytesRead, NULL);
- if (!result || bytesRead != DosHeader->e_lfanew) {
- ShowMessages("ReadFile failed or incomplete read");
- }
- int richHeaderSize = DecryptRichHeader(key, richHeaderOffset, dataPtr);
- int indexPointer = richHeaderOffset - richHeaderSize;
+ BOOL result = ReadFile(FileHandle, dataPtr, DosHeader->e_lfanew, &bytesRead, NULL);
+ if (!result || bytesRead != DosHeader->e_lfanew) {
+ ShowMessages("ReadFile failed or incomplete read");
+ }
+ int richHeaderSize = DecryptRichHeader(key, richHeaderOffset, dataPtr);
+ int indexPointer = richHeaderOffset - richHeaderSize;
- char* richHeaderPtr = new char[richHeaderSize];
- memcpy(richHeaderPtr, dataPtr + indexPointer, richHeaderSize);
- delete[] dataPtr;
+ char* richHeaderPtr = new char[richHeaderSize];
+ memcpy(richHeaderPtr, dataPtr + indexPointer, richHeaderSize);
+ delete[] dataPtr;
- FindRichEntries(richHeaderPtr, richHeaderSize, key);
- PEFILE_RICH_HEADER.entries = new RICH_HEADER_ENTRY[PEFILE_RICH_HEADER_INFO.entries];
- SetRichEntries(richHeaderSize, richHeaderPtr);
- for (int i = 0; i < PEFILE_RICH_HEADER_INFO.entries; i++) {
- ShowMessages(" 0x%X 0x%X 0x%X: %d.%d.%d\n",
- PEFILE_RICH_HEADER.entries[i].buildID,
- PEFILE_RICH_HEADER.entries[i].prodID,
- PEFILE_RICH_HEADER.entries[i].useCount,
- PEFILE_RICH_HEADER.entries[i].buildID,
- PEFILE_RICH_HEADER.entries[i].prodID,
- PEFILE_RICH_HEADER.entries[i].useCount);
+ FindRichEntries(richHeaderPtr, richHeaderSize, key);
+ PEFILE_RICH_HEADER.entries = new RICH_HEADER_ENTRY[PEFILE_RICH_HEADER_INFO.entries];
+
+ SetRichEntries(richHeaderSize, richHeaderPtr);
+ RichFound = TRUE;
}
@@ -284,7 +391,26 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * Sectio
goto Finished;
}
-
+if (RichFound) {
+ ShowMessages("\n===============================================================================\n");
+ ShowMessages(" RICH HEADER \n");
+ ShowMessages("===============================================================================\n");
+ ShowMessages("Entries: %d\n\n", PEFILE_RICH_HEADER_INFO.entries);
+ ShowMessages("%-10s %-10s %-10s\n", "Build ID", "Prod ID", "Use Count");
+ ShowMessages("---------------------------------------\n");
+
+ for (int i = 0; i < PEFILE_RICH_HEADER_INFO.entries; i++) {
+ ShowMessages("0x%08X 0x%08X %10d\n",
+ PEFILE_RICH_HEADER.entries[i].buildID,
+ PEFILE_RICH_HEADER.entries[i].prodID,
+ PEFILE_RICH_HEADER.entries[i].useCount);
+ }
+
+ ShowMessages("==============Rich Header End ==================\n");
+ }
+ else {
+ ShowMessages("=========== Rich Header Not Found ===========\n");
+ }
From 6ea7989d51cb87b318d143e1766c166cc5960b92 Mon Sep 17 00:00:00 2001
From: sina
Date: Wed, 6 Aug 2025 20:28:40 +0200
Subject: [PATCH 014/323] refactoring rich header codes
---
CHANGELOG.md | 2 +-
.../code/debugger/user-level/pe-parser.cpp | 309 ++++++++++--------
hyperdbg/libhyperdbg/header/pe-parser.h | 56 ++--
3 files changed, 211 insertions(+), 156 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 960a5914..90dd4142 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,7 +12,7 @@ New release of the HyperDbg Debugger.
- Export the SDK functions for SMI operations ([link](https://docs.hyperdbg.org/commands/extension-commands/smi#sdk))
### Changed
--
+- Enhanced the '.pe' command to support PE Rich Headers thanks to [@Alish14](https://github.com/Alish14) ([link](https://github.com/HyperDbg/HyperDbg/pull/539))
## [0.14.1.0] - 2025-07-27
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index 4e95d279..680b2e70 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -13,198 +13,247 @@
/**
* @brief Global structure containing Rich header metadata and buffer information
- *
+ *
* Contains the size of the Rich header, pointer to the decrypted buffer,
* and the number of tool entries found in the header.
*/
-RICH_HEADER_INFO PEFILE_RICH_HEADER_INFO;
-
+RICH_HEADER_INFO PeFileRichHeaderInfo = {0};
/**
* @brief Global structure containing the parsed Rich header entries
- *
+ *
* Holds an array of individual Rich header entries, each containing
* product ID, build ID, and usage count for compilation tools.
*/
-RICH_HEADER PEFILE_RICH_HEADER;
-
-
-
-
-
+RICH_HEADER PeFileRichHeader = {0};
/**
* @brief Locates the Rich header signature in a PE file
- *
+ *
* The Rich header is an undocumented Microsoft structure embedded in PE files
* that contains information about the tools and compilers used during the build process.
* This function searches for the "Rich" signature string within the DOS stub area.
- *
- * @param dosHeader Pointer to the DOS header structure of the PE file
- * @param key Output buffer to store the 4-byte XOR key found after "Rich" signature
- *
+ *
+ * @param DosHeader Pointer to the DOS header structure of the PE file
+ * @param Key Output buffer to store the 4-byte XOR key found after "Rich" signature
+ *
* @note The Rich header is located between the DOS header and PE header
* @note The XOR key is used to decode the actual Rich header entries
**/
-int
-FindRichHeader(PIMAGE_DOS_HEADER dosHeader, char key[]) {
+INT
+FindRichHeader(PIMAGE_DOS_HEADER DosHeader, CHAR Key[])
+{
+ //
// Get base address for offset calculations
- char* baseAddr = (char*)dosHeader;
+ //
+ CHAR * BaseAddr = (CHAR *)DosHeader;
+ //
// Get PE header offset - this defines our search boundary
- DWORD offset = dosHeader->e_lfanew;
+ //
+ DWORD Offset = DosHeader->e_lfanew;
-
- // Search for "Rich" signature
+ //
+ // Search for "Rich" signature
// We stop 4 bytes before the PE header to avoid reading beyond bounds
- for (DWORD i = 0; i < offset - 4; ++i) {
-
+ //
+ for (DWORD i = 0; i < Offset - 4; ++i)
+ {
+ //
// Check for "Rich" signature (4 ASCII bytes)
- if (baseAddr[i] == 'R' &&
- baseAddr[i + 1] == 'i' &&
- baseAddr[i + 2] == 'c' &&
- baseAddr[i + 3] == 'h') {
- // Extract the 4-byte XOR key that immediately follows "Rich"
- memcpy(key, baseAddr + i + 4, 4);
+ //
+ if (BaseAddr[i] == 'R' &&
+ BaseAddr[i + 1] == 'i' &&
+ BaseAddr[i + 2] == 'c' &&
+ BaseAddr[i + 3] == 'h')
+ {
+ //
+ // Extract the 4-byte XOR key that immediately follows "Rich"
+ //
+ memcpy(Key, BaseAddr + i + 4, 4);
- // Return the offset where "Rich" signature was found
+ //
+ // Return the offset where "Rich" signature was found
+ //
return i;
}
}
+
+ //
// Rich header signature not found
+ //
return 0;
}
/**
* @brief Decrypts Rich header data using XOR decryption and initializes header info
- *
+ *
* The Rich header is encrypted using a simple XOR cipher with a 4-byte key.
* This function decrypts the entire header in-place and populates the global
* PEFILE_RICH_HEADER_INFO structure with metadata about the decrypted data.
- *
- * @param richHeaderPtr Pointer to the raw Rich header data to be decrypted
- * @param richHeaderSize Size of the Rich header data in bytes
- * @param key 4-byte XOR key used for decryption
- *
+ *
+ * @param RichHeaderPtr Pointer to the raw Rich header data to be decrypted
+ * @param RichHeaderSize Size of the Rich header data in bytes
+ * @param Key 4-byte XOR key used for decryption
+ *
* @note The Rich header uses a repeating 4-byte XOR key for encryption
* @note After decryption, the header contains 16 bytes of metadata followed by 8-byte entries
* @note Each entry represents one compilation tool (compiler, linker, assembler, etc.)
- *
+ *
*/
-void
-FindRichEntries(char* richHeaderPtr, int richHeaderSize, char key[]) {
+void
+FindRichEntries(CHAR * RichHeaderPtr, INT RichHeaderSize, CHAR Key[])
+{
+ //
// Decrypt the entire Rich header using XOR with the 4-byte key
- for (int i = 0; i < richHeaderSize; i += 4) {
+ //
+ for (int i = 0; i < RichHeaderSize; i += 4)
+ {
+ //
// Apply XOR decryption to each 4-byte block
- for (int x = 0; x < 4; x++) {
- richHeaderPtr[i + x] ^= key[x];
+ //
+ for (int x = 0; x < 4; x++)
+ {
+ RichHeaderPtr[i + x] ^= Key[x];
}
}
+
+ //
// Initialize the Rich header info structure
- PEFILE_RICH_HEADER_INFO.size = richHeaderSize;
- PEFILE_RICH_HEADER_INFO.ptrToBuffer = richHeaderPtr;
+ //
+ PeFileRichHeaderInfo.Size = RichHeaderSize;
+ PeFileRichHeaderInfo.PtrToBuffer = RichHeaderPtr;
+ //
// Calculate number of entries: subtract 16-byte header, divide by 8 bytes per entry
- PEFILE_RICH_HEADER_INFO.entries = (richHeaderSize - 16) / 8;
+ //
+ PeFileRichHeaderInfo.Entries = (RichHeaderSize - 16) / 8;
}
-
/**
* @brief Parses decrypted Rich header data into structured entries
- *
+ *
* After decryption, the Rich header contains a series of 8-byte entries, each describing
* a compilation tool used during the build process. This function extracts and converts
* the little-endian binary data into structured RICH_ENTRY objects.
- *
+ *
* Rich header format after decryption:
* - Bytes 0-15: Header metadata (DanS signature + padding)
* - Bytes 16+: 8-byte entries (prodID:2, buildID:2, useCount:4)
- *
- * @param richHeaderSize Size of the entire Rich header in bytes
- * @param richHeaderPtr Pointer to the decrypted Rich header data
- *
+ *
+ * @param RichHeaderSize Size of the entire Rich header in bytes
+ * @param RichHeaderPtr Pointer to the decrypted Rich header data
+ *
* @warning Assumes the Rich header has been properly decrypted first
*/
-void
-SetRichEntries(int richHeaderSize, char* richHeaderPtr) {
+VOID
+SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr)
+{
+ //
// Start at offset 16 to skip the header metadata, process 8-byte entries
- for (int i = 16; i < richHeaderSize; i += 8) {
-
+ //
+ for (int i = 16; i < RichHeaderSize; i += 8)
+ {
+ //
// Extract Product ID (bytes 2-3 of entry, little-endian)
- WORD prodID = ((unsigned char)richHeaderPtr[i + 3] << 8) | (unsigned char)richHeaderPtr[i + 2];
+ //
+ WORD ProdID = ((unsigned char)RichHeaderPtr[i + 3] << 8) | (unsigned char)RichHeaderPtr[i + 2];
+ //
// Extract Build ID (bytes 0-1 of entry, little-endian)
- WORD buildID = ((unsigned char)richHeaderPtr[i + 1] << 8) | (unsigned char)richHeaderPtr[i];
+ //
+ WORD BuildID = ((unsigned char)RichHeaderPtr[i + 1] << 8) | (unsigned char)RichHeaderPtr[i];
+ //
// Extract Use Count (bytes 4-7 of entry, little-endian 32-bit)
- DWORD useCount = ((unsigned char)richHeaderPtr[i + 7] << 24) |
- ((unsigned char)richHeaderPtr[i + 6] << 16) |
- ((unsigned char)richHeaderPtr[i + 5] << 8) |
- (unsigned char)richHeaderPtr[i + 4];
+ //
+ DWORD UseCount = ((unsigned char)RichHeaderPtr[i + 7] << 24) |
+ ((unsigned char)RichHeaderPtr[i + 6] << 16) |
+ ((unsigned char)RichHeaderPtr[i + 5] << 8) |
+ (unsigned char)RichHeaderPtr[i + 4];
+ //
// Store the parsed entry (adjust index: i/8 gives entry number, -2 for header offset)
- PEFILE_RICH_HEADER.entries[(i / 8) - 2] = { prodID, buildID, useCount };
+ //
+ PeFileRichHeader.Entries[(i / 8) - 2] = {ProdID, BuildID, UseCount};
+ //
// Add null terminator entry if this is the last entry
- if (i + 8 >= richHeaderSize) {
- PEFILE_RICH_HEADER.entries[(i / 8) - 1] = { 0x0000, 0x0000, 0x00000000 };
+ //
+ if (i + 8 >= RichHeaderSize)
+ {
+ PeFileRichHeader.Entries[(i / 8) - 1] = {0x0000, 0x0000, 0x00000000};
}
}
}
-
/**
* @brief Determines the size of the Rich header by finding the DanS signature
- *
+ *
* The Rich header begins with the "DanS" signature (after decryption) and ends
* with the "Rich" signature. This function works backwards from the "Rich" signature
* to find the beginning and calculate the total size.
- *
+ *
* Rich header structure:
* [DanS signature] [Padding] [Tool Entries] [Rich signature] [XOR Key]
- *
- * @param key 4-byte XOR key for decryption (extracted from after "Rich" signature)
- * @param index Offset where "Rich" signature was found
- * @param dataPtr Pointer to the beginning of the PE file data
- *
+ *
+ * @param Key 4-byte XOR key for decryption (extracted from after "Rich" signature)
+ * @param Index Offset where "Rich" signature was found
+ * @param DataPtr Pointer to the beginning of the PE file data
+ *
* @return int Size of the Rich header in bytes, or 0 if DanS signature not found
- *
+ *
*/
int
-DecryptRichHeader(char key[], int index, char* dataPtr) {
+DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr)
+{
+ //
// Copy the XOR key from the 4 bytes immediately following "Rich"
- memcpy(key, dataPtr + (index + 4), 4);
+ //
+ memcpy(Key, DataPtr + (Index + 4), 4);
+ //
// Start searching backwards from just before the "Rich" signature
- int indexPointer = index - 4;
- int richHeaderSize = 0;
+ //
+ int IndexPointer = Index - 4;
+ int RichHeaderSize = 0;
+ //
// Search backwards for the DanS signature that marks the beginning
- while (true) {
- char tmpchar[4];
- // Read 4 bytes and decrypt them with the XOR key
- memcpy(tmpchar, dataPtr + indexPointer, 4);
+ //
+ while (true)
+ {
+ char TmpChar[4];
- for (int i = 0; i < 4; i++) {
- tmpchar[i] ^= key[i];
+ //
+ // Read 4 bytes and decrypt them with the XOR key
+ //
+ memcpy(TmpChar, DataPtr + IndexPointer, 4);
+
+ for (int i = 0; i < 4; i++)
+ {
+ TmpChar[i] ^= Key[i];
}
+ //
// Move backwards and increment size counter
- indexPointer -= 4;
- richHeaderSize += 4;
-
+ //
+ IndexPointer -= 4;
+ RichHeaderSize += 4;
+ //
// Check for DanS signature (0x44='D', 0x61='a' after decryption)
// Note: Checking bytes 1,0 due to little-endian storage
- if (tmpchar[1] == 0x61 && tmpchar[0] == 0x44) {
+ //
+ if (TmpChar[1] == 0x61 && TmpChar[0] == 0x44)
+ {
break;
}
}
- return richHeaderSize;
+ return RichHeaderSize;
}
-
/**
* @brief Show hex dump of sections of PE
* @param Ptr
@@ -269,7 +318,7 @@ PeHexDump(CHAR * Ptr, int Size, int SecAddress)
BOOLEAN
PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * SectionToShow, BOOLEAN Is32Bit)
{
- BOOLEAN Result = FALSE,RichFound=FALSE;
+ BOOLEAN Result = FALSE, RichFound = FALSE;
HANDLE MapObjectHandle, FileHandle; // File Mapping Object
UINT32 NumberOfSections; // Number of sections
LPVOID BaseAddr; // Pointer to the base memory of mapped file
@@ -316,32 +365,33 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * Sectio
//
DosHeader = (PIMAGE_DOS_HEADER)BaseAddr; // 0x04000000
- char key[4];
- int richHeaderOffset = FindRichHeader(DosHeader, key);
+ char Key[4];
+ int RichHeaderOffset = FindRichHeader(DosHeader, Key);
- if (richHeaderOffset != 0) {
- char* dataPtr = new char[DosHeader->e_lfanew];
- DWORD bytesRead = 0;
+ if (RichHeaderOffset != 0)
+ {
+ char * DataPtr = new char[DosHeader->e_lfanew];
+ DWORD BytesRead = 0;
- BOOL result = ReadFile(FileHandle, dataPtr, DosHeader->e_lfanew, &bytesRead, NULL);
- if (!result || bytesRead != DosHeader->e_lfanew) {
+ BOOL result = ReadFile(FileHandle, DataPtr, DosHeader->e_lfanew, &BytesRead, NULL);
+ if (!result || BytesRead != DosHeader->e_lfanew)
+ {
ShowMessages("ReadFile failed or incomplete read");
}
- int richHeaderSize = DecryptRichHeader(key, richHeaderOffset, dataPtr);
- int indexPointer = richHeaderOffset - richHeaderSize;
+ int RichHeaderSize = DecryptRichHeader(Key, RichHeaderOffset, DataPtr);
+ int IndexPointer = RichHeaderOffset - RichHeaderSize;
- char* richHeaderPtr = new char[richHeaderSize];
- memcpy(richHeaderPtr, dataPtr + indexPointer, richHeaderSize);
- delete[] dataPtr;
+ char * richHeaderPtr = new char[RichHeaderSize];
+ memcpy(richHeaderPtr, DataPtr + IndexPointer, RichHeaderSize);
+ delete[] DataPtr;
- FindRichEntries(richHeaderPtr, richHeaderSize, key);
- PEFILE_RICH_HEADER.entries = new RICH_HEADER_ENTRY[PEFILE_RICH_HEADER_INFO.entries];
+ FindRichEntries(richHeaderPtr, RichHeaderSize, Key);
+ PeFileRichHeader.Entries = new RICH_HEADER_ENTRY[PeFileRichHeaderInfo.Entries];
- SetRichEntries(richHeaderSize, richHeaderPtr);
+ SetRichEntries(RichHeaderSize, richHeaderPtr);
RichFound = TRUE;
}
-
//
// Check for Valid DOS file
//
@@ -391,30 +441,29 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * Sectio
goto Finished;
}
-if (RichFound) {
- ShowMessages("\n===============================================================================\n");
- ShowMessages(" RICH HEADER \n");
- ShowMessages("===============================================================================\n");
- ShowMessages("Entries: %d\n\n", PEFILE_RICH_HEADER_INFO.entries);
- ShowMessages("%-10s %-10s %-10s\n", "Build ID", "Prod ID", "Use Count");
- ShowMessages("---------------------------------------\n");
-
- for (int i = 0; i < PEFILE_RICH_HEADER_INFO.entries; i++) {
- ShowMessages("0x%08X 0x%08X %10d\n",
- PEFILE_RICH_HEADER.entries[i].buildID,
- PEFILE_RICH_HEADER.entries[i].prodID,
- PEFILE_RICH_HEADER.entries[i].useCount);
+ if (RichFound)
+ {
+ ShowMessages("\n===============================================================================\n");
+ ShowMessages(" RICH HEADER \n");
+ ShowMessages("===============================================================================\n");
+ ShowMessages("Entries: %d\n\n", PeFileRichHeaderInfo.Entries);
+ ShowMessages("%-10s %-10s %-10s\n", "Build ID", "Prod ID", "Use Count");
+ ShowMessages("---------------------------------------\n");
+
+ for (int i = 0; i < PeFileRichHeaderInfo.Entries; i++)
+ {
+ ShowMessages("0x%08X 0x%08X %10d\n",
+ PeFileRichHeader.Entries[i].BuildID,
+ PeFileRichHeader.Entries[i].ProdID,
+ PeFileRichHeader.Entries[i].UseCount);
+ }
+
+ ShowMessages("==============Rich Header End ==================\n");
+ }
+ else
+ {
+ ShowMessages("=========== Rich Header Not Found ===========\n");
}
-
- ShowMessages("==============Rich Header End ==================\n");
- }
- else {
- ShowMessages("=========== Rich Header Not Found ===========\n");
- }
-
-
-
-
//
// Offset of NT Header is found at 0x3c location in DOS header specified by
diff --git a/hyperdbg/libhyperdbg/header/pe-parser.h b/hyperdbg/libhyperdbg/header/pe-parser.h
index 95d874c4..f8130c19 100644
--- a/hyperdbg/libhyperdbg/header/pe-parser.h
+++ b/hyperdbg/libhyperdbg/header/pe-parser.h
@@ -11,6 +11,29 @@
*/
#pragma once
+//////////////////////////////////////////////////
+// Structures //
+//////////////////////////////////////////////////
+
+typedef struct _RICH_HEADER_INFO
+{
+ int Size;
+ char * PtrToBuffer;
+ int Entries;
+} RICH_HEADER_INFO, *PRICH_HEADER_INFO;
+
+typedef struct _RICH_HEADER_ENTRY
+{
+ WORD ProdID;
+ WORD BuildID;
+ DWORD UseCount;
+} RICH_HEADER_ENTRY, *PRICH_HEADER_ENTRY;
+
+typedef struct _RICH_HEADER
+{
+ PRICH_HEADER_ENTRY Entries;
+} RICH_HEADER, *PRICH_HEADER;
+
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
@@ -23,32 +46,15 @@ PeIsPE32BitOr64Bit(const WCHAR * AddressOfFile, PBOOLEAN Is32Bit);
UINT32
PeGetSyscallNumber(LPCSTR NtFunctionName);
-int
-FindRichHeader(PIMAGE_DOS_HEADER dosHeader, char key[5]);
-void
-SetRichEntries(int richHeaderSize, char* richHeaderPtr);
+INT
+FindRichHeader(PIMAGE_DOS_HEADER DosHeader, CHAR Key[]);
-void
-FindRichEntries(char* richHeaderPtr, int richHeaderSize, char key[]);
+VOID
+SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr);
-int
-DecryptRichHeader(char key[], int index, char* dataPtr);
-
-
-typedef struct __RICH_HEADER_INFO {
- int size;
- char* ptrToBuffer;
- int entries;
-} RICH_HEADER_INFO, * PRICH_HEADER_INFO;
-
-typedef struct __RICH_HEADER_ENTRY {
- WORD prodID;
- WORD buildID;
- DWORD useCount;
-} RICH_HEADER_ENTRY, * PRICH_HEADER_ENTRY;
-
-typedef struct __RICH_HEADER {
- PRICH_HEADER_ENTRY entries;
-} RICH_HEADER, * PRICH_HEADER;
+VOID
+FindRichEntries(CHAR * RichHeaderPtr, INT RichHeaderSize, CHAR Key[]);
+INT
+DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr);
From da717d0deba53c08f6eb6f457c2faa3631974639 Mon Sep 17 00:00:00 2001
From: alish14
Date: Sat, 9 Aug 2025 06:07:22 +0330
Subject: [PATCH 015/323] change global variable to pointer
---
.../code/debugger/user-level/pe-parser.cpp | 40 ++++++++++---------
hyperdbg/libhyperdbg/header/pe-parser.h | 4 +-
2 files changed, 24 insertions(+), 20 deletions(-)
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index 680b2e70..8d962518 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -17,7 +17,7 @@
* Contains the size of the Rich header, pointer to the decrypted buffer,
* and the number of tool entries found in the header.
*/
-RICH_HEADER_INFO PeFileRichHeaderInfo = {0};
+//RICH_HEADER_INFO PeFileRichHeaderInfo = {0};
/**
* @brief Global structure containing the parsed Rich header entries
@@ -25,7 +25,7 @@ RICH_HEADER_INFO PeFileRichHeaderInfo = {0};
* Holds an array of individual Rich header entries, each containing
* product ID, build ID, and usage count for compilation tools.
*/
-RICH_HEADER PeFileRichHeader = {0};
+//RICH_HEADER PeFileRichHeader = {0};
/**
* @brief Locates the Rich header signature in a PE file
@@ -89,12 +89,13 @@ FindRichHeader(PIMAGE_DOS_HEADER DosHeader, CHAR Key[])
* @brief Decrypts Rich header data using XOR decryption and initializes header info
*
* The Rich header is encrypted using a simple XOR cipher with a 4-byte key.
- * This function decrypts the entire header in-place and populates the global
+ * This function decrypts the entire header in-place and populates the
* PEFILE_RICH_HEADER_INFO structure with metadata about the decrypted data.
*
* @param RichHeaderPtr Pointer to the raw Rich header data to be decrypted
* @param RichHeaderSize Size of the Rich header data in bytes
* @param Key 4-byte XOR key used for decryption
+ * @param PeFileRichHeaderInfo structure containing Rich header metadata and buffer information
*
* @note The Rich header uses a repeating 4-byte XOR key for encryption
* @note After decryption, the header contains 16 bytes of metadata followed by 8-byte entries
@@ -102,7 +103,7 @@ FindRichHeader(PIMAGE_DOS_HEADER DosHeader, CHAR Key[])
*
*/
void
-FindRichEntries(CHAR * RichHeaderPtr, INT RichHeaderSize, CHAR Key[])
+FindRichEntries(CHAR * RichHeaderPtr, INT RichHeaderSize, CHAR Key[],PRICH_HEADER_INFO PeFileRichHeaderInfo)
{
//
// Decrypt the entire Rich header using XOR with the 4-byte key
@@ -121,13 +122,13 @@ FindRichEntries(CHAR * RichHeaderPtr, INT RichHeaderSize, CHAR Key[])
//
// Initialize the Rich header info structure
//
- PeFileRichHeaderInfo.Size = RichHeaderSize;
- PeFileRichHeaderInfo.PtrToBuffer = RichHeaderPtr;
+ PeFileRichHeaderInfo->Size = RichHeaderSize;
+ PeFileRichHeaderInfo->PtrToBuffer = RichHeaderPtr;
//
// Calculate number of entries: subtract 16-byte header, divide by 8 bytes per entry
//
- PeFileRichHeaderInfo.Entries = (RichHeaderSize - 16) / 8;
+ PeFileRichHeaderInfo->Entries = (RichHeaderSize - 16) / 8;
}
/**
@@ -143,11 +144,12 @@ FindRichEntries(CHAR * RichHeaderPtr, INT RichHeaderSize, CHAR Key[])
*
* @param RichHeaderSize Size of the entire Rich header in bytes
* @param RichHeaderPtr Pointer to the decrypted Rich header data
+ * @param PeFileRichHeader structure containing the parsed Rich header entries
*
* @warning Assumes the Rich header has been properly decrypted first
*/
VOID
-SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr)
+SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr,PRICH_HEADER PeFileRichHeader )
{
//
// Start at offset 16 to skip the header metadata, process 8-byte entries
@@ -175,14 +177,14 @@ SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr)
//
// Store the parsed entry (adjust index: i/8 gives entry number, -2 for header offset)
//
- PeFileRichHeader.Entries[(i / 8) - 2] = {ProdID, BuildID, UseCount};
+ PeFileRichHeader->Entries[(i / 8) - 2] = {ProdID, BuildID, UseCount};
//
// Add null terminator entry if this is the last entry
//
if (i + 8 >= RichHeaderSize)
{
- PeFileRichHeader.Entries[(i / 8) - 1] = {0x0000, 0x0000, 0x00000000};
+ PeFileRichHeader->Entries[(i / 8) - 1] = {0x0000, 0x0000, 0x00000000};
}
}
}
@@ -318,6 +320,8 @@ PeHexDump(CHAR * Ptr, int Size, int SecAddress)
BOOLEAN
PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * SectionToShow, BOOLEAN Is32Bit)
{
+ PRICH_HEADER_INFO PeFileRichHeaderInfo{ 0 };
+ PRICH_HEADER PeFileRichHeader = {0};
BOOLEAN Result = FALSE, RichFound = FALSE;
HANDLE MapObjectHandle, FileHandle; // File Mapping Object
UINT32 NumberOfSections; // Number of sections
@@ -385,10 +389,10 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * Sectio
memcpy(richHeaderPtr, DataPtr + IndexPointer, RichHeaderSize);
delete[] DataPtr;
- FindRichEntries(richHeaderPtr, RichHeaderSize, Key);
- PeFileRichHeader.Entries = new RICH_HEADER_ENTRY[PeFileRichHeaderInfo.Entries];
+ FindRichEntries(richHeaderPtr, RichHeaderSize, Key,PeFileRichHeaderInfo);
+ PeFileRichHeader->Entries = new RICH_HEADER_ENTRY[PeFileRichHeaderInfo->Entries];
- SetRichEntries(RichHeaderSize, richHeaderPtr);
+ SetRichEntries(RichHeaderSize, richHeaderPtr,PeFileRichHeader);
RichFound = TRUE;
}
@@ -446,16 +450,16 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * Sectio
ShowMessages("\n===============================================================================\n");
ShowMessages(" RICH HEADER \n");
ShowMessages("===============================================================================\n");
- ShowMessages("Entries: %d\n\n", PeFileRichHeaderInfo.Entries);
+ ShowMessages("Entries: %d\n\n", PeFileRichHeaderInfo->Entries);
ShowMessages("%-10s %-10s %-10s\n", "Build ID", "Prod ID", "Use Count");
ShowMessages("---------------------------------------\n");
- for (int i = 0; i < PeFileRichHeaderInfo.Entries; i++)
+ for (int i = 0; i < PeFileRichHeaderInfo->Entries; i++)
{
ShowMessages("0x%08X 0x%08X %10d\n",
- PeFileRichHeader.Entries[i].BuildID,
- PeFileRichHeader.Entries[i].ProdID,
- PeFileRichHeader.Entries[i].UseCount);
+ PeFileRichHeader->Entries[i].BuildID,
+ PeFileRichHeader->Entries[i].ProdID,
+ PeFileRichHeader->Entries[i].UseCount);
}
ShowMessages("==============Rich Header End ==================\n");
diff --git a/hyperdbg/libhyperdbg/header/pe-parser.h b/hyperdbg/libhyperdbg/header/pe-parser.h
index f8130c19..baae3462 100644
--- a/hyperdbg/libhyperdbg/header/pe-parser.h
+++ b/hyperdbg/libhyperdbg/header/pe-parser.h
@@ -51,10 +51,10 @@ INT
FindRichHeader(PIMAGE_DOS_HEADER DosHeader, CHAR Key[]);
VOID
-SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr);
+SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr,RICH_HEADER_ENTRY * PeFileRichHeader);
VOID
-FindRichEntries(CHAR * RichHeaderPtr, INT RichHeaderSize, CHAR Key[]);
+FindRichEntries(CHAR * RichHeaderPtr, INT RichHeaderSize, CHAR Key[],RICH_HEADER_INFO * RichHeaderInfo);
INT
DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr);
From 38c917e1ecf439b6e120a8cf381a3b0058dfdcd4 Mon Sep 17 00:00:00 2001
From: alish14
Date: Sat, 9 Aug 2025 07:55:22 +0330
Subject: [PATCH 016/323] fixed incorrectly using pointer
---
.../code/debugger/user-level/pe-parser.cpp | 20 +++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index 8d962518..01485f30 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -320,8 +320,8 @@ PeHexDump(CHAR * Ptr, int Size, int SecAddress)
BOOLEAN
PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * SectionToShow, BOOLEAN Is32Bit)
{
- PRICH_HEADER_INFO PeFileRichHeaderInfo{ 0 };
- PRICH_HEADER PeFileRichHeader = {0};
+ RICH_HEADER_INFO PeFileRichHeaderInfo{ 0 };
+ RICH_HEADER PeFileRichHeader = {0};
BOOLEAN Result = FALSE, RichFound = FALSE;
HANDLE MapObjectHandle, FileHandle; // File Mapping Object
UINT32 NumberOfSections; // Number of sections
@@ -389,10 +389,10 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * Sectio
memcpy(richHeaderPtr, DataPtr + IndexPointer, RichHeaderSize);
delete[] DataPtr;
- FindRichEntries(richHeaderPtr, RichHeaderSize, Key,PeFileRichHeaderInfo);
- PeFileRichHeader->Entries = new RICH_HEADER_ENTRY[PeFileRichHeaderInfo->Entries];
+ FindRichEntries(richHeaderPtr, RichHeaderSize, Key,&PeFileRichHeaderInfo);
+ PeFileRichHeader.Entries = new RICH_HEADER_ENTRY[PeFileRichHeaderInfo.Entries];
- SetRichEntries(RichHeaderSize, richHeaderPtr,PeFileRichHeader);
+ SetRichEntries(RichHeaderSize, richHeaderPtr,&PeFileRichHeader);
RichFound = TRUE;
}
@@ -450,16 +450,16 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * Sectio
ShowMessages("\n===============================================================================\n");
ShowMessages(" RICH HEADER \n");
ShowMessages("===============================================================================\n");
- ShowMessages("Entries: %d\n\n", PeFileRichHeaderInfo->Entries);
+ ShowMessages("Entries: %d\n\n", PeFileRichHeaderInfo.Entries);
ShowMessages("%-10s %-10s %-10s\n", "Build ID", "Prod ID", "Use Count");
ShowMessages("---------------------------------------\n");
- for (int i = 0; i < PeFileRichHeaderInfo->Entries; i++)
+ for (int i = 0; i < PeFileRichHeaderInfo.Entries; i++)
{
ShowMessages("0x%08X 0x%08X %10d\n",
- PeFileRichHeader->Entries[i].BuildID,
- PeFileRichHeader->Entries[i].ProdID,
- PeFileRichHeader->Entries[i].UseCount);
+ PeFileRichHeader.Entries[i].BuildID,
+ PeFileRichHeader.Entries[i].ProdID,
+ PeFileRichHeader.Entries[i].UseCount);
}
ShowMessages("==============Rich Header End ==================\n");
From 6cb90d80d71932a953734956ac4ec253d14c7921 Mon Sep 17 00:00:00 2001
From: alish14
Date: Sat, 9 Aug 2025 08:02:04 +0330
Subject: [PATCH 017/323] fix initializing format
---
.../code/debugger/user-level/pe-parser.cpp | 20 ++-----------------
1 file changed, 2 insertions(+), 18 deletions(-)
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index 01485f30..0c92ca1e 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -11,23 +11,7 @@
*/
#include "pch.h"
-/**
- * @brief Global structure containing Rich header metadata and buffer information
- *
- * Contains the size of the Rich header, pointer to the decrypted buffer,
- * and the number of tool entries found in the header.
- */
-//RICH_HEADER_INFO PeFileRichHeaderInfo = {0};
-
-/**
- * @brief Global structure containing the parsed Rich header entries
- *
- * Holds an array of individual Rich header entries, each containing
- * product ID, build ID, and usage count for compilation tools.
- */
-//RICH_HEADER PeFileRichHeader = {0};
-
-/**
+ /**
* @brief Locates the Rich header signature in a PE file
*
* The Rich header is an undocumented Microsoft structure embedded in PE files
@@ -321,7 +305,7 @@ BOOLEAN
PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * SectionToShow, BOOLEAN Is32Bit)
{
RICH_HEADER_INFO PeFileRichHeaderInfo{ 0 };
- RICH_HEADER PeFileRichHeader = {0};
+ RICH_HEADER PeFileRichHeader {0};
BOOLEAN Result = FALSE, RichFound = FALSE;
HANDLE MapObjectHandle, FileHandle; // File Mapping Object
UINT32 NumberOfSections; // Number of sections
From faadc9272d7be0fd7a794a73510739324a2712b7 Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 9 Aug 2025 14:59:00 +0200
Subject: [PATCH 018/323] refactor PE parser codes
---
.../code/debugger/user-level/pe-parser.cpp | 29 +++++++++++--------
hyperdbg/libhyperdbg/header/pe-parser.h | 11 +++++--
2 files changed, 25 insertions(+), 15 deletions(-)
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index 0c92ca1e..b27a1d56 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -11,7 +11,7 @@
*/
#include "pch.h"
- /**
+/**
* @brief Locates the Rich header signature in a PE file
*
* The Rich header is an undocumented Microsoft structure embedded in PE files
@@ -86,8 +86,11 @@ FindRichHeader(PIMAGE_DOS_HEADER DosHeader, CHAR Key[])
* @note Each entry represents one compilation tool (compiler, linker, assembler, etc.)
*
*/
-void
-FindRichEntries(CHAR * RichHeaderPtr, INT RichHeaderSize, CHAR Key[],PRICH_HEADER_INFO PeFileRichHeaderInfo)
+VOID
+FindRichEntries(CHAR * RichHeaderPtr,
+ INT RichHeaderSize,
+ CHAR Key[],
+ PRICH_HEADER_INFO PeFileRichHeaderInfo)
{
//
// Decrypt the entire Rich header using XOR with the 4-byte key
@@ -133,7 +136,7 @@ FindRichEntries(CHAR * RichHeaderPtr, INT RichHeaderSize, CHAR Key[],PRICH_HEADE
* @warning Assumes the Rich header has been properly decrypted first
*/
VOID
-SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr,PRICH_HEADER PeFileRichHeader )
+SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr, PRICH_HEADER PeFileRichHeader)
{
//
// Start at offset 16 to skip the header metadata, process 8-byte entries
@@ -302,10 +305,12 @@ PeHexDump(CHAR * Ptr, int Size, int SecAddress)
* @return BOOLEAN
*/
BOOLEAN
-PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * SectionToShow, BOOLEAN Is32Bit)
+PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
+ const CHAR * SectionToShow,
+ BOOLEAN Is32Bit)
{
- RICH_HEADER_INFO PeFileRichHeaderInfo{ 0 };
- RICH_HEADER PeFileRichHeader {0};
+ RICH_HEADER_INFO PeFileRichHeaderInfo {0};
+ RICH_HEADER PeFileRichHeader {0};
BOOLEAN Result = FALSE, RichFound = FALSE;
HANDLE MapObjectHandle, FileHandle; // File Mapping Object
UINT32 NumberOfSections; // Number of sections
@@ -322,17 +327,17 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * Sectio
// Open the EXE File
//
FileHandle = CreateFileW(AddressOfFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+
if (FileHandle == INVALID_HANDLE_VALUE)
{
ShowMessages("err, could not open the file specified\n");
return FALSE;
- };
+ }
//
// Mapping Given EXE file to Memory
//
- MapObjectHandle =
- CreateFileMapping(FileHandle, NULL, PAGE_READONLY, 0, 0, NULL);
+ MapObjectHandle = CreateFileMapping(FileHandle, NULL, PAGE_READONLY, 0, 0, NULL);
if (MapObjectHandle == NULL)
{
@@ -373,10 +378,10 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * Sectio
memcpy(richHeaderPtr, DataPtr + IndexPointer, RichHeaderSize);
delete[] DataPtr;
- FindRichEntries(richHeaderPtr, RichHeaderSize, Key,&PeFileRichHeaderInfo);
+ FindRichEntries(richHeaderPtr, RichHeaderSize, Key, &PeFileRichHeaderInfo);
PeFileRichHeader.Entries = new RICH_HEADER_ENTRY[PeFileRichHeaderInfo.Entries];
- SetRichEntries(RichHeaderSize, richHeaderPtr,&PeFileRichHeader);
+ SetRichEntries(RichHeaderSize, richHeaderPtr, &PeFileRichHeader);
RichFound = TRUE;
}
diff --git a/hyperdbg/libhyperdbg/header/pe-parser.h b/hyperdbg/libhyperdbg/header/pe-parser.h
index baae3462..cef4403e 100644
--- a/hyperdbg/libhyperdbg/header/pe-parser.h
+++ b/hyperdbg/libhyperdbg/header/pe-parser.h
@@ -39,7 +39,9 @@ typedef struct _RICH_HEADER
//////////////////////////////////////////////////
BOOLEAN
-PeShowSectionInformationAndDump(const WCHAR * AddressOfFile, const CHAR * SectionToShow, BOOLEAN Is32Bit);
+PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
+ const CHAR * SectionToShow,
+ BOOLEAN Is32Bit);
BOOLEAN
PeIsPE32BitOr64Bit(const WCHAR * AddressOfFile, PBOOLEAN Is32Bit);
@@ -51,10 +53,13 @@ INT
FindRichHeader(PIMAGE_DOS_HEADER DosHeader, CHAR Key[]);
VOID
-SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr,RICH_HEADER_ENTRY * PeFileRichHeader);
+SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr, PRICH_HEADER PeFileRichHeader);
VOID
-FindRichEntries(CHAR * RichHeaderPtr, INT RichHeaderSize, CHAR Key[],RICH_HEADER_INFO * RichHeaderInfo);
+FindRichEntries(CHAR * RichHeaderPtr,
+ INT RichHeaderSize,
+ CHAR Key[],
+ PRICH_HEADER_INFO PeFileRichHeaderInfo);
INT
DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr);
From 00c0add449c097b6d6d7d356e74b543715d1b6f2 Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 9 Aug 2025 23:45:40 +0200
Subject: [PATCH 019/323] Restore XMM registers before VMXOFF
---
.../code/assembly/AsmVmexitHandler.asm | 60 +++++++++++--------
hyperdbg/hyperhv/code/vmm/vmx/Vmx.c | 14 +++++
hyperdbg/hyperhv/header/assembly/InlineAsm.h | 8 ++-
3 files changed, 56 insertions(+), 26 deletions(-)
diff --git a/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm b/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
index bd821e9b..9d62847b 100644
--- a/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
+++ b/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
@@ -1,4 +1,5 @@
PUBLIC AsmVmexitHandler
+PUBLIC AsmVmxoffRestoreXmmRegs
EXTERN VmxVmexitHandler:PROC
EXTERN VmxVmresume:PROC
@@ -131,6 +132,35 @@ AsmVmexitHandler ENDP
;------------------------------------------------------------------------
+AsmVmxoffRestoreXmmRegs PROC
+
+ ; ------------ Restore XMM Registers ------------
+
+ movaps xmm0, xmmword ptr [rcx+000h]
+ movaps xmm1, xmmword ptr [rcx+010h]
+ movaps xmm2, xmmword ptr [rcx+020h]
+ movaps xmm3, xmmword ptr [rcx+030h]
+ movaps xmm4, xmmword ptr [rcx+040h]
+ movaps xmm5, xmmword ptr [rcx+050h]
+ movaps xmm6, xmmword ptr [rcx+060h]
+ movaps xmm7, xmmword ptr [rcx+070h]
+ movaps xmm8, xmmword ptr [rcx+080h]
+ movaps xmm9, xmmword ptr [rcx+090h]
+ movaps xmm10, xmmword ptr [rcx+0a0h]
+ movaps xmm11, xmmword ptr [rcx+0b0h]
+ movaps xmm12, xmmword ptr [rcx+0c0h]
+ movaps xmm13, xmmword ptr [rcx+0d0h]
+ movaps xmm14, xmmword ptr [rcx+0e0h]
+ movaps xmm15, xmmword ptr [rcx+0f0h]
+
+ ldmxcsr dword ptr [rcx+0100h]
+
+ ret
+
+AsmVmxoffRestoreXmmRegs ENDP
+
+;------------------------------------------------------------------------
+
AsmVmxoffHandler PROC
; ------ Restore General-purpose Registers ------
@@ -154,32 +184,12 @@ RestoreState:
pop r14
pop r15
- ; ------------ Restore XMM Registers ------------
+ ; ------------- Pass over XMM Regs -------------
- movaps xmm0, xmmword ptr [rsp+000h]
- movaps xmm1, xmmword ptr [rsp+010h]
- movaps xmm2, xmmword ptr [rsp+020h]
- movaps xmm3, xmmword ptr [rsp+030h]
- movaps xmm4, xmmword ptr [rsp+040h]
- movaps xmm5, xmmword ptr [rsp+050h]
- movaps xmm6, xmmword ptr [rsp+060h]
- movaps xmm7, xmmword ptr [rsp+070h]
- movaps xmm8, xmmword ptr [rsp+080h]
- movaps xmm9, xmmword ptr [rsp+090h]
- movaps xmm10, xmmword ptr [rsp+0a0h]
- movaps xmm11, xmmword ptr [rsp+0b0h]
- movaps xmm12, xmmword ptr [rsp+0c0h]
- movaps xmm13, xmmword ptr [rsp+0d0h]
- movaps xmm14, xmmword ptr [rsp+0e0h]
- movaps xmm15, xmmword ptr [rsp+0f0h]
-
- ldmxcsr dword ptr [rsp+0100h]
-
- add rsp, 0110h
-
- ; --------------- Restore RFLAGS ---------------
-
- popfq ; Restore the flags register (RFLAGS)
+ ; XMM registers are restored by AsmVmxoffRestoreXmmRegs
+ ; Size of XMM registers are 110 bytes but we also remove the RFLAGS register (+8)
+ ; so we have 118 bytes to remove from the stack
+ add rsp, 0118h
; ------------ Get Stack Pointer ---------------
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
index 939242f6..d17558b5 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
@@ -1156,6 +1156,15 @@ VmxVmxoff(VIRTUAL_MACHINE_STATE * VCpu)
//
HvRestoreRegisters();
+ //
+ // Restore XMM registers
+ // We restore XMM registers here because we are going to execute vmxoff instruction
+ // which enables interrupts and we don't want to lose the XMM registers
+ // since immediately after vmxoff, an interrupt might occur and context switch
+ // might change the XMM registers
+ //
+ AsmVmxoffRestoreXmmRegs((unsigned long long)VCpu->XmmRegs);
+
//
// Before using vmxoff, you first need to use vmclear on any VMCSes that you want to be able to use again.
// See sections 24.1 and 24.11 of the SDM.
@@ -1167,6 +1176,11 @@ VmxVmxoff(VIRTUAL_MACHINE_STATE * VCpu)
//
__vmx_off();
+ //
+ // *** Note: After executing VMXOFF, XMM registers should not be used anymore
+ // Since we already restored them ***
+ //
+
//
// Indicate the current core is not currently virtualized
//
diff --git a/hyperdbg/hyperhv/header/assembly/InlineAsm.h b/hyperdbg/hyperhv/header/assembly/InlineAsm.h
index b1ec773d..464de5ec 100644
--- a/hyperdbg/hyperhv/header/assembly/InlineAsm.h
+++ b/hyperdbg/hyperhv/header/assembly/InlineAsm.h
@@ -97,6 +97,12 @@ AsmVmexitHandler();
*/
extern void inline AsmSaveVmxOffState();
+/**
+ * @brief Restore XMM registers
+ *
+ */
+extern void inline AsmVmxoffRestoreXmmRegs(unsigned long long XmmRegs);
+
//
// ==================== Extended Page Tables ====================
// File : AsmEpt.asm
@@ -143,7 +149,7 @@ AsmGetCs();
extern unsigned short
AsmGetDs();
-extern void
+extern void
AsmSetDs(unsigned short DsSelector);
/**
From cdadcfaded6b02c5711da6a49de7a510d3eaf0cd Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 14 Aug 2025 12:21:53 +0200
Subject: [PATCH 020/323] add CET emulation for syscall extension command
---
hyperdbg/hyperhv/code/assembly/AsmCommon.asm | 28 +++++++++++++++++++
.../code/hooks/syscall-hook/EferHook.c | 16 +++++++++++
hyperdbg/hyperhv/header/assembly/InlineAsm.h | 15 ++++++++++
3 files changed, 59 insertions(+)
diff --git a/hyperdbg/hyperhv/code/assembly/AsmCommon.asm b/hyperdbg/hyperhv/code/assembly/AsmCommon.asm
index 58b0b711..5ce00f1d 100644
--- a/hyperdbg/hyperhv/code/assembly/AsmCommon.asm
+++ b/hyperdbg/hyperhv/code/assembly/AsmCommon.asm
@@ -68,4 +68,32 @@ AsmReloadIdtr ENDP
;------------------------------------------------------------------------
+; AsmWriteSsp (void * AddressToWriteIntoSsp );
+
+AsmWriteSsp PROC
+
+ ; Use RSTORSSP instruction to restore SSP from memory pointed by RCX
+ rstorssp qword ptr [rcx] ; Restores SSP from the address in RCX
+
+ ; Return from the function (uses the return address in SSP)
+ ret
+
+AsmWriteSsp ENDP
+
+;------------------------------------------------------------------------
+
+; AsmReadSsp ( );
+
+AsmReadSsp PROC
+
+ ; Save the current SSP to a memory location
+ RDSSPQ rax ; Save SSP to memory at the current location (stack pointer)
+
+ ; Return from the function
+ ret
+
+AsmReadSsp ENDP
+
+;------------------------------------------------------------------------
+
END
\ No newline at end of file
diff --git a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
index 5702a2d9..33f9593a 100644
--- a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
+++ b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
@@ -119,6 +119,8 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
UINT64 MsrValue;
UINT64 GuestRip;
UINT64 GuestRflags;
+ UINT64 Ssp;
+ UINT64 ZeroSsp = NULL64_ZERO;
//
// Reading guest's RIP
@@ -152,6 +154,13 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
GuestRflags &= ~(MsrValue | X86_FLAGS_RF);
__vmx_vmwrite(VMCS_GUEST_RFLAGS, GuestRflags);
+ //
+ // Peform emulation of Intel CET (Shadow stacks)
+ //
+ Ssp = AsmReadSsp();
+ __writemsr(IA32_PL3_SSP, Ssp);
+ AsmWriteSsp(&ZeroSsp); // Fill SSP by zero
+
//
// Load the CS and SS selectors with values derived from bits 47:32 of IA32_STAR
//
@@ -185,6 +194,7 @@ SyscallHookEmulateSYSRET(VIRTUAL_MACHINE_STATE * VCpu)
UINT64 MsrValue;
UINT64 GuestRip;
UINT64 GuestRflags;
+ UINT64 Ssp;
//
// Load RIP from RCX
@@ -198,6 +208,12 @@ SyscallHookEmulateSYSRET(VIRTUAL_MACHINE_STATE * VCpu)
GuestRflags = (VCpu->Regs->r11 & ~(X86_FLAGS_RF | X86_FLAGS_VM | X86_FLAGS_RESERVED_BITS)) | X86_FLAGS_FIXED;
__vmx_vmwrite(VMCS_GUEST_RFLAGS, GuestRflags);
+ //
+ // Restore user-mode SPP
+ //
+ Ssp = __readmsr(IA32_PL3_SSP);
+ AsmWriteSsp(&Ssp);
+
//
// SYSRET loads the CS and SS selectors with values derived from bits 63:48 of IA32_STAR
//
diff --git a/hyperdbg/hyperhv/header/assembly/InlineAsm.h b/hyperdbg/hyperhv/header/assembly/InlineAsm.h
index 464de5ec..cee03616 100644
--- a/hyperdbg/hyperhv/header/assembly/InlineAsm.h
+++ b/hyperdbg/hyperhv/header/assembly/InlineAsm.h
@@ -288,6 +288,21 @@ AsmReloadGdtr(void * GdtBase, unsigned long GdtLimit);
extern void
AsmReloadIdtr(void * GdtBase, unsigned long GdtLimit);
+/**
+ * @brief Write SSP
+ *
+ * @param AddressToWriteIntoSsp
+ */
+extern void
+AsmWriteSsp(void * AddressToWriteIntoSsp);
+
+/**
+ * @brief Read SSP
+ *
+ */
+extern unsigned long long
+AsmReadSsp();
+
//
// ==================== Hook Functions ====================
// File : AsmHooks.asm
From 360b0e58635134cdc55e1209c0f1ab416ae7180b Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 17 Aug 2025 13:51:32 +0200
Subject: [PATCH 021/323] support CET SYSCALL emulation on VMCS
---
hyperdbg/hyperhv/code/assembly/AsmCommon.asm | 16 +------------
.../code/hooks/syscall-hook/EferHook.c | 9 +++----
hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c | 1 +
hyperdbg/hyperhv/code/vmm/vmx/Vmx.c | 24 +++++++++++++++----
hyperdbg/hyperhv/header/assembly/InlineAsm.h | 10 +-------
5 files changed, 27 insertions(+), 33 deletions(-)
diff --git a/hyperdbg/hyperhv/code/assembly/AsmCommon.asm b/hyperdbg/hyperhv/code/assembly/AsmCommon.asm
index 5ce00f1d..785e8047 100644
--- a/hyperdbg/hyperhv/code/assembly/AsmCommon.asm
+++ b/hyperdbg/hyperhv/code/assembly/AsmCommon.asm
@@ -68,26 +68,12 @@ AsmReloadIdtr ENDP
;------------------------------------------------------------------------
-; AsmWriteSsp (void * AddressToWriteIntoSsp );
-
-AsmWriteSsp PROC
-
- ; Use RSTORSSP instruction to restore SSP from memory pointed by RCX
- rstorssp qword ptr [rcx] ; Restores SSP from the address in RCX
-
- ; Return from the function (uses the return address in SSP)
- ret
-
-AsmWriteSsp ENDP
-
-;------------------------------------------------------------------------
-
; AsmReadSsp ( );
AsmReadSsp PROC
; Save the current SSP to a memory location
- RDSSPQ rax ; Save SSP to memory at the current location (stack pointer)
+ rdsspq rax ; Save SSP to memory at the current location (stack pointer)
; Return from the function
ret
diff --git a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
index 33f9593a..0151f3b8 100644
--- a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
+++ b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
@@ -110,6 +110,8 @@ SyscallHookConfigureEFER(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN EnableEFERSyscall
* @param VCpu The virtual processor's state
* @return BOOLEAN
*/
+#define VMCS_GUEST_SSP1 0x682a
+
_Use_decl_annotations_
BOOLEAN
SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
@@ -120,7 +122,6 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
UINT64 GuestRip;
UINT64 GuestRflags;
UINT64 Ssp;
- UINT64 ZeroSsp = NULL64_ZERO;
//
// Reading guest's RIP
@@ -157,9 +158,9 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
//
// Peform emulation of Intel CET (Shadow stacks)
//
- Ssp = AsmReadSsp();
+ __vmx_vmread(VMCS_GUEST_SSP1, &Ssp);
__writemsr(IA32_PL3_SSP, Ssp);
- AsmWriteSsp(&ZeroSsp); // Fill SSP by zero
+ __vmx_vmwrite(VMCS_GUEST_SSP1, 0);
//
// Load the CS and SS selectors with values derived from bits 47:32 of IA32_STAR
@@ -212,7 +213,7 @@ SyscallHookEmulateSYSRET(VIRTUAL_MACHINE_STATE * VCpu)
// Restore user-mode SPP
//
Ssp = __readmsr(IA32_PL3_SSP);
- AsmWriteSsp(&Ssp);
+ __vmx_vmwrite(VMCS_GUEST_SSP1, Ssp);
//
// SYSRET loads the CS and SS selectors with values derived from bits 63:48 of IA32_STAR
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
index 584a7c34..09f49490 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
@@ -278,6 +278,7 @@ IdtEmulationhandleHostInterrupt(_Inout_ INTERRUPT_TRAP_FRAME * IntrTrapFrame)
IntrTrapFrame->rsp,
IntrTrapFrame->error,
IntrTrapFrame->vector);
+ DbgBreakPoint();
break;
}
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
index d17558b5..edf287b7 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
@@ -875,8 +875,11 @@ VmxSetupVmcs(VIRTUAL_MACHINE_STATE * VCpu, PVOID GuestStack)
VmxVmwrite64(VMCS_GUEST_FS_BASE, __readmsr(IA32_FS_BASE));
VmxVmwrite64(VMCS_GUEST_GS_BASE, __readmsr(IA32_GS_BASE));
- CpuBasedVmExecControls = HvAdjustControls(CPU_BASED_ACTIVATE_IO_BITMAP | CPU_BASED_ACTIVATE_MSR_BITMAP | CPU_BASED_ACTIVATE_SECONDARY_CONTROLS,
- VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_PROCBASED_CTLS : IA32_VMX_PROCBASED_CTLS);
+ CpuBasedVmExecControls = HvAdjustControls(
+ IA32_VMX_PROCBASED_CTLS_USE_IO_BITMAPS_FLAG |
+ IA32_VMX_PROCBASED_CTLS_USE_MSR_BITMAPS_FLAG |
+ IA32_VMX_PROCBASED_CTLS_ACTIVATE_SECONDARY_CONTROLS_FLAG,
+ VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_PROCBASED_CTLS : IA32_VMX_PROCBASED_CTLS);
VmxVmwrite64(VMCS_CTRL_PROCESSOR_BASED_VM_EXECUTION_CONTROLS, CpuBasedVmExecControls);
@@ -897,11 +900,22 @@ VmxSetupVmcs(VIRTUAL_MACHINE_STATE * VCpu, PVOID GuestStack)
LogDebugInfo("Secondary Proc Based VM Exec Controls (IA32_VMX_PROCBASED_CTLS2) : 0x%x", SecondaryProcBasedVmExecControls);
- VmxVmwrite64(VMCS_CTRL_PIN_BASED_VM_EXECUTION_CONTROLS, HvAdjustControls(0, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_PINBASED_CTLS : IA32_VMX_PINBASED_CTLS));
+ VmxVmwrite64(VMCS_CTRL_PIN_BASED_VM_EXECUTION_CONTROLS,
+ HvAdjustControls(
+ 0,
+ VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_PINBASED_CTLS : IA32_VMX_PINBASED_CTLS));
- VmxVmwrite64(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, HvAdjustControls(VM_EXIT_HOST_ADDR_SPACE_SIZE, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS));
+ VmxVmwrite64(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS,
+ HvAdjustControls(
+ IA32_VMX_EXIT_CTLS_HOST_ADDRESS_SPACE_SIZE_FLAG |
+ IA32_VMX_EXIT_CTLS_LOAD_IA32_CET_STATE_FLAG,
+ VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS));
- VmxVmwrite64(VMCS_CTRL_VMENTRY_CONTROLS, HvAdjustControls(VM_ENTRY_IA32E_MODE, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS));
+ VmxVmwrite64(VMCS_CTRL_VMENTRY_CONTROLS,
+ HvAdjustControls(
+ IA32_VMX_ENTRY_CTLS_IA32E_MODE_GUEST_FLAG |
+ IA32_VMX_ENTRY_CTLS_LOAD_CET_STATE_FLAG,
+ VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS));
VmxVmwrite64(VMCS_CTRL_CR0_GUEST_HOST_MASK, 0);
VmxVmwrite64(VMCS_CTRL_CR4_GUEST_HOST_MASK, 0);
diff --git a/hyperdbg/hyperhv/header/assembly/InlineAsm.h b/hyperdbg/hyperhv/header/assembly/InlineAsm.h
index cee03616..0f73671c 100644
--- a/hyperdbg/hyperhv/header/assembly/InlineAsm.h
+++ b/hyperdbg/hyperhv/header/assembly/InlineAsm.h
@@ -288,17 +288,9 @@ AsmReloadGdtr(void * GdtBase, unsigned long GdtLimit);
extern void
AsmReloadIdtr(void * GdtBase, unsigned long GdtLimit);
-/**
- * @brief Write SSP
- *
- * @param AddressToWriteIntoSsp
- */
-extern void
-AsmWriteSsp(void * AddressToWriteIntoSsp);
-
/**
* @brief Read SSP
- *
+ *
*/
extern unsigned long long
AsmReadSsp();
From 39920ccfa5d58a449286a6f02e4db3b22fc66b3a Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 17 Aug 2025 14:26:38 +0200
Subject: [PATCH 022/323] change VMX headers to IA32doc headers
---
.../code/hooks/syscall-hook/EferHook.c | 8 +-
hyperdbg/hyperhv/code/vmm/ept/Ept.c | 2 +-
hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 36 ++++-----
hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c | 8 +-
hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c | 28 +++----
hyperdbg/hyperhv/header/vmm/vmx/Vmx.h | 77 +------------------
6 files changed, 42 insertions(+), 117 deletions(-)
diff --git a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
index 0151f3b8..b29e00b1 100644
--- a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
+++ b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
@@ -55,12 +55,12 @@ SyscallHookConfigureEFER(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN EnableEFERSyscall
//
// Set VM-Entry controls to load EFER
//
- __vmx_vmwrite(VMCS_CTRL_VMENTRY_CONTROLS, HvAdjustControls(VmEntryControls | VM_ENTRY_LOAD_IA32_EFER, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS));
+ __vmx_vmwrite(VMCS_CTRL_VMENTRY_CONTROLS, HvAdjustControls(VmEntryControls | IA32_VMX_ENTRY_CTLS_LOAD_IA32_EFER_FLAG, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS));
//
// Set VM-Exit controls to save EFER
//
- __vmx_vmwrite(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, HvAdjustControls(VmExitControls | VM_EXIT_SAVE_IA32_EFER, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS));
+ __vmx_vmwrite(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, HvAdjustControls(VmExitControls | IA32_VMX_EXIT_CTLS_SAVE_IA32_EFER_FLAG, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS));
//
// Set the GUEST EFER to use this value as the EFER
@@ -79,12 +79,12 @@ SyscallHookConfigureEFER(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN EnableEFERSyscall
//
// Set VM-Entry controls to load EFER
//
- __vmx_vmwrite(VMCS_CTRL_VMENTRY_CONTROLS, HvAdjustControls(VmEntryControls & ~VM_ENTRY_LOAD_IA32_EFER, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS));
+ __vmx_vmwrite(VMCS_CTRL_VMENTRY_CONTROLS, HvAdjustControls(VmEntryControls & ~IA32_VMX_ENTRY_CTLS_LOAD_IA32_EFER_FLAG, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS));
//
// Set VM-Exit controls to save EFER
//
- __vmx_vmwrite(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, HvAdjustControls(VmExitControls & ~VM_EXIT_SAVE_IA32_EFER, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS));
+ __vmx_vmwrite(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, HvAdjustControls(VmExitControls & ~IA32_VMX_EXIT_CTLS_SAVE_IA32_EFER_FLAG, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS));
//
// Set the GUEST EFER to use this value as the EFER
diff --git a/hyperdbg/hyperhv/code/vmm/ept/Ept.c b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
index a7788721..fc0dfaa0 100644
--- a/hyperdbg/hyperhv/code/vmm/ept/Ept.c
+++ b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
@@ -747,7 +747,7 @@ EptAllocateAndCreateIdentityPageTable(VOID)
__stosq((SIZE_T *)&PageTable->PML3[0], PML3Template.AsUInt, VMM_EPT_PML3E_COUNT);
//
- // Copt the template into each of the 512 PML3 entry slots for the reserved entries
+ // Copy the template into each of the 512 PML3 entry slots for the reserved entries
//
for (size_t i = 0; i < VMM_EPT_PML4E_COUNT - 1; i++)
{
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
index 00d134da..bf9b4971 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
@@ -353,11 +353,11 @@ HvSetMonitorTrapFlag(BOOLEAN Set)
if (Set)
{
- CpuBasedVmExecControls |= CPU_BASED_MONITOR_TRAP_FLAG;
+ CpuBasedVmExecControls |= IA32_VMX_PROCBASED_CTLS_MONITOR_TRAP_FLAG_FLAG;
}
else
{
- CpuBasedVmExecControls &= ~CPU_BASED_MONITOR_TRAP_FLAG;
+ CpuBasedVmExecControls &= ~IA32_VMX_PROCBASED_CTLS_MONITOR_TRAP_FLAG_FLAG;
}
//
@@ -406,11 +406,11 @@ HvSetLoadDebugControls(BOOLEAN Set)
if (Set)
{
- VmentryControls |= VM_ENTRY_LOAD_DEBUG_CONTROLS;
+ VmentryControls |= IA32_VMX_ENTRY_CTLS_LOAD_DEBUG_CONTROLS_FLAG;
}
else
{
- VmentryControls &= ~VM_ENTRY_LOAD_DEBUG_CONTROLS;
+ VmentryControls &= ~IA32_VMX_ENTRY_CTLS_LOAD_DEBUG_CONTROLS_FLAG;
}
//
@@ -437,11 +437,11 @@ HvSetSaveDebugControls(BOOLEAN Set)
if (Set)
{
- VmexitControls |= VM_EXIT_SAVE_DEBUG_CONTROLS;
+ VmexitControls |= IA32_VMX_EXIT_CTLS_SAVE_DEBUG_CONTROLS_FLAG;
}
else
{
- VmexitControls &= ~VM_EXIT_SAVE_DEBUG_CONTROLS;
+ VmexitControls &= ~IA32_VMX_EXIT_CTLS_SAVE_DEBUG_CONTROLS_FLAG;
}
//
@@ -529,11 +529,11 @@ HvSetPmcVmexit(BOOLEAN Set)
if (Set)
{
- CpuBasedVmExecControls |= CPU_BASED_RDPMC_EXITING;
+ CpuBasedVmExecControls |= IA32_VMX_PROCBASED_CTLS_RDPMC_EXITING_FLAG;
}
else
{
- CpuBasedVmExecControls &= ~CPU_BASED_RDPMC_EXITING;
+ CpuBasedVmExecControls &= ~IA32_VMX_PROCBASED_CTLS_RDPMC_EXITING_FLAG;
}
//
@@ -629,11 +629,11 @@ HvSetInterruptWindowExiting(BOOLEAN Set)
//
if (Set)
{
- CpuBasedVmExecControls |= CPU_BASED_VIRTUAL_INTR_PENDING;
+ CpuBasedVmExecControls |= IA32_VMX_PROCBASED_CTLS_INTERRUPT_WINDOW_EXITING_FLAG;
}
else
{
- CpuBasedVmExecControls &= ~CPU_BASED_VIRTUAL_INTR_PENDING;
+ CpuBasedVmExecControls &= ~IA32_VMX_PROCBASED_CTLS_INTERRUPT_WINDOW_EXITING_FLAG;
}
//
@@ -737,11 +737,11 @@ HvSetNmiWindowExiting(BOOLEAN Set)
//
if (Set)
{
- CpuBasedVmExecControls |= CPU_BASED_VIRTUAL_NMI_PENDING;
+ CpuBasedVmExecControls |= IA32_VMX_PROCBASED_CTLS_NMI_WINDOW_EXITING_FLAG;
}
else
{
- CpuBasedVmExecControls &= ~CPU_BASED_VIRTUAL_NMI_PENDING;
+ CpuBasedVmExecControls &= ~IA32_VMX_PROCBASED_CTLS_NMI_WINDOW_EXITING_FLAG;
}
//
@@ -978,13 +978,13 @@ HvSetNmiExiting(BOOLEAN Set)
if (Set)
{
- PinBasedControls |= PIN_BASED_VM_EXECUTION_CONTROLS_NMI_EXITING;
- VmExitControls |= VM_EXIT_ACK_INTR_ON_EXIT;
+ PinBasedControls |= IA32_VMX_PINBASED_CTLS_NMI_EXITING_FLAG;
+ VmExitControls |= IA32_VMX_EXIT_CTLS_ACKNOWLEDGE_INTERRUPT_ON_EXIT_FLAG;
}
else
{
- PinBasedControls &= ~PIN_BASED_VM_EXECUTION_CONTROLS_NMI_EXITING;
- VmExitControls &= ~VM_EXIT_ACK_INTR_ON_EXIT;
+ PinBasedControls &= ~IA32_VMX_PINBASED_CTLS_NMI_EXITING_FLAG;
+ VmExitControls &= ~IA32_VMX_EXIT_CTLS_ACKNOWLEDGE_INTERRUPT_ON_EXIT_FLAG;
}
//
@@ -1012,11 +1012,11 @@ HvSetVmxPreemptionTimerExiting(BOOLEAN Set)
if (Set)
{
- PinBasedControls |= PIN_BASED_VM_EXECUTION_CONTROLS_ACTIVE_VMX_TIMER;
+ PinBasedControls |= IA32_VMX_PINBASED_CTLS_ACTIVATE_VMX_PREEMPTION_TIMER_FLAG;
}
else
{
- PinBasedControls &= ~PIN_BASED_VM_EXECUTION_CONTROLS_ACTIVE_VMX_TIMER;
+ PinBasedControls &= ~IA32_VMX_PINBASED_CTLS_ACTIVATE_VMX_PREEMPTION_TIMER_FLAG;
}
//
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
index 09f49490..c652c0bf 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
@@ -517,11 +517,11 @@ IdtEmulationHandleExternalInterrupt(_Inout_ VIRTUAL_MACHINE_STATE * VCpu,
//
// In order to enable External Interrupt Exiting we have to set
- // PIN_BASED_VM_EXECUTION_CONTROLS_EXTERNAL_INTERRUPT in vmx
+ // IA32_VMX_PINBASED_CTLS_EXTERNAL_INTERRUPT_EXITING_FLAG in vmx
// pin-based controls (PIN_BASED_VM_EXEC_CONTROL) and also
- // we should enable VM_EXIT_ACK_INTR_ON_EXIT on vmx vm-exit
- // controls (VMCS_CTRL_VMEXIT_CONTROLS), also this function might not
- // always be successful if the guest is not in the interruptible
+ // we should enable IA32_VMX_EXIT_CTLS_ACKNOWLEDGE_INTERRUPT_ON_EXIT_FLAG
+ // on vmx vm-exit controls (VMCS_CTRL_VMEXIT_CONTROLS), also this function
+ // might not always be successful if the guest is not in the interruptible
// state so it wait for and interrupt-window exiting to re-inject
// the interrupt into the guest
//
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c b/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c
index 84e61d1c..07882bf5 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c
@@ -215,11 +215,11 @@ ProtectedHvApplySetExternalInterruptExiting(VIRTUAL_MACHINE_STATE * VCpu, BOOLEA
//
// In order to enable External Interrupt Exiting we have to set
- // PIN_BASED_VM_EXECUTION_CONTROLS_EXTERNAL_INTERRUPT in vmx
+ // IA32_VMX_PINBASED_CTLS_EXTERNAL_INTERRUPT_EXITING_FLAG in vmx
// pin-based controls (PIN_BASED_VM_EXEC_CONTROL) and also
- // we should enable VM_EXIT_ACK_INTR_ON_EXIT on vmx vm-exit
- // controls (VMCS_CTRL_VMEXIT_CONTROLS), also this function might not
- // always be successful if the guest is not in the interruptible
+ // we should enable IA32_VMX_EXIT_CTLS_ACKNOWLEDGE_INTERRUPT_ON_EXIT_FLAG
+ // on vmx vm-exit controls (VMCS_CTRL_VMEXIT_CONTROLS), also this function
+ // might not always be successful if the guest is not in the interruptible
// state so it wait for and interrupt-window exiting to re-inject
// the interrupt into the guest
//
@@ -232,13 +232,13 @@ ProtectedHvApplySetExternalInterruptExiting(VIRTUAL_MACHINE_STATE * VCpu, BOOLEA
if (Set)
{
- PinBasedControls |= PIN_BASED_VM_EXECUTION_CONTROLS_EXTERNAL_INTERRUPT;
- VmExitControls |= VM_EXIT_ACK_INTR_ON_EXIT;
+ PinBasedControls |= IA32_VMX_PINBASED_CTLS_EXTERNAL_INTERRUPT_EXITING_FLAG;
+ VmExitControls |= IA32_VMX_EXIT_CTLS_ACKNOWLEDGE_INTERRUPT_ON_EXIT_FLAG;
}
else
{
- PinBasedControls &= ~PIN_BASED_VM_EXECUTION_CONTROLS_EXTERNAL_INTERRUPT;
- VmExitControls &= ~VM_EXIT_ACK_INTR_ON_EXIT;
+ PinBasedControls &= ~IA32_VMX_PINBASED_CTLS_EXTERNAL_INTERRUPT_EXITING_FLAG;
+ VmExitControls &= ~IA32_VMX_EXIT_CTLS_ACKNOWLEDGE_INTERRUPT_ON_EXIT_FLAG;
}
//
@@ -314,11 +314,11 @@ ProtectedHvSetTscVmexit(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set, PROTECTED_HV_
if (Set)
{
- CpuBasedVmExecControls |= CPU_BASED_RDTSC_EXITING;
+ CpuBasedVmExecControls |= IA32_VMX_PROCBASED_CTLS_RDTSC_EXITING_FLAG;
}
else
{
- CpuBasedVmExecControls &= ~CPU_BASED_RDTSC_EXITING;
+ CpuBasedVmExecControls &= ~IA32_VMX_PROCBASED_CTLS_RDTSC_EXITING_FLAG;
}
//
// Set the new value
@@ -368,11 +368,11 @@ ProtectedHvSetMovDebugRegsVmexit(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set, PROT
if (Set)
{
- CpuBasedVmExecControls |= CPU_BASED_MOV_DR_EXITING;
+ CpuBasedVmExecControls |= IA32_VMX_PROCBASED_CTLS_MOV_DR_EXITING_FLAG;
}
else
{
- CpuBasedVmExecControls &= ~CPU_BASED_MOV_DR_EXITING;
+ CpuBasedVmExecControls &= ~IA32_VMX_PROCBASED_CTLS_MOV_DR_EXITING_FLAG;
}
//
@@ -513,11 +513,11 @@ ProtectedHvSetMovToCr3Vmexit(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set, PROTECTE
if (Set)
{
- CpuBasedVmExecControls |= CPU_BASED_CR3_LOAD_EXITING;
+ CpuBasedVmExecControls |= IA32_VMX_PROCBASED_CTLS_CR3_LOAD_EXITING_FLAG;
}
else
{
- CpuBasedVmExecControls &= ~CPU_BASED_CR3_LOAD_EXITING;
+ CpuBasedVmExecControls &= ~IA32_VMX_PROCBASED_CTLS_CR3_LOAD_EXITING_FLAG;
}
//
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h b/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h
index f116a9e9..41ab2a2d 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h
@@ -27,81 +27,6 @@
*/
#define VMXON_SIZE 4096
-/**
- * @brief PIN-Based Execution
- *
- */
-#define PIN_BASED_VM_EXECUTION_CONTROLS_EXTERNAL_INTERRUPT 0x00000001
-#define PIN_BASED_VM_EXECUTION_CONTROLS_NMI_EXITING 0x00000008
-#define PIN_BASED_VM_EXECUTION_CONTROLS_VIRTUAL_NMI 0x00000020
-#define PIN_BASED_VM_EXECUTION_CONTROLS_ACTIVE_VMX_TIMER 0x00000040
-#define PIN_BASED_VM_EXECUTION_CONTROLS_PROCESS_POSTED_INTERRUPTS 0x00000080
-
-/**
- * @brief CPU-Based Controls
- *
- */
-#define CPU_BASED_VIRTUAL_INTR_PENDING 0x00000004
-#define CPU_BASED_USE_TSC_OFFSETTING 0x00000008
-#define CPU_BASED_HLT_EXITING 0x00000080
-#define CPU_BASED_INVLPG_EXITING 0x00000200
-#define CPU_BASED_MWAIT_EXITING 0x00000400
-#define CPU_BASED_RDPMC_EXITING 0x00000800
-#define CPU_BASED_RDTSC_EXITING 0x00001000
-#define CPU_BASED_CR3_LOAD_EXITING 0x00008000
-#define CPU_BASED_CR3_STORE_EXITING 0x00010000
-#define CPU_BASED_CR8_LOAD_EXITING 0x00080000
-#define CPU_BASED_CR8_STORE_EXITING 0x00100000
-#define CPU_BASED_TPR_SHADOW 0x00200000
-#define CPU_BASED_VIRTUAL_NMI_PENDING 0x00400000
-#define CPU_BASED_MOV_DR_EXITING 0x00800000
-#define CPU_BASED_UNCOND_IO_EXITING 0x01000000
-#define CPU_BASED_ACTIVATE_IO_BITMAP 0x02000000
-#define CPU_BASED_MONITOR_TRAP_FLAG 0x08000000
-#define CPU_BASED_ACTIVATE_MSR_BITMAP 0x10000000
-#define CPU_BASED_MONITOR_EXITING 0x20000000
-#define CPU_BASED_PAUSE_EXITING 0x40000000
-#define CPU_BASED_ACTIVATE_SECONDARY_CONTROLS 0x80000000
-
-/**
- * @brief Secondary CPU-Based Controls
- *
- */
-#define CPU_BASED_CTL2_ENABLE_EPT 0x2
-#define CPU_BASED_CTL2_RDTSCP 0x8
-#define CPU_BASED_CTL2_ENABLE_VPID 0x20
-#define CPU_BASED_CTL2_UNRESTRICTED_GUEST 0x80
-#define CPU_BASED_CTL2_VIRTUAL_INTERRUPT_DELIVERY 0x200
-#define CPU_BASED_CTL2_ENABLE_INVPCID 0x1000
-#define CPU_BASED_CTL2_ENABLE_VMFUNC 0x2000
-#define CPU_BASED_CTL2_ENABLE_XSAVE_XRSTORS 0x100000
-
-/**
- * @brief VM-exit Control Bits
- *
- */
-#define VM_EXIT_SAVE_DEBUG_CONTROLS 0x00000004
-#define VM_EXIT_HOST_ADDR_SPACE_SIZE 0x00000200
-#define VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL 0x00001000
-#define VM_EXIT_ACK_INTR_ON_EXIT 0x00008000
-#define VM_EXIT_SAVE_IA32_PAT 0x00040000
-#define VM_EXIT_LOAD_IA32_PAT 0x00080000
-#define VM_EXIT_SAVE_IA32_EFER 0x00100000
-#define VM_EXIT_LOAD_IA32_EFER 0x00200000
-#define VM_EXIT_SAVE_VMX_PREEMPTION_TIMER 0x00400000
-
-/**
- * @brief VM-entry Control Bits
- *
- */
-#define VM_ENTRY_LOAD_DEBUG_CONTROLS 0x00000004
-#define VM_ENTRY_IA32E_MODE 0x00000200
-#define VM_ENTRY_SMM 0x00000400
-#define VM_ENTRY_DEACT_DUAL_MONITOR 0x00000800
-#define VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL 0x00002000
-#define VM_ENTRY_LOAD_IA32_PAT 0x00004000
-#define VM_ENTRY_LOAD_IA32_EFER 0x00008000
-
/**
* @brief CPUID RCX(s) - Based on Hyper-V
*
@@ -425,4 +350,4 @@ VmxCompatibleMemcmp(const CHAR * Address1,
size_t Count);
VOID
-VmxCompatibleMicroSleep(UINT64 ns);
\ No newline at end of file
+VmxCompatibleMicroSleep(UINT64 ns);
From fae3290ec1a7be8274ae4dd5729c663da9874eaf Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 17 Aug 2025 16:14:11 +0200
Subject: [PATCH 023/323] remove the ia32-doc dependencies
---
.gitmodules | 3 ---
hyperdbg/dependencies/ia32-doc | 1 -
2 files changed, 4 deletions(-)
delete mode 160000 hyperdbg/dependencies/ia32-doc
diff --git a/.gitmodules b/.gitmodules
index 377dd15f..62cc06d0 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
-[submodule "hyperdbg/dependencies/ia32-doc"]
- path = hyperdbg/dependencies/ia32-doc
- url = https://github.com/HyperDbg/ia32-doc.git
[submodule "hyperdbg/dependencies/zydis"]
path = hyperdbg/dependencies/zydis
url = https://github.com/HyperDbg/zydis.git
diff --git a/hyperdbg/dependencies/ia32-doc b/hyperdbg/dependencies/ia32-doc
deleted file mode 160000
index 6ef251e3..00000000
--- a/hyperdbg/dependencies/ia32-doc
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 6ef251e3e58c759fda025c186ef0f44c556c14c1
From ece94e748fb10dd725607022ca8cf460691b20e8 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 17 Aug 2025 16:17:16 +0200
Subject: [PATCH 024/323] update ia32-doc submodule to update the correct value
for VMCS PL3 SSP
---
.gitmodules | 3 +++
hyperdbg/dependencies/ia32-doc | 1 +
hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c | 8 +++-----
3 files changed, 7 insertions(+), 5 deletions(-)
create mode 160000 hyperdbg/dependencies/ia32-doc
diff --git a/.gitmodules b/.gitmodules
index 62cc06d0..b28c2459 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -10,3 +10,6 @@
[submodule "hyperdbg/miscellaneous/constants/pciid"]
path = hyperdbg/miscellaneous/constants/pciid
url = https://github.com/HyperDbg/pciids
+[submodule "hyperdbg/dependencies/ia32-doc"]
+ path = hyperdbg/dependencies/ia32-doc
+ url = https://github.com/HyperDbg/ia32-doc.git
diff --git a/hyperdbg/dependencies/ia32-doc b/hyperdbg/dependencies/ia32-doc
new file mode 160000
index 00000000..2bc5284e
--- /dev/null
+++ b/hyperdbg/dependencies/ia32-doc
@@ -0,0 +1 @@
+Subproject commit 2bc5284e04ff862220def160517bc72baf3d1a03
diff --git a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
index b29e00b1..d533f149 100644
--- a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
+++ b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
@@ -110,8 +110,6 @@ SyscallHookConfigureEFER(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN EnableEFERSyscall
* @param VCpu The virtual processor's state
* @return BOOLEAN
*/
-#define VMCS_GUEST_SSP1 0x682a
-
_Use_decl_annotations_
BOOLEAN
SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
@@ -158,9 +156,9 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
//
// Peform emulation of Intel CET (Shadow stacks)
//
- __vmx_vmread(VMCS_GUEST_SSP1, &Ssp);
+ __vmx_vmread(VMCS_GUEST_SSP, &Ssp);
__writemsr(IA32_PL3_SSP, Ssp);
- __vmx_vmwrite(VMCS_GUEST_SSP1, 0);
+ __vmx_vmwrite(VMCS_GUEST_SSP, 0);
//
// Load the CS and SS selectors with values derived from bits 47:32 of IA32_STAR
@@ -213,7 +211,7 @@ SyscallHookEmulateSYSRET(VIRTUAL_MACHINE_STATE * VCpu)
// Restore user-mode SPP
//
Ssp = __readmsr(IA32_PL3_SSP);
- __vmx_vmwrite(VMCS_GUEST_SSP1, Ssp);
+ __vmx_vmwrite(VMCS_GUEST_SSP, Ssp);
//
// SYSRET loads the CS and SS selectors with values derived from bits 63:48 of IA32_STAR
From 61d45c518d56b111e95714d6e9a58493e87cae8d Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 17 Aug 2025 16:25:02 +0200
Subject: [PATCH 025/323] move pool allocations to a single function
---
CHANGELOG.md | 3 +-
.../hyperhv/code/hooks/ept-hook/EptHook.c | 49 +++++++------------
hyperdbg/hyperhv/code/vmm/ept/Ept.c | 39 +++++++--------
hyperdbg/hyperhv/header/vmm/ept/Ept.h | 6 +--
.../code/debugger/core/debugger.cpp | 3 +-
5 files changed, 42 insertions(+), 58 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f19be5e1..517e8883 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@ New release of the HyperDbg Debugger.
### Added
- Added the '!smi' command for performing operations related to System Management Interrupt (SMI) ([link](https://docs.hyperdbg.org/commands/extension-commands/smi))
- Export the SDK functions for SMI operations ([link](https://docs.hyperdbg.org/commands/extension-commands/smi#sdk))
+- Added support to Intel CET for SYSCALL/SYSRET emulation ([link](https://docs.hyperdbg.org/commands/extension-commands/syscall))
### Changed
- The 'hyperhv' project now has build optimizations enabled
@@ -17,7 +18,7 @@ New release of the HyperDbg Debugger.
- Fix unloading (VMXOFF) crash when restoring XMM registers
- Fix the problem with restoring XMM registers (#468) ([link](https://github.com/HyperDbg/HyperDbg/issues/468))
- Enhanced the '.pe' command to support PE Rich Headers thanks to [@Alish14](https://github.com/Alish14) ([link](https://github.com/HyperDbg/HyperDbg/pull/539))
-
+- Updated ia32-doc to fix VMCS PL3 SSP fields ([link](https://github.com/HyperDbg/ia32-doc))
## [0.14.1.0] - 2025-07-27
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/hyperhv/code/hooks/ept-hook/EptHook.c b/hyperdbg/hyperhv/code/hooks/ept-hook/EptHook.c
index 2a52e020..64370c33 100644
--- a/hyperdbg/hyperhv/code/hooks/ept-hook/EptHook.c
+++ b/hyperdbg/hyperhv/code/hooks/ept-hook/EptHook.c
@@ -150,7 +150,6 @@ EptHookCreateHookPage(_Inout_ VIRTUAL_MACHINE_STATE * VCpu,
EPT_PML1_ENTRY ChangedEntry;
SIZE_T PhysicalBaseAddress;
PVOID VirtualTarget;
- PVOID TargetBuffer;
UINT64 TargetAddressInFakePageContent;
PEPT_PML1_ENTRY TargetPage;
PEPT_HOOKED_PAGE_DETAIL HookedPage;
@@ -278,23 +277,15 @@ EptHookCreateHookPage(_Inout_ VIRTUAL_MACHINE_STATE * VCpu,
for (size_t i = 0; i < ProcessorsCount; i++)
{
//
- // Set target buffer, request buffer from pool manager,
- // we also need to allocate new page to replace the current page
+ // We need to split the large page to 4KB page using pre-allocated pools
//
- TargetBuffer = (PVOID)PoolManagerRequestPool(SPLIT_2MB_PAGING_TO_4KB_PAGE, TRUE, sizeof(VMM_EPT_DYNAMIC_SPLIT));
-
- if (!TargetBuffer)
+ if (!EptSplitLargePage(g_GuestState[i].EptPageTable, TRUE, PhysicalBaseAddress))
{
PoolManagerFreePool((UINT64)HookedPage);
- VmmCallbackSetLastError(DEBUGGER_ERROR_PRE_ALLOCATED_BUFFER_IS_EMPTY);
- return FALSE;
- }
-
- if (!EptSplitLargePage(g_GuestState[i].EptPageTable, TargetBuffer, PhysicalBaseAddress))
- {
- PoolManagerFreePool((UINT64)HookedPage);
- PoolManagerFreePool((UINT64)TargetBuffer); // Here also other previous pools should be specified, but we forget it for now
+ //
+ // Here also other previous pools should be specified, but we forget it for now
+ //
LogDebugInfo("Err, could not split page for the address : 0x%llx", PhysicalBaseAddress);
VmmCallbackSetLastError(DEBUGGER_ERROR_EPT_COULD_NOT_SPLIT_THE_LARGE_PAGE_TO_4KB_PAGES);
@@ -312,7 +303,10 @@ EptHookCreateHookPage(_Inout_ VIRTUAL_MACHINE_STATE * VCpu,
if (!TargetPage)
{
PoolManagerFreePool((UINT64)HookedPage);
- PoolManagerFreePool((UINT64)TargetBuffer); // Here also other previous pools should be specified, but we forget it for now
+
+ //
+ // Here also other previous pools should be specified, but we forget it for now
+ //
VmmCallbackSetLastError(DEBUGGER_ERROR_EPT_FAILED_TO_GET_PML1_ENTRY_OF_TARGET_ADDRESS);
return FALSE;
@@ -1007,7 +1001,6 @@ EptHookPerformPageHookMonitorAndInlineHook(VIRTUAL_MACHINE_STATE * VCpu,
EPT_PML1_ENTRY ChangedEntry;
SIZE_T PhysicalBaseAddress;
PVOID AlignedTargetVaOrPa;
- PVOID TargetBuffer;
PVOID TargetAddress;
PVOID HookFunction;
UINT64 TargetAddressInSafeMemory;
@@ -1261,24 +1254,15 @@ EptHookPerformPageHookMonitorAndInlineHook(VIRTUAL_MACHINE_STATE * VCpu,
for (size_t i = 0; i < ProcessorsCount; i++)
{
//
- // Set target buffer, request buffer from pool manager,
- // we also need to allocate new page to replace the current page
+ // We need to split the large page to 4KB page using pre-allocated pools
//
- TargetBuffer = (PVOID)PoolManagerRequestPool(SPLIT_2MB_PAGING_TO_4KB_PAGE, TRUE, sizeof(VMM_EPT_DYNAMIC_SPLIT));
-
- if (!TargetBuffer)
+ if (!EptSplitLargePage(g_GuestState[i].EptPageTable, TRUE, PhysicalBaseAddress))
{
PoolManagerFreePool((UINT64)HookedPage);
- VmmCallbackSetLastError(DEBUGGER_ERROR_PRE_ALLOCATED_BUFFER_IS_EMPTY);
- return FALSE;
- }
-
- if (!EptSplitLargePage(g_GuestState[i].EptPageTable, TargetBuffer, PhysicalBaseAddress))
- {
- PoolManagerFreePool((UINT64)HookedPage);
- PoolManagerFreePool((UINT64)TargetBuffer); // Here also other previous pools should be specified, but we forget it for now
-
+ //
+ // Here also other previous pools should be specified, but we forget it for now
+ //
LogDebugInfo("Err, could not split page for the address : 0x%llx", PhysicalBaseAddress);
VmmCallbackSetLastError(DEBUGGER_ERROR_EPT_COULD_NOT_SPLIT_THE_LARGE_PAGE_TO_4KB_PAGES);
return FALSE;
@@ -1295,7 +1279,10 @@ EptHookPerformPageHookMonitorAndInlineHook(VIRTUAL_MACHINE_STATE * VCpu,
if (!TargetPage)
{
PoolManagerFreePool((UINT64)HookedPage);
- PoolManagerFreePool((UINT64)TargetBuffer); // Here also other previous pools should be specified, but we forget it for now
+
+ //
+ // Here also other previous pools should be specified, but we forget it for now
+ //
VmmCallbackSetLastError(DEBUGGER_ERROR_EPT_FAILED_TO_GET_PML1_ENTRY_OF_TARGET_ADDRESS);
return FALSE;
diff --git a/hyperdbg/hyperhv/code/vmm/ept/Ept.c b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
index fc0dfaa0..24fe3ec3 100644
--- a/hyperdbg/hyperhv/code/vmm/ept/Ept.c
+++ b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
@@ -450,17 +450,17 @@ EptGetPml2Entry(PVMM_EPT_PAGE_TABLE EptPageTable, SIZE_T PhysicalAddress)
}
/**
- * @brief Split 2MB (LargePage) into 4kb pages
+ * @brief Convert large pages to 4KB pages
*
* @param EptPageTable The EPT Page Table
- * @param PreAllocatedBuffer The address of pre-allocated buffer
+ * @param UsePreAllocatedBuffer Whether allocate a memory or use pre-allocated buffer
* @param PhysicalAddress Physical address of where we want to split
*
* @return BOOLEAN Returns true if it was successful or false if there was an error
*/
BOOLEAN
EptSplitLargePage(PVMM_EPT_PAGE_TABLE EptPageTable,
- PVOID PreAllocatedBuffer,
+ BOOLEAN UsePreAllocatedBuffer,
SIZE_T PhysicalAddress)
{
PVMM_EPT_DYNAMIC_SPLIT NewSplit;
@@ -486,19 +486,21 @@ EptSplitLargePage(PVMM_EPT_PAGE_TABLE EptPageTable,
//
if (!TargetEntry->LargePage)
{
- //
- // As it's a large page and we request a pool for it, we need to
- // free the pool because it's not used anymore
- //
- PoolManagerFreePool((UINT64)PreAllocatedBuffer);
-
return TRUE;
}
//
// Allocate the PML1 entries
//
- NewSplit = (PVMM_EPT_DYNAMIC_SPLIT)PreAllocatedBuffer;
+ if (UsePreAllocatedBuffer)
+ {
+ NewSplit = (PVMM_EPT_DYNAMIC_SPLIT)PoolManagerRequestPool(SPLIT_2MB_PAGING_TO_4KB_PAGE, TRUE, sizeof(VMM_EPT_DYNAMIC_SPLIT));
+ }
+ else
+ {
+ NewSplit = (PVMM_EPT_DYNAMIC_SPLIT)PlatformMemAllocateNonPagedPool(sizeof(VMM_EPT_DYNAMIC_SPLIT));
+ }
+
if (!NewSplit)
{
LogError("Err, failed to allocate dynamic split memory");
@@ -627,8 +629,6 @@ EptIsValidForLargePage(SIZE_T PageFrameNumber)
BOOLEAN
EptSetupPML2Entry(PVMM_EPT_PAGE_TABLE EptPageTable, PEPT_PML2_ENTRY NewEntry, SIZE_T PageFrameNumber)
{
- PVOID TargetBuffer;
-
//
// Each of the 512 collections of 512 PML2 entries is setup here
// This will, in total, identity map every physical address from 0x0
@@ -646,15 +646,10 @@ EptSetupPML2Entry(PVMM_EPT_PAGE_TABLE EptPageTable, PEPT_PML2_ENTRY NewEntry, SI
}
else
{
- TargetBuffer = (PVOID)PlatformMemAllocateNonPagedPool(sizeof(VMM_EPT_DYNAMIC_SPLIT));
-
- if (!TargetBuffer)
- {
- LogError("Err, cannot allocate page for splitting edge large pages");
- return FALSE;
- }
-
- return EptSplitLargePage(EptPageTable, TargetBuffer, PageFrameNumber * SIZE_2_MB);
+ //
+ // Here we won't need to use pre-allocated buffers
+ //
+ return EptSplitLargePage(EptPageTable, FALSE, PageFrameNumber * SIZE_2_MB);
}
}
@@ -747,7 +742,7 @@ EptAllocateAndCreateIdentityPageTable(VOID)
__stosq((SIZE_T *)&PageTable->PML3[0], PML3Template.AsUInt, VMM_EPT_PML3E_COUNT);
//
- // Copy the template into each of the 512 PML3 entry slots for the reserved entries
+ // Copt the template into each of the 512 PML3 entry slots for the reserved entries
//
for (size_t i = 0; i < VMM_EPT_PML4E_COUNT - 1; i++)
{
diff --git a/hyperdbg/hyperhv/header/vmm/ept/Ept.h b/hyperdbg/hyperhv/header/vmm/ept/Ept.h
index 2259a78e..fdd73392 100644
--- a/hyperdbg/hyperhv/header/vmm/ept/Ept.h
+++ b/hyperdbg/hyperhv/header/vmm/ept/Ept.h
@@ -209,16 +209,16 @@ PVMM_EPT_PAGE_TABLE
EptAllocateAndCreateIdentityPageTable(VOID);
/**
- * @brief Convert 2MB pages to 4KB pages
+ * @brief Convert large pages to 4KB pages
*
* @param EptPageTable
- * @param PreAllocatedBuffer
+ * @param UsePreAllocatedBuffer
* @param PhysicalAddress
* @return BOOLEAN
*/
BOOLEAN
EptSplitLargePage(PVMM_EPT_PAGE_TABLE EptPageTable,
- PVOID PreAllocatedBuffer,
+ BOOLEAN UsePreAllocatedBuffer,
SIZE_T PhysicalAddress);
/**
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index 5f2272aa..41069c53 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -243,7 +243,8 @@ ShowErrorMessage(UINT32 Error)
break;
case DEBUGGER_ERROR_EPT_COULD_NOT_SPLIT_THE_LARGE_PAGE_TO_4KB_PAGES:
- ShowMessages("err, could not convert 2MB large page to 4KB pages (%x)\n",
+ ShowMessages("err, could not convert 2MB large page to 4KB pages "
+ "(maybe pre-allocated buffers are empty?) (%x)\n",
Error);
break;
From 16f64afd4fd5455462b2cf50eded82914e8c94ec Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 17 Aug 2025 17:33:13 +0200
Subject: [PATCH 026/323] check for the compatibility of Intel CET to for
emulating SYSCALL and SYSRET
---
CHANGELOG.md | 5 ++-
.../code/features/CompatibilityChecks.c | 44 ++++++++++++++++++-
.../code/hooks/syscall-hook/EferHook.c | 34 +++++++++++---
.../header/features/CompatibilityChecks.h | 2 +
4 files changed, 77 insertions(+), 8 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 517e8883..61859526 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,7 +10,9 @@ New release of the HyperDbg Debugger.
### Added
- Added the '!smi' command for performing operations related to System Management Interrupt (SMI) ([link](https://docs.hyperdbg.org/commands/extension-commands/smi))
- Export the SDK functions for SMI operations ([link](https://docs.hyperdbg.org/commands/extension-commands/smi#sdk))
-- Added support to Intel CET for SYSCALL/SYSRET emulation ([link](https://docs.hyperdbg.org/commands/extension-commands/syscall))
+- Check for Intel CET IBT (indirect branch tracking) support
+- Check for Intel CET shadow stack support
+- Added support to Intel CET for SYSCALL/SYSRET emulation ([link](https://docs.hyperdbg.org/commands/extension-commands/syscall))([link](https://docs.hyperdbg.org/commands/extension-commands/sysret))
### Changed
- The 'hyperhv' project now has build optimizations enabled
@@ -19,6 +21,7 @@ New release of the HyperDbg Debugger.
- Fix the problem with restoring XMM registers (#468) ([link](https://github.com/HyperDbg/HyperDbg/issues/468))
- Enhanced the '.pe' command to support PE Rich Headers thanks to [@Alish14](https://github.com/Alish14) ([link](https://github.com/HyperDbg/HyperDbg/pull/539))
- Updated ia32-doc to fix VMCS PL3 SSP fields ([link](https://github.com/HyperDbg/ia32-doc))
+- Fix the terminating process issue of the '!syscall/!sysret' commands on 11 generation (Rocket Lake/Tiger Lake) and newer Intel processors ([link](https://github.com/HyperDbg/HyperDbg/issues/392))
## [0.14.1.0] - 2025-07-27
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/hyperhv/code/features/CompatibilityChecks.c b/hyperdbg/hyperhv/code/features/CompatibilityChecks.c
index fcabc465..4238e4c6 100644
--- a/hyperdbg/hyperhv/code/features/CompatibilityChecks.c
+++ b/hyperdbg/hyperhv/code/features/CompatibilityChecks.c
@@ -73,7 +73,7 @@ CompatibilityCheckGetX86VirtualAddressWidth()
UINT32
CompatibilityCheckGetX86PhysicalAddressWidth()
{
- int Regs[4];
+ INT32 Regs[4];
CommonCpuidInstruction(CPUID_ADDR_WIDTH, 0, Regs);
@@ -83,6 +83,36 @@ CompatibilityCheckGetX86PhysicalAddressWidth()
return (Regs[0] & 0x0ff);
}
+/**
+ * @brief Check if the processor supports CET IBT
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+CompatibilityCheckCetShadowStackSupport()
+{
+ INT32 Regs[4];
+
+ CommonCpuidInstruction(7, 0, Regs);
+
+ return (BOOLEAN)((Regs[2] & (1 << 7)) != 0); // // CpuInfo[3] is ECX
+}
+
+/**
+ * @brief Check for Intel CET IBT support
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+CompatibilityCheckCetIbtSupport()
+{
+ INT32 Regs[4];
+
+ CommonCpuidInstruction(7, 0, Regs);
+
+ return (BOOLEAN)((Regs[3] & (1 << 20)) != 0); // CpuInfo[3] is EDX
+}
+
/**
* @brief Check for mode-based execution
*
@@ -96,7 +126,7 @@ CompatibilityCheckModeBasedExecution()
// the "enable PML" VM - execution control
//
UINT32 SecondaryProcBasedVmExecControls = HvAdjustControls(IA32_VMX_PROCBASED_CTLS2_MODE_BASED_EXECUTE_CONTROL_FOR_EPT_FLAG,
- IA32_VMX_PROCBASED_CTLS2);
+ IA32_VMX_PROCBASED_CTLS2);
if (SecondaryProcBasedVmExecControls & IA32_VMX_PROCBASED_CTLS2_MODE_BASED_EXECUTE_CONTROL_FOR_EPT_FLAG)
{
@@ -172,6 +202,16 @@ CompatibilityCheckPerformChecks()
//
g_CompatibilityCheck.ModeBasedExecutionSupport = CompatibilityCheckModeBasedExecution();
+ //
+ // Check Intel CET IBT support
+ //
+ g_CompatibilityCheck.CetIbtSupport = CompatibilityCheckCetIbtSupport();
+
+ //
+ // Check Intel CET shadow stack support
+ //
+ g_CompatibilityCheck.CetShadowStackSupport = CompatibilityCheckCetShadowStackSupport();
+
//
// Check PML support
//
diff --git a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
index d533f149..ae6b8f5e 100644
--- a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
+++ b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
@@ -120,6 +120,7 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
UINT64 GuestRip;
UINT64 GuestRflags;
UINT64 Ssp;
+ IA32_U_CET_REGISTER UcetMsr;
//
// Reading guest's RIP
@@ -156,9 +157,20 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
//
// Peform emulation of Intel CET (Shadow stacks)
//
- __vmx_vmread(VMCS_GUEST_SSP, &Ssp);
- __writemsr(IA32_PL3_SSP, Ssp);
- __vmx_vmwrite(VMCS_GUEST_SSP, 0);
+ if (g_CompatibilityCheck.CetShadowStackSupport)
+ {
+ UcetMsr.AsUInt = __readmsr(IA32_U_CET);
+
+ //
+ // If the shadow stack is enabled, we have to save the current
+ //
+ if (UcetMsr.ShStkEn)
+ {
+ __vmx_vmread(VMCS_GUEST_SSP, &Ssp);
+ __writemsr(IA32_PL3_SSP, Ssp);
+ __vmx_vmwrite(VMCS_GUEST_SSP, 0);
+ }
+ }
//
// Load the CS and SS selectors with values derived from bits 47:32 of IA32_STAR
@@ -194,6 +206,7 @@ SyscallHookEmulateSYSRET(VIRTUAL_MACHINE_STATE * VCpu)
UINT64 GuestRip;
UINT64 GuestRflags;
UINT64 Ssp;
+ IA32_U_CET_REGISTER UcetMsr;
//
// Load RIP from RCX
@@ -210,8 +223,19 @@ SyscallHookEmulateSYSRET(VIRTUAL_MACHINE_STATE * VCpu)
//
// Restore user-mode SPP
//
- Ssp = __readmsr(IA32_PL3_SSP);
- __vmx_vmwrite(VMCS_GUEST_SSP, Ssp);
+ if (g_CompatibilityCheck.CetShadowStackSupport)
+ {
+ UcetMsr.AsUInt = __readmsr(IA32_U_CET);
+
+ //
+ // If the shadow stack is enabled, we have to restore the current
+ //
+ if (UcetMsr.ShStkEn)
+ {
+ Ssp = __readmsr(IA32_PL3_SSP);
+ __vmx_vmwrite(VMCS_GUEST_SSP, Ssp);
+ }
+ }
//
// SYSRET loads the CS and SS selectors with values derived from bits 63:48 of IA32_STAR
diff --git a/hyperdbg/hyperhv/header/features/CompatibilityChecks.h b/hyperdbg/hyperhv/header/features/CompatibilityChecks.h
index 52bf74e2..a7b4baa1 100644
--- a/hyperdbg/hyperhv/header/features/CompatibilityChecks.h
+++ b/hyperdbg/hyperhv/header/features/CompatibilityChecks.h
@@ -27,6 +27,8 @@ typedef struct _COMPATIBILITY_CHECKS_STATUS
BOOLEAN PmlSupport; // check Page Modification Logging (PML) support
BOOLEAN ModeBasedExecutionSupport; // check for mode based execution support (processors after Kaby Lake release will support this feature)
BOOLEAN ExecuteOnlySupport; // Support for execute-only pages (indicating that data accesses are not allowed while instruction fetches are allowed)
+ BOOLEAN CetIbtSupport; // CET IBT support (indicating that indirect branch tracking is supported)
+ BOOLEAN CetShadowStackSupport; // CET shadow stack support (indicating that shadow stacks are supported)
UINT32 VirtualAddressWidth; // Virtual address width for x86 processors
UINT32 PhysicalAddressWidth; // Physical address width for x86 processors
From 613dff02eb00167304e0e1ea91ebcc745f8aff62 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 17 Aug 2025 22:08:20 +0200
Subject: [PATCH 027/323] re-enable the .start command and update changelog
---
CHANGELOG.md | 4 +++-
.../code/debugger/commands/meta-commands/start.cpp | 2 +-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 61859526..aca65dc2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## [0.15.0.0] - 2025-XX-XX
+## [0.15.0.0] - 2025-08-18
New release of the HyperDbg Debugger.
### Added
@@ -22,6 +22,8 @@ New release of the HyperDbg Debugger.
- Enhanced the '.pe' command to support PE Rich Headers thanks to [@Alish14](https://github.com/Alish14) ([link](https://github.com/HyperDbg/HyperDbg/pull/539))
- Updated ia32-doc to fix VMCS PL3 SSP fields ([link](https://github.com/HyperDbg/ia32-doc))
- Fix the terminating process issue of the '!syscall/!sysret' commands on 11 generation (Rocket Lake/Tiger Lake) and newer Intel processors ([link](https://github.com/HyperDbg/HyperDbg/issues/392))
+- Reenable the support for the '.start' command in the Debugger mode ([link](https://docs.hyperdbg.org/commands/meta-commands/.start))
+- The '!mode' event command is now compatible with different EPT hook commands (e.g., !epthook, !epthook2, !monitor, .start, and .restart) ([link](https://docs.hyperdbg.org/commands/extension-commands/mode))
## [0.14.1.0] - 2025-07-27
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp
index fc4c9de7..10347fe6 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp
@@ -66,7 +66,7 @@ CommandStart(vector CommandTokens, string Command)
//
#if ActivateUserModeDebugger == FALSE
- if (!g_IsSerialConnectedToRemoteDebuggee)
+ if (!g_IsSerialConnectedToRemoteDebugger)
{
ShowMessages("the user-mode debugger in VMI Mode is still in the beta version and not stable. "
"we decided to exclude it from this release and release it in future versions. "
From 3ce7e7d92bf766b0758f6ebc1e65ff1488e8f2d3 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 17 Aug 2025 22:57:46 +0200
Subject: [PATCH 028/323] update preactivating mode command messages
---
CHANGELOG.md | 1 +
.../hyperkd/code/debugger/commands/DebuggerCommands.c | 2 +-
hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c | 9 ---------
hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp | 2 +-
4 files changed, 3 insertions(+), 11 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index aca65dc2..286d0ae6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,7 @@ New release of the HyperDbg Debugger.
- Fix the terminating process issue of the '!syscall/!sysret' commands on 11 generation (Rocket Lake/Tiger Lake) and newer Intel processors ([link](https://github.com/HyperDbg/HyperDbg/issues/392))
- Reenable the support for the '.start' command in the Debugger mode ([link](https://docs.hyperdbg.org/commands/meta-commands/.start))
- The '!mode' event command is now compatible with different EPT hook commands (e.g., !epthook, !epthook2, !monitor, .start, and .restart) ([link](https://docs.hyperdbg.org/commands/extension-commands/mode))
+- The '!mode' command doesn't need allocating extra EPTPs ([link](https://docs.hyperdbg.org/commands/extension-commands/mode))
## [0.14.1.0] - 2025-07-27
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c b/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c
index a5ae9e66..1421b4ee 100644
--- a/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c
+++ b/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c
@@ -1455,7 +1455,7 @@ DebuggerCommandPreactivateFunctionality(PDEBUGGER_PREACTIVATE_COMMAND Preactivat
case DEBUGGER_PREACTIVATE_COMMAND_TYPE_MODE:
//
- // Request for allocating the mode mechanism
+ // Request for enabling the mode mechanism
//
ConfigureInitializeExecTrapOnAllProcessors();
diff --git a/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c b/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c
index 3e8056ea..bba365a6 100644
--- a/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c
+++ b/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c
@@ -1205,15 +1205,6 @@ ApplyEventTrapModeChangeEvent(PDEBUGGER_EVENT Event,
// or not and if it's activated then we can just add the current process
// to the watchlist, otherwise the user needs to preactivate this event
//
-
- //
- // Technically, it's possible to initiate this mechanism at this point
- // but it involves preallocating huge buffers so we prefer not to allocate
- // these amount of buffers by default in HyperDbg as the users might not
- // really use this mechanism and it would be a waste of system resources
- // so, if the user needs to use this mechanism, it can use the 'preactivate'
- // command to first activate this mechanism and then use it
- //
if (VmFuncQueryModeExecTrap())
{
//
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index 41069c53..379c705f 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -496,7 +496,7 @@ ShowErrorMessage(UINT32 Error)
break;
case DEBUGGER_ERROR_THE_MODE_EXEC_TRAP_IS_NOT_INITIALIZED:
- ShowMessages("err, the '!mode' event command cannot be directly initialized in the Debugger Mode. "
+ ShowMessages("err, for performance reasons, the '!mode' event command cannot be directly initialized in the Debugger Mode. "
"You can use the 'preactivate mode' command to preactivate this mechanism after that, "
"you can use the '!mode' event (%x)\n",
Error);
From a949bf66cde146e9451f9e2e4503e7d86570f62a Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 18 Aug 2025 00:30:13 +0200
Subject: [PATCH 029/323] temporarily hyperevade project
---
hyperdbg/hyperevade/code/SyscallFootprints.c | 23 +++++++++++++++++++
hyperdbg/hyperevade/code/Transparency.c | 3 ++-
.../hyperevade/header/SyscallFootprints.h | 4 ++++
hyperdbg/hyperevade/header/pch.h | 7 ++++++
4 files changed, 36 insertions(+), 1 deletion(-)
diff --git a/hyperdbg/hyperevade/code/SyscallFootprints.c b/hyperdbg/hyperevade/code/SyscallFootprints.c
index e018d82e..3b9bc966 100644
--- a/hyperdbg/hyperevade/code/SyscallFootprints.c
+++ b/hyperdbg/hyperevade/code/SyscallFootprints.c
@@ -11,6 +11,28 @@
*/
#include "pch.h"
+VOID
+TransparentHandleSystemCallHook(GUEST_REGS * Regs)
+{
+ UNREFERENCED_PARAMETER(Regs);
+}
+
+VOID
+TransparentCallbackHandleAfterSyscall(GUEST_REGS * Regs,
+ UINT32 ProcessId,
+ UINT32 ThreadId,
+ UINT64 Context,
+ SYSCALL_CALLBACK_CONTEXT_PARAMS * Params)
+{
+ UNREFERENCED_PARAMETER(Regs);
+ UNREFERENCED_PARAMETER(ProcessId);
+ UNREFERENCED_PARAMETER(ThreadId);
+ UNREFERENCED_PARAMETER(Context);
+ UNREFERENCED_PARAMETER(Params);
+}
+
+#if DISABLE_HYPERDBG_HYPEREVADE == FALSE
+
/**
* @brief Handle The triggered hook on KiSystemCall64 system call handler
* when the Transparency mode is enabled
@@ -1927,3 +1949,4 @@ TransparentCallbackHandleAfterSyscall(GUEST_REGS * Regs,
Params->OptionalParam4);
}
}
+#endif
diff --git a/hyperdbg/hyperevade/code/Transparency.c b/hyperdbg/hyperevade/code/Transparency.c
index 1ab77304..22cfb044 100644
--- a/hyperdbg/hyperevade/code/Transparency.c
+++ b/hyperdbg/hyperevade/code/Transparency.c
@@ -54,12 +54,13 @@ TransparentHideDebugger(HYPEREVADE_CALLBACKS * Hyperevade
RtlCopyBytes(&g_SystemCallNumbersInformation,
&TransparentModeRequest->SystemCallNumbersInformation,
sizeof(SYSTEM_CALL_NUMBERS_INFORMATION));
-
+#if DISABLE_HYPERDBG_HYPEREVADE == FALSE
//
// Choose a random genuine vendor string to replace hypervisor vendor data
//
TRANSPARENT_GENUINE_VENDOR_STRING_INDEX = TransparentGetRand() %
(sizeof(TRANSPARENT_LEGIT_VENDOR_STRINGS_WCHAR) / sizeof(TRANSPARENT_LEGIT_VENDOR_STRINGS_WCHAR[0]));
+#endif
//
// Enable the transparent mode
diff --git a/hyperdbg/hyperevade/header/SyscallFootprints.h b/hyperdbg/hyperevade/header/SyscallFootprints.h
index 976001fd..86a25ffc 100644
--- a/hyperdbg/hyperevade/header/SyscallFootprints.h
+++ b/hyperdbg/hyperevade/header/SyscallFootprints.h
@@ -161,6 +161,8 @@ SYSTEM_CALL_NUMBERS_INFORMATION g_SystemCallNumbersInformation;
// Constants //
//////////////////////////////////////////////////
+#if DISABLE_HYPERDBG_HYPEREVADE == FALSE
+
/**
* @brief A list of windows processes, for which to ignore systemcall requests
* when the transparency mode is enabled
@@ -609,6 +611,8 @@ static const PCHAR HV_FIRM_NAMES[] = {
};
+#endif
+
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
diff --git a/hyperdbg/hyperevade/header/pch.h b/hyperdbg/hyperevade/header/pch.h
index 6684367a..d52101a9 100644
--- a/hyperdbg/hyperevade/header/pch.h
+++ b/hyperdbg/hyperevade/header/pch.h
@@ -23,6 +23,13 @@
#ifdef ENV_WINDOWS
+//
+// The DLL is flagged by antivirus software, since it contains anti-debugging and anti-hypervisor methods
+// as well as different anti-debugging strings
+// For now, we disable the HyperDbg Hyperevade module
+//
+# define DISABLE_HYPERDBG_HYPEREVADE TRUE
+
//
// Windows defined functions
//
From c655a7705e04373f4dd1bf459bc8660691e26925 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 18 Aug 2025 21:54:21 +0200
Subject: [PATCH 030/323] avoid saving and restoring nonvolatile XMM registers
---
CHANGELOG.md | 9 +++
.../code/assembly/AsmVmexitHandler.asm | 78 ++++++++++++-------
hyperdbg/hyperhv/hyperhv.vcxproj.filters | 2 +-
hyperdbg/include/SDK/headers/BasicTypes.h | 41 ++++++----
hyperdbg/include/SDK/headers/Constants.h | 2 +-
5 files changed, 83 insertions(+), 49 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 286d0ae6..04f0600a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.16.0.0] - 2025-XX-XX
+New release of the HyperDbg Debugger.
+
+### Added
+-
+
+### Changed
+- Non-volatile XMM registers are no longer saved/restored on VM-exit handler ([link](https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions?view=msvc-170))
+
## [0.15.0.0] - 2025-08-18
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm b/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
index 9d62847b..fb195173 100644
--- a/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
+++ b/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
@@ -32,16 +32,22 @@ AsmVmexitHandler PROC
movaps xmmword ptr [rsp+030h], xmm3
movaps xmmword ptr [rsp+040h], xmm4
movaps xmmword ptr [rsp+050h], xmm5
- movaps xmmword ptr [rsp+060h], xmm6
- movaps xmmword ptr [rsp+070h], xmm7
- movaps xmmword ptr [rsp+080h], xmm8
- movaps xmmword ptr [rsp+090h], xmm9
- movaps xmmword ptr [rsp+0a0h], xmm10
- movaps xmmword ptr [rsp+0b0h], xmm11
- movaps xmmword ptr [rsp+0c0h], xmm12
- movaps xmmword ptr [rsp+0d0h], xmm13
- movaps xmmword ptr [rsp+0e0h], xmm14
- movaps xmmword ptr [rsp+0f0h], xmm15
+
+ ;
+ ; As per Microsoft ABI documentation, the following registers are nonvolatile
+ ; So, MSVC compiler will save them on the stack if they are used in the function
+ ; Thus, for the sake of performance, we comment them out
+ ;
+ ; movaps xmmword ptr [rsp+060h], xmm6
+ ; movaps xmmword ptr [rsp+070h], xmm7
+ ; movaps xmmword ptr [rsp+080h], xmm8
+ ; movaps xmmword ptr [rsp+090h], xmm9
+ ; movaps xmmword ptr [rsp+0a0h], xmm10
+ ; movaps xmmword ptr [rsp+0b0h], xmm11
+ ; movaps xmmword ptr [rsp+0c0h], xmm12
+ ; movaps xmmword ptr [rsp+0d0h], xmm13
+ ; movaps xmmword ptr [rsp+0e0h], xmm14
+ ; movaps xmmword ptr [rsp+0f0h], xmm15
stmxcsr dword ptr [rsp+0100h] ; MxCsr is 4 Byte
@@ -105,16 +111,22 @@ RestoreState:
movaps xmm3, xmmword ptr [rsp+030h]
movaps xmm4, xmmword ptr [rsp+040h]
movaps xmm5, xmmword ptr [rsp+050h]
- movaps xmm6, xmmword ptr [rsp+060h]
- movaps xmm7, xmmword ptr [rsp+070h]
- movaps xmm8, xmmword ptr [rsp+080h]
- movaps xmm9, xmmword ptr [rsp+090h]
- movaps xmm10, xmmword ptr [rsp+0a0h]
- movaps xmm11, xmmword ptr [rsp+0b0h]
- movaps xmm12, xmmword ptr [rsp+0c0h]
- movaps xmm13, xmmword ptr [rsp+0d0h]
- movaps xmm14, xmmword ptr [rsp+0e0h]
- movaps xmm15, xmmword ptr [rsp+0f0h]
+
+ ;
+ ; As per Microsoft ABI documentation, the following registers are nonvolatile
+ ; So, MSVC compiler will save them on the stack if they are used in the function
+ ; Thus, for the sake of performance, we comment them out
+ ;
+ ; movaps xmm6, xmmword ptr [rsp+060h]
+ ; movaps xmm7, xmmword ptr [rsp+070h]
+ ; movaps xmm8, xmmword ptr [rsp+080h]
+ ; movaps xmm9, xmmword ptr [rsp+090h]
+ ; movaps xmm10, xmmword ptr [rsp+0a0h]
+ ; movaps xmm11, xmmword ptr [rsp+0b0h]
+ ; movaps xmm12, xmmword ptr [rsp+0c0h]
+ ; movaps xmm13, xmmword ptr [rsp+0d0h]
+ ; movaps xmm14, xmmword ptr [rsp+0e0h]
+ ; movaps xmm15, xmmword ptr [rsp+0f0h]
ldmxcsr dword ptr [rsp+0100h]
@@ -142,16 +154,22 @@ AsmVmxoffRestoreXmmRegs PROC
movaps xmm3, xmmword ptr [rcx+030h]
movaps xmm4, xmmword ptr [rcx+040h]
movaps xmm5, xmmword ptr [rcx+050h]
- movaps xmm6, xmmword ptr [rcx+060h]
- movaps xmm7, xmmword ptr [rcx+070h]
- movaps xmm8, xmmword ptr [rcx+080h]
- movaps xmm9, xmmword ptr [rcx+090h]
- movaps xmm10, xmmword ptr [rcx+0a0h]
- movaps xmm11, xmmword ptr [rcx+0b0h]
- movaps xmm12, xmmword ptr [rcx+0c0h]
- movaps xmm13, xmmword ptr [rcx+0d0h]
- movaps xmm14, xmmword ptr [rcx+0e0h]
- movaps xmm15, xmmword ptr [rcx+0f0h]
+
+ ;
+ ; As per Microsoft ABI documentation, the following registers are nonvolatile
+ ; So, MSVC compiler will save them on the stack if they are used in the function
+ ; Thus, for the sake of performance, we comment them out
+ ;
+ ; movaps xmm6, xmmword ptr [rcx+060h]
+ ; movaps xmm7, xmmword ptr [rcx+070h]
+ ; movaps xmm8, xmmword ptr [rcx+080h]
+ ; movaps xmm9, xmmword ptr [rcx+090h]
+ ; movaps xmm10, xmmword ptr [rcx+0a0h]
+ ; movaps xmm11, xmmword ptr [rcx+0b0h]
+ ; movaps xmm12, xmmword ptr [rcx+0c0h]
+ ; movaps xmm13, xmmword ptr [rcx+0d0h]
+ ; movaps xmm14, xmmword ptr [rcx+0e0h]
+ ; movaps xmm15, xmmword ptr [rcx+0f0h]
ldmxcsr dword ptr [rcx+0100h]
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj.filters b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
index 6481ff8d..69dc9669 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj.filters
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
@@ -628,7 +628,7 @@
code\assembly
- code
+ code\assembly
\ No newline at end of file
diff --git a/hyperdbg/include/SDK/headers/BasicTypes.h b/hyperdbg/include/SDK/headers/BasicTypes.h
index 24da1a35..95e322f8 100644
--- a/hyperdbg/include/SDK/headers/BasicTypes.h
+++ b/hyperdbg/include/SDK/headers/BasicTypes.h
@@ -107,23 +107,30 @@ typedef struct XMM_REG
#pragma pack(push, 1) // Ensure no padding
typedef struct GUEST_XMM_REGS
{
- XMM_REG xmm0; // 0x00
- XMM_REG xmm1; // 0x10
- XMM_REG xmm2; // 0x20
- XMM_REG xmm3; // 0x30
- XMM_REG xmm4; // 0x40
- XMM_REG xmm5; // 0x50
- XMM_REG xmm6; // 0x60
- XMM_REG xmm7; // 0x70
- XMM_REG xmm8; // 0x80
- XMM_REG xmm9; // 0x90
- XMM_REG xmm10; // 0xA0
- XMM_REG xmm11; // 0xB0
- XMM_REG xmm12; // 0xC0
- XMM_REG xmm13; // 0xD0
- XMM_REG xmm14; // 0xE0
- XMM_REG xmm15; // 0xF0
- UINT32 mxcsr; // 0x100
+ XMM_REG xmm0; // 0x00
+ XMM_REG xmm1; // 0x10
+ XMM_REG xmm2; // 0x20
+ XMM_REG xmm3; // 0x30
+ XMM_REG xmm4; // 0x40
+ XMM_REG xmm5; // 0x50
+
+ //
+ // As per Microsoft ABI documentation, the following registers are nonvolatile
+ // So, MSVC compiler will save them on the stack if they are used in the function
+ // Thus, for the sake of performance, we comment them out
+ //
+ XMM_REG xmm6_not_saved; // 0x60
+ XMM_REG xmm7_not_saved; // 0x70
+ XMM_REG xmm8_not_saved; // 0x80
+ XMM_REG xmm9_not_saved; // 0x90
+ XMM_REG xmm10_not_saved; // 0xA0
+ XMM_REG xmm11_not_saved; // 0xB0
+ XMM_REG xmm12_not_saved; // 0xC0
+ XMM_REG xmm13_not_saved; // 0xD0
+ XMM_REG xmm14_not_saved; // 0xE0
+ XMM_REG xmm15_not_saved; // 0xF0
+
+ UINT32 mxcsr; // 0x100
} GUEST_XMM_REGS, *PGUEST_XMM_REGS;
#pragma pack(pop)
diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h
index 065244ab..6d0b37ad 100644
--- a/hyperdbg/include/SDK/headers/Constants.h
+++ b/hyperdbg/include/SDK/headers/Constants.h
@@ -17,7 +17,7 @@
//////////////////////////////////////////////////
#define VERSION_MAJOR 0
-#define VERSION_MINOR 15
+#define VERSION_MINOR 16
#define VERSION_PATCH 0
//
From bc6010d0612faf380fcdea4cb87ffe054de03c4c Mon Sep 17 00:00:00 2001
From: Seonjin Hwang
Date: Wed, 20 Aug 2025 14:53:38 +0900
Subject: [PATCH 031/323] Fix: after patch 0.14, there is an infinite vm-exit
bug for \!monitor x which freeze hyperdbg. It simply fixs the bug
---
hyperdbg/hyperhv/code/vmm/ept/Ept.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/hyperdbg/hyperhv/code/vmm/ept/Ept.c b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
index 24fe3ec3..a01fa70a 100644
--- a/hyperdbg/hyperhv/code/vmm/ept/Ept.c
+++ b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
@@ -1085,17 +1085,17 @@ EptHandleEptViolation(VIRTUAL_MACHINE_STATE * VCpu)
//
__vmx_vmread(VMCS_GUEST_PHYSICAL_ADDRESS, &GuestPhysicalAddr);
- if (ExecTrapHandleEptViolationVmexit(VCpu, &ViolationQualification))
- {
- return TRUE;
- }
- else if (EptHandlePageHookExit(VCpu, ViolationQualification, GuestPhysicalAddr))
+ if (EptHandlePageHookExit(VCpu, ViolationQualification, GuestPhysicalAddr))
{
//
// Handled by page hook code
//
return TRUE;
}
+ else if (ExecTrapHandleEptViolationVmexit(VCpu, &ViolationQualification))
+ {
+ return TRUE;
+ }
else if (VmmCallbackUnhandledEptViolation(VCpu->CoreId, (UINT64)ViolationQualification.AsUInt, GuestPhysicalAddr))
{
//
From 8a5f69654474698b1f2cc160cc48b73c1b487870 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 20 Aug 2025 12:49:07 +0000
Subject: [PATCH 033/323] Fix grammar and spelling errors: perfrom->perform,
occured->occurred, recieved->received
Co-authored-by: SinaKarvandi <13383992+SinaKarvandi@users.noreply.github.com>
---
hyperdbg/hyperdbg-test/code/tests/test-parser.cpp | 6 +++---
hyperdbg/hyperdbg-test/code/tests/test-semantic-scripts.cpp | 2 +-
hyperdbg/hyperevade/code/SyscallFootprints.c | 6 +++---
hyperdbg/hyperhv/code/features/DirtyLogging.c | 2 +-
hyperdbg/hyperhv/code/processor/Smm.c | 2 +-
hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c | 2 +-
hyperdbg/hyperhv/header/common/State.h | 2 +-
hyperdbg/hyperkd/code/debugger/events/Termination.c | 4 ++--
hyperdbg/hyperkd/code/driver/Ioctl.c | 4 ++--
hyperdbg/include/SDK/headers/Ioctls.h | 4 ++--
.../code/debugger/commands/debugging-commands/test.cpp | 2 +-
.../code/debugger/commands/extension-commands/apic.cpp | 2 +-
hyperdbg/libhyperdbg/pcicam.cpp | 4 ++--
13 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/hyperdbg/hyperdbg-test/code/tests/test-parser.cpp b/hyperdbg/hyperdbg-test/code/tests/test-parser.cpp
index 9ae94075..a0d30950 100644
--- a/hyperdbg/hyperdbg-test/code/tests/test-parser.cpp
+++ b/hyperdbg/hyperdbg-test/code/tests/test-parser.cpp
@@ -1,7 +1,7 @@
/**
* @file test-parser.cpp
* @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Perfrom test on command parser
+ * @brief Perform test on command parser
* @details
* @version 0.11
* @date 2024-08-11
@@ -309,9 +309,9 @@ TestCommandParser()
auto testCases = parseTestCases(filePath);
//
- // Perfom testing test cases with parsed file
+ // Perform testing test cases with parsed file
//
- cout << "Perfom testing test cases with parsed file:" << endl;
+ cout << "Perform testing test cases with parsed file:" << endl;
//
// Output the parsed test cases
diff --git a/hyperdbg/hyperdbg-test/code/tests/test-semantic-scripts.cpp b/hyperdbg/hyperdbg-test/code/tests/test-semantic-scripts.cpp
index 94d34f5e..913d1e3e 100644
--- a/hyperdbg/hyperdbg-test/code/tests/test-semantic-scripts.cpp
+++ b/hyperdbg/hyperdbg-test/code/tests/test-semantic-scripts.cpp
@@ -1,7 +1,7 @@
/**
* @file test-semanitc-scripts.cpp
* @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Perfrom test on semantic scripts
+ * @brief Perform test on semantic scripts
* @details
* @version 0.11
* @date 2024-08-16
diff --git a/hyperdbg/hyperevade/code/SyscallFootprints.c b/hyperdbg/hyperevade/code/SyscallFootprints.c
index 3b9bc966..f6bfe8d6 100644
--- a/hyperdbg/hyperevade/code/SyscallFootprints.c
+++ b/hyperdbg/hyperevade/code/SyscallFootprints.c
@@ -1070,7 +1070,7 @@ TransparentHandleFirmwareInformationQuery(UINT64 Ptr, UINT32 BufMaxSize, UINT64
//
// If the buffer size is too big, we cant do any mitigations with the current implementation an it exceeds
- // the size of an EPT page, risking curruption when allocating the copy buffer space in root-mode.
+ // the size of an EPT page, risking corruption when allocating the copy buffer space in root-mode.
//
if (BufMaxSize > PAGE_SIZE / 2)
{
@@ -1421,11 +1421,11 @@ TransparentReplaceVendorStringFromBufferWChar(SYSCALL_CALLBACK_CONTEXT_PARAMS *
}
//
- // An error occured while performing the mitigations, the user buffer might be left unmodified
+ // An error occurred while performing the mitigations, the user buffer might be left unmodified
//
ReturnWithError:
LogInfo("A call for to read a registry entry, which could contain hypervisor specific data, was intercepted but the mitigations failed");
- LogInfo("The caller process recieved the results in this virtual address: %llx", Params->OptionalParam2);
+ LogInfo("The caller process received the results in this virtual address: %llx", Params->OptionalParam2);
if (Buf != NULL)
{
diff --git a/hyperdbg/hyperhv/code/features/DirtyLogging.c b/hyperdbg/hyperhv/code/features/DirtyLogging.c
index 24d85521..6ad16da8 100644
--- a/hyperdbg/hyperhv/code/features/DirtyLogging.c
+++ b/hyperdbg/hyperhv/code/features/DirtyLogging.c
@@ -35,7 +35,7 @@ DirtyLoggingInitialize()
//
// When PML is active each write that sets a dirty flag for EPT also generates an entry in an inmemory log,
// reporting the guest-physical address of the write (aligned to 4 KBytes)
- // When the log is full, a VM exit occurs, notifying the VMM.A VMM can monitor the number of pages modified
+ // When the log is full, a VM exit occurs, notifying the VMM. A VMM can monitor the number of pages modified
// by each thread by specifying an available set of log entries
//
diff --git a/hyperdbg/hyperhv/code/processor/Smm.c b/hyperdbg/hyperhv/code/processor/Smm.c
index d5a49091..befdee9d 100644
--- a/hyperdbg/hyperhv/code/processor/Smm.c
+++ b/hyperdbg/hyperhv/code/processor/Smm.c
@@ -41,7 +41,7 @@ SmmTriggerPowerSmi()
UINT8 SmmResponse = 0;
//
- // check the initial value recieve from 0xB3 port
+ // check the initial value received from 0xB3 port
//
SmmResponse = __inbyte(0xb2);
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
index c652c0bf..f9929526 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
@@ -198,7 +198,7 @@ IdtEmulationhandleHostInterrupt(_Inout_ INTERRUPT_TRAP_FRAME * IntrTrapFrame)
//
// Store the latest exception vector
//
- VCpu->LastExceptionOccuredInHost = IntrTrapFrame->vector;
+ VCpu->LastExceptionOccurredInHost = IntrTrapFrame->vector;
switch (IntrTrapFrame->vector)
{
diff --git a/hyperdbg/hyperhv/header/common/State.h b/hyperdbg/hyperhv/header/common/State.h
index be58354d..b131839d 100644
--- a/hyperdbg/hyperhv/header/common/State.h
+++ b/hyperdbg/hyperhv/header/common/State.h
@@ -344,7 +344,7 @@ typedef struct _VIRTUAL_MACHINE_STATE
NMI_BROADCASTING_STATE NmiBroadcastingState; // Shows the state of NMI broadcasting
VM_EXIT_TRANSPARENCY TransparencyState; // The state of the debugger in transparent-mode
PEPT_HOOKED_PAGE_DETAIL MtfEptHookRestorePoint; // It shows the detail of the hooked paged that should be restore in MTF vm-exit
- UINT8 LastExceptionOccuredInHost; // The vector of last exception occured in host
+ UINT8 LastExceptionOccurredInHost; // The vector of last exception occurred in host
UINT64 HostIdt; // host Interrupt Descriptor Table (actual type is SEGMENT_DESCRIPTOR_INTERRUPT_GATE_64*)
UINT64 HostGdt; // host Global Descriptor Table (actual type is SEGMENT_DESCRIPTOR_32* or SEGMENT_DESCRIPTOR_64*)
UINT64 HostTss; // host Task State Segment (actual type is TASK_STATE_SEGMENT_64*)
diff --git a/hyperdbg/hyperkd/code/debugger/events/Termination.c b/hyperdbg/hyperkd/code/debugger/events/Termination.c
index af011e41..b41939fa 100644
--- a/hyperdbg/hyperkd/code/debugger/events/Termination.c
+++ b/hyperdbg/hyperkd/code/debugger/events/Termination.c
@@ -1130,7 +1130,7 @@ TerminateSyscallHookEferEvent(PDEBUGGER_EVENT Event, BOOLEAN InputFromVmxRoot)
//
// For this event we should also check for sysret instructions events too
// because both of them are emulated by a single bit in vmx controls
- // and a MSR so if there is anything in out events list then we can
+ // and an MSR so if there is anything in out events list then we can
// remove all the events
//
if (DebuggerEventListCount(&g_Events->SyscallHooksEferSyscallEventsHead) > 1 ||
@@ -1221,7 +1221,7 @@ TerminateSysretHookEferEvent(PDEBUGGER_EVENT Event, BOOLEAN InputFromVmxRoot)
//
// For this event we should also check for syscall instructions events too
// because both of them are emulated by a single bit in vmx controls
- // and a MSR so if there is anything in out events list then we can
+ // and an MSR so if there is anything in out events list then we can
// remove all the events
//
if (DebuggerEventListCount(&g_Events->SyscallHooksEferSysretEventsHead) > 1 ||
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index 1a4de8c5..f0f62a8d 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -956,7 +956,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
break;
- case IOCTL_PERFROM_KERNEL_SIDE_TESTS:
+ case IOCTL_PERFORM_KERNEL_SIDE_TESTS:
//
// First validate the parameters.
@@ -1082,7 +1082,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
break;
- case IOCTL_PERFROM_ACTIONS_ON_APIC:
+ case IOCTL_PERFORM_ACTIONS_ON_APIC:
//
// First validate the parameters.
diff --git a/hyperdbg/include/SDK/headers/Ioctls.h b/hyperdbg/include/SDK/headers/Ioctls.h
index ffe60a76..d29be9f7 100644
--- a/hyperdbg/include/SDK/headers/Ioctls.h
+++ b/hyperdbg/include/SDK/headers/Ioctls.h
@@ -209,7 +209,7 @@
* @brief ioctl, to perform kernel-side tests
*
*/
-#define IOCTL_PERFROM_KERNEL_SIDE_TESTS \
+#define IOCTL_PERFORM_KERNEL_SIDE_TESTS \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x815, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
@@ -300,7 +300,7 @@
* @brief ioctl, to perform actions related to APIC
*
*/
-#define IOCTL_PERFROM_ACTIONS_ON_APIC \
+#define IOCTL_PERFORM_ACTIONS_ON_APIC \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x822, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/test.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/test.cpp
index faa95779..7c40766b 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/test.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/test.cpp
@@ -62,7 +62,7 @@ CommandTestPerformKernelTestsIoctl()
//
Status = DeviceIoControl(
g_DeviceHandle, // Handle to device
- IOCTL_PERFROM_KERNEL_SIDE_TESTS, // IO Control Code (IOCTL)
+ IOCTL_PERFORM_KERNEL_SIDE_TESTS, // IO Control Code (IOCTL)
&KernelTestRequest, // Input Buffer to driver.
SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS, // Input buffer length
&KernelTestRequest, // Output Buffer from driver.
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/apic.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/apic.cpp
index e91d2c5c..79632d1c 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/apic.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/apic.cpp
@@ -104,7 +104,7 @@ CommandApicSendRequest(DEBUGGER_APIC_REQUEST_TYPE ApicType,
//
Status = DeviceIoControl(
g_DeviceHandle, // Handle to device
- IOCTL_PERFROM_ACTIONS_ON_APIC, // IO Control Code (IOCTL)
+ IOCTL_PERFORM_ACTIONS_ON_APIC, // IO Control Code (IOCTL)
ApicRequest, // Input Buffer to driver.
SIZEOF_DEBUGGER_APIC_REQUEST, // Input buffer length
ApicRequest, // Output Buffer from driver.
diff --git a/hyperdbg/libhyperdbg/pcicam.cpp b/hyperdbg/libhyperdbg/pcicam.cpp
index d3a0a493..9be38e72 100644
--- a/hyperdbg/libhyperdbg/pcicam.cpp
+++ b/hyperdbg/libhyperdbg/pcicam.cpp
@@ -1,6 +1,6 @@
/**
* @file pcicam.cpp
- * @author Bjrn Ruytenberg (bjorn@bjornweb.nl)
+ * @author Bj�rn Ruytenberg (bjorn@bjornweb.nl)
* @brief !pcicam command
* @details
* @version 0.13
@@ -365,7 +365,7 @@ CommandPcicam(vector CommandTokens, string Command)
//
// An err occurred, no results
//
- ShowMessages("An err occured, no results:");
+ ShowMessages("An error occurred, no results:");
ShowErrorMessage(PcidevinfoPacket.KernelStatus);
}
From 972786821fb842b40ebef621c1d8daf851968b0c Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 20 Aug 2025 12:54:26 +0000
Subject: [PATCH 034/323] Fix additional grammar/spelling: contractions,
duplicate words, hyphenation
Co-authored-by: SinaKarvandi <13383992+SinaKarvandi@users.noreply.github.com>
---
hyperdbg/hyperevade/code/SyscallFootprints.c | 18 +++++++++---------
hyperdbg/hyperhv/code/features/DirtyLogging.c | 2 +-
.../hyperhv/header/globals/GlobalVariables.h | 2 +-
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/hyperdbg/hyperevade/code/SyscallFootprints.c b/hyperdbg/hyperevade/code/SyscallFootprints.c
index f6bfe8d6..f435efeb 100644
--- a/hyperdbg/hyperevade/code/SyscallFootprints.c
+++ b/hyperdbg/hyperevade/code/SyscallFootprints.c
@@ -1010,7 +1010,7 @@ TransparentHandleProcessInformationQuery(SYSCALL_CALLBACK_CONTEXT_PARAMS * Param
}
//
- // Zero out the matching entry, so that its data doesnt remain in memory
+ // Zero out the matching entry, so that its data doesn't remain in memory
//
if (MatchFound)
{
@@ -1069,7 +1069,7 @@ TransparentHandleFirmwareInformationQuery(UINT64 Ptr, UINT32 BufMaxSize, UINT64
}
//
- // If the buffer size is too big, we cant do any mitigations with the current implementation an it exceeds
+ // If the buffer size is too big, we can't do any mitigations with the current implementation and it exceeds
// the size of an EPT page, risking corruption when allocating the copy buffer space in root-mode.
//
if (BufMaxSize > PAGE_SIZE / 2)
@@ -1214,11 +1214,11 @@ TransparentHandleFirmwareInformationQuery(UINT64 Ptr, UINT32 BufMaxSize, UINT64
}
/**
- * @brief Replace occurances of a hypervisor specific strings with legitimate vendor strings in a provided buffer
+ * @brief Replace occurrences of a hypervisor specific strings with legitimate vendor strings in a provided buffer
*
* @param Params Set transparent callback params that contain:
in OptionalParam2 a pointer to a valid read/writable memory buffer that contains both, a WCHAR string and its length in bytes
- in OptionalParam3 max size in bytes of the allocatec buffer
+ in OptionalParam3 max size in bytes of the allocated buffer
in OptionalParam4 a pointer to a ULONG containing current size of the buffer
*
* @param DataOffset Offset in bytes from OptionalParam2 to the start of the WCHAR data string
@@ -1442,7 +1442,7 @@ ReturnWithError:
* @param Params The set transparent callback params that contain:
in OptionalParam1 the KEY_VALUE_INFORMATION_CLASS enum value
in OptionalParam2 a pointer to a valid read/writable memory buffer that contains both, a WCHAR string and its length in bytes
- in OptionalParam3 max size in bytes of the allocatec buffer
+ in OptionalParam3 max size in bytes of the allocated buffer
in OptionalParam4 a pointer to a ULONG containing current size of the buffer
*
* @return UINT64
@@ -1524,7 +1524,7 @@ TransparentCallbackHandleAfterNtQueryValueKeySyscall(SYSCALL_CALLBACK_CONTEXT_PA
* @param Params The set transparent callback params that contain:
in OptionalParam1 the KEY_VALUE_INFORMATION_CLASS enum value
in OptionalParam2 a pointer to a valid read/writable memory buffer that contains both, a WCHAR string and its length in bytes
- in OptionalParam3 max size in bytes of the allocatec buffer
+ in OptionalParam3 max size in bytes of the allocated buffer
in OptionalParam4 a pointer to a ULONG containing current size of the buffer
*
* @return UINT64
@@ -1879,10 +1879,10 @@ TransparentCallbackHandleAfterSyscall(GUEST_REGS * Regs,
//
// Handle the return code modification after NtNtQueryValueKey system call
//
- // NOTE: The transparent mitigation will replace all occurances of a hypervisor vendor string in the registry
+ // NOTE: The transparent mitigation will replace all occurrences of a hypervisor vendor string in the registry
// key data to a randomized real hardware vendor string, no matter the meaning of the key,
- // This can cause some keys to illogical data, for example,
- // a disk drive ID having a vendor string of ASUS even though(as far as I know) ASUS doesnt produce storage devices.
+ // This can cause some keys to produce illogical data, for example,
+ // a disk drive ID having a vendor string of ASUS even though (as far as I know) ASUS doesn't produce storage devices.
//
else if (Context == g_SystemCallNumbersInformation.SysNtQueryValueKey)
{
diff --git a/hyperdbg/hyperhv/code/features/DirtyLogging.c b/hyperdbg/hyperhv/code/features/DirtyLogging.c
index 6ad16da8..65af1ca4 100644
--- a/hyperdbg/hyperhv/code/features/DirtyLogging.c
+++ b/hyperdbg/hyperhv/code/features/DirtyLogging.c
@@ -33,7 +33,7 @@ DirtyLoggingInitialize()
//
//
- // When PML is active each write that sets a dirty flag for EPT also generates an entry in an inmemory log,
+ // When PML is active each write that sets a dirty flag for EPT also generates an entry in an in-memory log,
// reporting the guest-physical address of the write (aligned to 4 KBytes)
// When the log is full, a VM exit occurs, notifying the VMM. A VMM can monitor the number of pages modified
// by each thread by specifying an available set of log entries
diff --git a/hyperdbg/hyperhv/header/globals/GlobalVariables.h b/hyperdbg/hyperhv/header/globals/GlobalVariables.h
index c8effacf..4e9cc58c 100644
--- a/hyperdbg/hyperhv/header/globals/GlobalVariables.h
+++ b/hyperdbg/hyperhv/header/globals/GlobalVariables.h
@@ -183,7 +183,7 @@ BOOLEAN g_IsInterceptingInstructions;
//////////////////////////////////////////////////
/**
- * @brief Shows whether the the VMM is waiting to inject a page-fault
+ * @brief Shows whether the VMM is waiting to inject a page-fault
* or not
*
*/
From cb9c61af2927807649e7e9affe94a82a276994f1 Mon Sep 17 00:00:00 2001
From: sina
Date: Wed, 20 Aug 2025 18:18:39 +0200
Subject: [PATCH 035/323] update changelog with PR modifications
---
CHANGELOG.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 04f0600a..d45c5934 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,8 @@ New release of the HyperDbg Debugger.
### Changed
- Non-volatile XMM registers are no longer saved/restored on VM-exit handler ([link](https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions?view=msvc-170))
+- Fix grammar and spelling errors throughout HyperDbg codebase ([link](https://github.com/HyperDbg/HyperDbg/pull/546))
+- Fix infinite vm-exit bug for the '!monitor x' command thanks to [@unlockable](https://github.com/unlockable) ([link](https://github.com/HyperDbg/HyperDbg/pull/545))
## [0.15.0.0] - 2025-08-18
New release of the HyperDbg Debugger.
From 77029f330d7e6f6033cc95a86f743c6f40331e07 Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 21 Aug 2025 00:17:26 +0200
Subject: [PATCH 036/323] add XSETBV event extension command
---
CHANGELOG.md | 2 +-
hyperdbg/hyperhv/code/interface/Dispatch.c | 80 +++++++++++
hyperdbg/hyperhv/code/interface/Export.c | 12 ++
hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c | 10 +-
.../hyperhv/header/globals/GlobalVariables.h | 2 +
hyperdbg/hyperhv/header/interface/Dispatch.h | 3 +
.../hyperkd/code/debugger/core/Debugger.c | 38 ++++++
.../code/debugger/events/ApplyEvents.c | 27 ++++
.../code/debugger/events/Termination.c | 43 ++++++
.../hyperkd/header/debugger/core/Debugger.h | 1 +
.../header/debugger/events/ApplyEvents.h | 5 +
.../header/debugger/events/Termination.h | 3 +
hyperdbg/include/SDK/headers/Events.h | 5 +
.../SDK/imports/kernel/HyperDbgVmmImports.h | 3 +
.../commands/extension-commands/xsetbv.cpp | 124 ++++++++++++++++++
.../code/debugger/core/interpreter.cpp | 2 +
hyperdbg/libhyperdbg/header/commands.h | 8 ++
hyperdbg/libhyperdbg/libhyperdbg.vcxproj | 1 +
.../libhyperdbg/libhyperdbg.vcxproj.filters | 3 +
19 files changed, 366 insertions(+), 6 deletions(-)
create mode 100644 hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/xsetbv.cpp
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d45c5934..d6257f70 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,7 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
New release of the HyperDbg Debugger.
### Added
--
+- The **!xsetbv** event command is added to execution of XSETBV instruction thanks to HyperDbg group members ([link](https://docs.hyperdbg.org/commands/extension-commands/xsetbv))
### Changed
- Non-volatile XMM registers are no longer saved/restored on VM-exit handler ([link](https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions?view=msvc-170))
diff --git a/hyperdbg/hyperhv/code/interface/Dispatch.c b/hyperdbg/hyperhv/code/interface/Dispatch.c
index c96a703f..de999115 100644
--- a/hyperdbg/hyperhv/code/interface/Dispatch.c
+++ b/hyperdbg/hyperhv/code/interface/Dispatch.c
@@ -183,6 +183,86 @@ DispatchEventCpuid(VIRTUAL_MACHINE_STATE * VCpu)
}
}
+/**
+ * @brief Handling debugger functions related to XSETBV events
+ *
+ * @param VCpu The virtual processor's state
+ * @return VOID
+ */
+VOID
+DispatchEventXsetbv(VIRTUAL_MACHINE_STATE * VCpu)
+{
+ UINT64 Context;
+ VMM_CALLBACK_TRIGGERING_EVENT_STATUS_TYPE EventTriggerResult;
+ BOOLEAN PostEventTriggerReq = FALSE;
+
+ //
+ // Check if attaching is for command dispatching in user debugger
+ // or a regular XSETBV
+ //
+ if (g_Callbacks.UdCheckForCommand != NULL && g_Callbacks.UdCheckForCommand())
+ {
+ //
+ // It's a thread command for user debugger, no need to run the
+ // actual XSETBV instruction and change the registers
+ //
+ return;
+ }
+
+ //
+ // As the context to event trigger, we send the ecx (XCR index) before the xsetbv
+ // so that the debugger can both read the ecx as it contains the XCR index
+ // and also can modify the results
+ //
+ if (g_TriggerEventForXsetbvs)
+ {
+ //
+ // Adjusting the core context (save ECX for the debugger)
+ //
+ Context = VCpu->Regs->rcx & 0xffffffff;
+
+ //
+ // Triggering the pre-event
+ //
+ EventTriggerResult = VmmCallbackTriggerEvents(XSETBV_INSTRUCTION_EXECUTION,
+ VMM_CALLBACK_CALLING_STAGE_PRE_EVENT_EMULATION,
+ (PVOID)Context,
+ &PostEventTriggerReq,
+ VCpu->Regs);
+
+ //
+ // Check whether we need to short-circuiting event emulation or not
+ //
+ if (EventTriggerResult != VMM_CALLBACK_TRIGGERING_EVENT_STATUS_SUCCESSFUL_IGNORE_EVENT)
+ {
+ //
+ // Handle the XSETBV event in the case of triggering event
+ //
+ VmxHandleXsetbv(VCpu);
+ }
+
+ //
+ // Check for the post-event triggering needs
+ //
+ if (PostEventTriggerReq)
+ {
+ VmmCallbackTriggerEvents(XSETBV_INSTRUCTION_EXECUTION,
+ VMM_CALLBACK_CALLING_STAGE_POST_EVENT_EMULATION,
+ (PVOID)Context,
+ NULL,
+ VCpu->Regs);
+ }
+ }
+ else
+ {
+ //
+ // Otherwise and if there is no event, we should handle the XSETBV
+ // normally
+ //
+ VmxHandleXsetbv(VCpu);
+ }
+}
+
/**
* @brief Handling debugger functions related to RDTSC/RDTSCP events
*
diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c
index 11e9aa36..a7d17c5f 100644
--- a/hyperdbg/hyperhv/code/interface/Export.c
+++ b/hyperdbg/hyperhv/code/interface/Export.c
@@ -589,6 +589,18 @@ VmFuncSetTriggerEventForCpuids(BOOLEAN Set)
g_TriggerEventForCpuids = Set;
}
+/**
+ * @brief Set trigger event for XSETBVs
+ *
+ * @param Set Set or unset the trigger
+ * @return VOID
+ */
+VOID
+VmFuncSetTriggerEventForXsetbvs(BOOLEAN Set)
+{
+ g_TriggerEventForXsetbvs = Set;
+}
+
/**
* @brief VMX-root compatible strlen
* @param s A pointer to the string
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
index 59587977..b7778fbb 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
@@ -296,12 +296,12 @@ VmxVmexitHandler(_Inout_ PGUEST_REGS GuestRegs)
}
case VMX_EXIT_REASON_EXECUTE_XSETBV:
{
- //
- // Handle xsetbv (unconditional vm-exit)
- //
- VmxHandleXsetbv(VCpu);
+ //
+ // Dispatch and trigger the XSETBV instruction events
+ //
+ DispatchEventXsetbv(VCpu);
- break;
+ break;
}
case VMX_EXIT_REASON_VMX_PREEMPTION_TIMER_EXPIRED:
{
diff --git a/hyperdbg/hyperhv/header/globals/GlobalVariables.h b/hyperdbg/hyperhv/header/globals/GlobalVariables.h
index 4e9cc58c..8a4681bb 100644
--- a/hyperdbg/hyperhv/header/globals/GlobalVariables.h
+++ b/hyperdbg/hyperhv/header/globals/GlobalVariables.h
@@ -148,6 +148,8 @@ BOOLEAN g_TriggerEventForVmcalls;
*/
BOOLEAN g_TriggerEventForCpuids;
+BOOLEAN g_TriggerEventForXsetbvs;
+
//////////////////////////////////////////////////
// Global Variable (Execution Trap) //
//////////////////////////////////////////////////
diff --git a/hyperdbg/hyperhv/header/interface/Dispatch.h b/hyperdbg/hyperhv/header/interface/Dispatch.h
index f771bdd8..f35ed6ef 100644
--- a/hyperdbg/hyperhv/header/interface/Dispatch.h
+++ b/hyperdbg/hyperhv/header/interface/Dispatch.h
@@ -25,6 +25,9 @@ DispatchEventEferSyscall(VIRTUAL_MACHINE_STATE * VCpu);
VOID
DispatchEventCpuid(VIRTUAL_MACHINE_STATE * VCpu);
+VOID
+DispatchEventXsetbv(VIRTUAL_MACHINE_STATE * VCpu);
+
VOID
DispatchEventTsc(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN IsRdtscp);
diff --git a/hyperdbg/hyperkd/code/debugger/core/Debugger.c b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
index 6432d1d8..c1dada0d 100644
--- a/hyperdbg/hyperkd/code/debugger/core/Debugger.c
+++ b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
@@ -111,6 +111,7 @@ DebuggerInitialize()
InitializeListHead(&g_Events->TrapExecutionInstructionTraceEventsHead);
InitializeListHead(&g_Events->ControlRegister3ModifiedEventsHead);
InitializeListHead(&g_Events->ControlRegisterModifiedEventsHead);
+ InitializeListHead(&g_Events->XsetbvInstructionExecutionEventsHead);
//
// Enabled Debugger Events
@@ -1389,6 +1390,21 @@ DebuggerTriggerEvents(VMM_EVENT_TYPE_ENUM EventType,
break;
+ case XSETBV_INSTRUCTION_EXECUTION:
+
+ //
+ // check if XSETBV is what we want or not
+ //
+ if (CurrentEvent->Options.OptionalParam1 != (UINT64)NULL /*FALSE*/ && CurrentEvent->Options.OptionalParam2 != (UINT64)Context)
+ {
+ //
+ // The XCR is not what we want (and the user didn't intend to get all XSETBVs)
+ //
+ continue;
+ }
+
+ break;
+
default:
break;
}
@@ -2102,6 +2118,9 @@ DebuggerGetEventListByEventType(VMM_EVENT_TYPE_ENUM EventType)
case CONTROL_REGISTER_MODIFIED:
ResultList = &g_Events->ControlRegisterModifiedEventsHead;
break;
+ case XSETBV_INSTRUCTION_EXECUTION:
+ ResultList = &g_Events->XsetbvInstructionExecutionEventsHead;
+ break;
default:
//
@@ -3005,6 +3024,15 @@ DebuggerApplyEvent(PDEBUGGER_EVENT Event,
break;
}
+ case XSETBV_INSTRUCTION_EXECUTION:
+ {
+ //
+ // Apply the XSETBV instruction execution events
+ //
+ ApplyEventXsetbvExecutionEvent(Event, ResultsToReturn, InputFromVmxRoot);
+
+ break;
+ }
default:
{
//
@@ -3576,6 +3604,16 @@ DebuggerTerminateEvent(UINT64 Tag, BOOLEAN InputFromVmxRoot)
break;
}
+ case XSETBV_INSTRUCTION_EXECUTION:
+ {
+ //
+ // Call XSETBV instruction execution event terminator
+ //
+ TerminateXsetbvExecutionEvent(Event, InputFromVmxRoot);
+ Result = TRUE;
+
+ break;
+ }
default:
LogError("Err, unknown event for termination");
Result = FALSE;
diff --git a/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c b/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c
index bba365a6..ebead629 100644
--- a/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c
+++ b/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c
@@ -1304,3 +1304,30 @@ ApplyEventTracingEvent(PDEBUGGER_EVENT Event,
//
Event->Options.OptionalParam1 = Event->InitOptions.OptionalParam1;
}
+
+/**
+ * @brief Applying XSETBV instruction execution events
+ *
+ * @param Event The created event object
+ * @param ResultsToReturn Result buffer that should be returned to
+ * the user-mode
+ * @param InputFromVmxRoot Whether the input comes from VMX root-mode or IOCTL
+ *
+ * @return VOID
+ */
+VOID
+ApplyEventXsetbvExecutionEvent(PDEBUGGER_EVENT Event,
+ PDEBUGGER_EVENT_AND_ACTION_RESULT ResultsToReturn,
+ BOOLEAN InputFromVmxRoot)
+{
+ UNREFERENCED_PARAMETER(Event);
+ UNREFERENCED_PARAMETER(ResultsToReturn);
+ UNREFERENCED_PARAMETER(InputFromVmxRoot);
+
+ //
+ // Enable triggering events for XSETBVs. This event doesn't support custom optional
+ // parameter(s) because it's unconditional. Users can use condition(s) to check for
+ // their custom optional parameters
+ //
+ VmFuncSetTriggerEventForXsetbvs(TRUE);
+}
diff --git a/hyperdbg/hyperkd/code/debugger/events/Termination.c b/hyperdbg/hyperkd/code/debugger/events/Termination.c
index b41939fa..a6809784 100644
--- a/hyperdbg/hyperkd/code/debugger/events/Termination.c
+++ b/hyperdbg/hyperkd/code/debugger/events/Termination.c
@@ -1769,3 +1769,46 @@ TerminateQueryDebuggerResource(UINT32 CoreId,
//
return Result;
}
+
+/**
+ * @brief Termination function for XSETBV Instruction events
+ *
+ * @param Event Target Event Object
+ * @param InputFromVmxRoot Whether the input comes from VMX root-mode or IOCTL
+ *
+ * @return VOID
+ */
+VOID
+TerminateXsetbvExecutionEvent(PDEBUGGER_EVENT Event, BOOLEAN InputFromVmxRoot)
+{
+ UNREFERENCED_PARAMETER(Event);
+ UNREFERENCED_PARAMETER(InputFromVmxRoot);
+
+ if (DebuggerEventListCount(&g_Events->XsetbvInstructionExecutionEventsHead) > 1)
+ {
+ //
+ // There are still other events in the queue (list), we should only remove
+ // this special event (not all events)
+ //
+
+ //
+ // Nothing we can do for this event type, let it work because of other events
+ //
+ return;
+ }
+ else
+ {
+ //
+ // Nothing else is in the list, we have to restore everything to default
+ // as the current event is the only event in the list
+ //
+
+ //
+ // We set the global variable related to the xsetbv to FALSE
+ // so the vm-exit handler, no longer triggers events related
+ // to the xsetbvs (still they cause vm-exits as xsetbv is an
+ // unconditional instruction for vm-exit)
+ //
+ VmFuncSetTriggerEventForXsetbvs(FALSE);
+ }
+}
diff --git a/hyperdbg/hyperkd/header/debugger/core/Debugger.h b/hyperdbg/hyperkd/header/debugger/core/Debugger.h
index c9bada08..c6013525 100644
--- a/hyperdbg/hyperkd/header/debugger/core/Debugger.h
+++ b/hyperdbg/hyperkd/header/debugger/core/Debugger.h
@@ -68,6 +68,7 @@ typedef struct _DEBUGGER_CORE_EVENTS
LIST_ENTRY TrapExecutionInstructionTraceEventsHead; // TRAP_EXECUTION_INSTRUCTION_TRACE
LIST_ENTRY ControlRegister3ModifiedEventsHead; // CONTROL_REGISTER_3_MODIFIED
LIST_ENTRY ControlRegisterModifiedEventsHead; // CONTROL_REGISTER_MODIFIED
+ LIST_ENTRY XsetbvInstructionExecutionEventsHead; // XSETBV_INSTRUCTION_EXECUTION
} DEBUGGER_CORE_EVENTS, *PDEBUGGER_CORE_EVENTS;
diff --git a/hyperdbg/hyperkd/header/debugger/events/ApplyEvents.h b/hyperdbg/hyperkd/header/debugger/events/ApplyEvents.h
index 17238173..bde54526 100644
--- a/hyperdbg/hyperkd/header/debugger/events/ApplyEvents.h
+++ b/hyperdbg/hyperkd/header/debugger/events/ApplyEvents.h
@@ -105,3 +105,8 @@ VOID
ApplyEventTracingEvent(PDEBUGGER_EVENT Event,
PDEBUGGER_EVENT_AND_ACTION_RESULT ResultsToReturn,
BOOLEAN InputFromVmxRoot);
+
+VOID
+ApplyEventXsetbvExecutionEvent(PDEBUGGER_EVENT Event,
+ PDEBUGGER_EVENT_AND_ACTION_RESULT ResultsToReturn,
+ BOOLEAN InputFromVmxRoot);
diff --git a/hyperdbg/hyperkd/header/debugger/events/Termination.h b/hyperdbg/hyperkd/header/debugger/events/Termination.h
index 5e4a1669..3e240938 100644
--- a/hyperdbg/hyperkd/header/debugger/events/Termination.h
+++ b/hyperdbg/hyperkd/header/debugger/events/Termination.h
@@ -82,3 +82,6 @@ TerminateQueryDebuggerResource(UINT32 CoreId,
PROTECTED_HV_RESOURCES_TYPE ResourceType,
PVOID Context,
PROTECTED_HV_RESOURCES_PASSING_OVERS PassOver);
+
+VOID
+TerminateXsetbvExecutionEvent(PDEBUGGER_EVENT Event, BOOLEAN InputFromVmxRoot);
diff --git a/hyperdbg/include/SDK/headers/Events.h b/hyperdbg/include/SDK/headers/Events.h
index 5035e9e0..f69a85ff 100644
--- a/hyperdbg/include/SDK/headers/Events.h
+++ b/hyperdbg/include/SDK/headers/Events.h
@@ -169,6 +169,11 @@ typedef enum _VMM_EVENT_TYPE_ENUM
TRAP_EXECUTION_MODE_CHANGED,
TRAP_EXECUTION_INSTRUCTION_TRACE,
+ //
+ // XSETBV Instruction Execution Events
+ //
+ XSETBV_INSTRUCTION_EXECUTION
+
} VMM_EVENT_TYPE_ENUM;
/**
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
index 1ccce907..a738cb7c 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
@@ -107,6 +107,9 @@ VmFuncSetTriggerEventForVmcalls(BOOLEAN Set);
IMPORT_EXPORT_VMM VOID
VmFuncSetTriggerEventForCpuids(BOOLEAN Set);
+IMPORT_EXPORT_VMM VOID
+VmFuncSetTriggerEventForXsetbvs(BOOLEAN Set);
+
IMPORT_EXPORT_VMM VOID
VmFuncSetInterruptibilityState(UINT64 InterruptibilityState);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/xsetbv.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/xsetbv.cpp
new file mode 100644
index 00000000..959956ae
--- /dev/null
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/xsetbv.cpp
@@ -0,0 +1,124 @@
+/**
+ * @file xsetbv.cpp
+ * @author Community members from HyperDbg group
+ * @brief !xsetbv command
+ * @details This command
+ * @version 0.16
+ * @date 2025-08-20
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+/**
+ * @brief help of the !xsetbv command
+ *
+ * @return VOID
+ */
+VOID
+CommandXsetbvHelp()
+{
+ ShowMessages("!xsetbv : notifies when the XSETBV instruction is executed.\n\n");
+
+ ShowMessages("syntax : \t!xsetbv [pid ProcessId (hex)] [core CoreId (hex)] [imm IsImmediate (yesno)] "
+ "[sc EnableShortCircuiting (onoff)] [stage CallingStage (prepostall)] [buffer PreAllocatedBuffer (hex)] "
+ "[script { Script (string) }] [asm condition { Condition (assembly/hex) }] [asm code { Code (assembly/hex) }] "
+ "[output {OutputName (string)}]\n");
+
+ ShowMessages("\n");
+ ShowMessages("\t\te.g : !xsetbv\n");
+ ShowMessages("\t\te.g : !xsetbv pid 400\n");
+ ShowMessages("\t\te.g : !xsetbv core 2 pid 400\n");
+ ShowMessages("\t\te.g : !xsetbv script { printf(\"XSETBV executed from RIP: %%llx\\n\", @rip); }\n");
+ ShowMessages("\t\te.g : !xsetbv asm code { nop; nop; nop }\n");
+}
+
+/**
+ * @brief !xsetbv command handler
+ *
+ * @param CommandTokens
+ * @param Command
+ *
+ * @return VOID
+ */
+VOID
+CommandXsetbv(vector CommandTokens, string Command)
+{
+ PDEBUGGER_GENERAL_EVENT_DETAIL Event = NULL;
+ PDEBUGGER_GENERAL_ACTION ActionBreakToDebugger = NULL;
+ PDEBUGGER_GENERAL_ACTION ActionCustomCode = NULL;
+ PDEBUGGER_GENERAL_ACTION ActionScript = NULL;
+ UINT32 EventLength;
+ UINT32 ActionBreakToDebuggerLength = 0;
+ UINT32 ActionCustomCodeLength = 0;
+ UINT32 ActionScriptLength = 0;
+ DEBUGGER_EVENT_PARSING_ERROR_CAUSE EventParsingErrorCause;
+
+ //
+ // Interpret and fill the general event and action fields
+ //
+ //
+ if (!InterpretGeneralEventAndActionsFields(
+ &CommandTokens,
+ XSETBV_INSTRUCTION_EXECUTION,
+ &Event,
+ &EventLength,
+ &ActionBreakToDebugger,
+ &ActionBreakToDebuggerLength,
+ &ActionCustomCode,
+ &ActionCustomCodeLength,
+ &ActionScript,
+ &ActionScriptLength,
+ &EventParsingErrorCause))
+ {
+ return;
+ }
+
+ //
+ // Check for size
+ //
+ if (CommandTokens.size() > 1)
+ {
+ ShowMessages("incorrect use of the '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
+ CommandXsetbvHelp();
+
+ FreeEventsAndActionsMemory(Event, ActionBreakToDebugger, ActionCustomCode, ActionScript);
+ return;
+ }
+
+ //
+ // Send the ioctl to the kernel for event registration
+ //
+ if (!SendEventToKernel(Event, EventLength))
+ {
+ //
+ // There was an error, probably the handle was not initialized
+ // we have to free the Action before exit, it is because, we
+ // already freed the Event and string buffers
+ //
+
+ FreeEventsAndActionsMemory(Event, ActionBreakToDebugger, ActionCustomCode, ActionScript);
+ return;
+ }
+
+ //
+ // Add the event to the kernel
+ //
+ if (!RegisterActionToEvent(Event,
+ ActionBreakToDebugger,
+ ActionBreakToDebuggerLength,
+ ActionCustomCode,
+ ActionCustomCodeLength,
+ ActionScript,
+ ActionScriptLength))
+ {
+ //
+ // There was an error
+ //
+
+ FreeEventsAndActionsMemory(Event, ActionBreakToDebugger, ActionCustomCode, ActionScript);
+ return;
+ }
+}
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
index 38bdfa89..02e436ea 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
@@ -1637,4 +1637,6 @@ InitializeCommandsDictionary()
g_CommandsList["!hwdbg_clock"] = {&CommandHwClk, &CommandHwClkHelp, DEBUGGER_COMMAND_HWDBG_HW_CLK_ATTRIBUTES};
g_CommandsList["!hw"] = {&CommandHw, &CommandHwHelp, DEBUGGER_COMMAND_HWDBG_HW_ATTRIBUTES};
+
+ g_CommandsList["!xsetbv"] = {&CommandXsetbv, &CommandXsetbvHelp, DEBUGGER_COMMAND_XSETBV_ATTRIBUTES};
}
diff --git a/hyperdbg/libhyperdbg/header/commands.h b/hyperdbg/libhyperdbg/header/commands.h
index c5abdbba..d6241cd0 100644
--- a/hyperdbg/libhyperdbg/header/commands.h
+++ b/hyperdbg/libhyperdbg/header/commands.h
@@ -348,6 +348,8 @@ typedef std::map CommandType;
#define DEBUGGER_COMMAND_CPUID_ATTRIBUTES DEBUGGER_COMMAND_ATTRIBUTE_EVENT
+#define DEBUGGER_COMMAND_XSETBV_ATTRIBUTES DEBUGGER_COMMAND_ATTRIBUTE_EVENT
+
#define DEBUGGER_COMMAND_MSRREAD_ATTRIBUTES DEBUGGER_COMMAND_ATTRIBUTE_EVENT
#define DEBUGGER_COMMAND_MSRWRITE_ATTRIBUTES DEBUGGER_COMMAND_ATTRIBUTE_EVENT
@@ -769,3 +771,9 @@ CommandHwClk(vector CommandTokens, string Command);
VOID
CommandHw(vector CommandTokens, string Command);
+
+VOID
+CommandXsetbv(vector CommandTokens, string Command);
+
+VOID
+CommandXsetbvHelp();
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
index 6e8fb39c..c262862e 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
@@ -184,6 +184,7 @@
+
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
index 1da54152..98a6f1f3 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
@@ -595,6 +595,9 @@
code\debugger\commands\extension-commands
+
+ code\debugger\commands\extension-commands
+
From 8e111d93c6ad66a3df8b73ec825779f839ff31bb Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 21 Aug 2025 00:39:35 +0200
Subject: [PATCH 037/323] remove extra code from XSETBV command
---
hyperdbg/hyperhv/code/interface/Dispatch.c | 13 -------------
1 file changed, 13 deletions(-)
diff --git a/hyperdbg/hyperhv/code/interface/Dispatch.c b/hyperdbg/hyperhv/code/interface/Dispatch.c
index de999115..c0733d4d 100644
--- a/hyperdbg/hyperhv/code/interface/Dispatch.c
+++ b/hyperdbg/hyperhv/code/interface/Dispatch.c
@@ -196,19 +196,6 @@ DispatchEventXsetbv(VIRTUAL_MACHINE_STATE * VCpu)
VMM_CALLBACK_TRIGGERING_EVENT_STATUS_TYPE EventTriggerResult;
BOOLEAN PostEventTriggerReq = FALSE;
- //
- // Check if attaching is for command dispatching in user debugger
- // or a regular XSETBV
- //
- if (g_Callbacks.UdCheckForCommand != NULL && g_Callbacks.UdCheckForCommand())
- {
- //
- // It's a thread command for user debugger, no need to run the
- // actual XSETBV instruction and change the registers
- //
- return;
- }
-
//
// As the context to event trigger, we send the ecx (XCR index) before the xsetbv
// so that the debugger can both read the ecx as it contains the XCR index
From 13f2b63053574cde4cc540a0460ff012a004f99d Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 21 Aug 2025 19:48:37 +0200
Subject: [PATCH 038/323] fix checks for parameters of the XSETBV extension
command
---
CHANGELOG.md | 1 +
CREDITS.md | 1 +
hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj | 9 +--
.../hyperdbg-test.vcxproj.filters | 12 +--
.../hyperkd/code/debugger/core/Debugger.c | 5 +-
.../commands/extension-commands}/pcicam.cpp | 0
.../commands/extension-commands/xsetbv.cpp | 79 +++++++++++++++----
.../{ => code/debugger/misc}/pci-id.cpp | 0
hyperdbg/libhyperdbg/{ => header}/pci-id.h | 0
hyperdbg/libhyperdbg/libhyperdbg.vcxproj | 6 +-
.../libhyperdbg/libhyperdbg.vcxproj.filters | 14 ++--
hyperdbg/libhyperdbg/pch.h | 2 +-
12 files changed, 88 insertions(+), 41 deletions(-)
rename hyperdbg/libhyperdbg/{ => code/debugger/commands/extension-commands}/pcicam.cpp (100%)
rename hyperdbg/libhyperdbg/{ => code/debugger/misc}/pci-id.cpp (100%)
rename hyperdbg/libhyperdbg/{ => header}/pci-id.h (100%)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d6257f70..b10574bd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,7 @@ New release of the HyperDbg Debugger.
### Changed
- Non-volatile XMM registers are no longer saved/restored on VM-exit handler ([link](https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions?view=msvc-170))
- Fix grammar and spelling errors throughout HyperDbg codebase ([link](https://github.com/HyperDbg/HyperDbg/pull/546))
+- Relocate extension command files into their corresponding VS directory
- Fix infinite vm-exit bug for the '!monitor x' command thanks to [@unlockable](https://github.com/unlockable) ([link](https://github.com/HyperDbg/HyperDbg/pull/545))
## [0.15.0.0] - 2025-08-18
diff --git a/CREDITS.md b/CREDITS.md
index cc83026d..87577baa 100644
--- a/CREDITS.md
+++ b/CREDITS.md
@@ -26,3 +26,4 @@ Just so you know – the attributions listed on this credits page are acknowledg
- Björn Ruytenberg ([@0Xiphorus](https://twitter.com/0Xiphorus))
- Marcis Zarins ([@CokeTree3](https://github.com/CokeTree3)) for his works on enhancing HyperEvade project
- Artem Shishkin ([@honorary_bot](https://twitter.com/honorary_bot)) for always answering our hypervisor questions
+- unrustled.jimmies for helping us debug and fix issues, and his contributions in HyperDbg
\ No newline at end of file
diff --git a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
index 43f98fd3..028bec76 100644
--- a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
+++ b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
@@ -64,7 +64,7 @@
_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
true
$(SolutionDir)\include;$(SolutionDir)dependencies;$(ProjectDir);%(AdditionalIncludeDirectories)
- Use
+ Create
pch.h
MultiThreadedDebug
true
@@ -86,7 +86,7 @@
_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
true
$(SolutionDir)\include;$(SolutionDir)dependencies;$(ProjectDir);%(AdditionalIncludeDirectories)
- Use
+ Create
pch.h
MultiThreaded
true
@@ -109,10 +109,7 @@
-
- Create
- Create
-
+
diff --git a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters
index 88a551d0..c8ed9a82 100644
--- a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters
+++ b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters
@@ -23,9 +23,6 @@
-
- code
-
code\tests
@@ -44,11 +41,11 @@
code\hardware
+
+ code
+
-
- header
-
header
@@ -64,6 +61,9 @@
header
+
+ header
+
diff --git a/hyperdbg/hyperkd/code/debugger/core/Debugger.c b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
index c1dada0d..0ce91b3e 100644
--- a/hyperdbg/hyperkd/code/debugger/core/Debugger.c
+++ b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
@@ -1147,7 +1147,8 @@ DebuggerTriggerEvents(VMM_EVENT_TYPE_ENUM EventType,
}
//
- // Check event type specific conditions
+ // Check event type specific conditions, if the event is not mentioned
+ // here, it means that it doesn't have any special condition
//
switch (CurrentEvent->EventType)
{
@@ -1405,7 +1406,7 @@ DebuggerTriggerEvents(VMM_EVENT_TYPE_ENUM EventType,
break;
- default:
+ default: // All other events that don't have conditions
break;
}
diff --git a/hyperdbg/libhyperdbg/pcicam.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pcicam.cpp
similarity index 100%
rename from hyperdbg/libhyperdbg/pcicam.cpp
rename to hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pcicam.cpp
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/xsetbv.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/xsetbv.cpp
index 959956ae..ab5d5ca0 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/xsetbv.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/xsetbv.cpp
@@ -1,6 +1,6 @@
/**
* @file xsetbv.cpp
- * @author Community members from HyperDbg group
+ * @author unrustled.jimmies
* @brief !xsetbv command
* @details This command
* @version 0.16
@@ -19,18 +19,19 @@
VOID
CommandXsetbvHelp()
{
- ShowMessages("!xsetbv : notifies when the XSETBV instruction is executed.\n\n");
+ ShowMessages("!xsetbv : monitors execution of xsetbv instructions.\n\n");
- ShowMessages("syntax : \t!xsetbv [pid ProcessId (hex)] [core CoreId (hex)] [imm IsImmediate (yesno)] "
- "[sc EnableShortCircuiting (onoff)] [stage CallingStage (prepostall)] [buffer PreAllocatedBuffer (hex)] "
- "[script { Script (string) }] [asm condition { Condition (assembly/hex) }] [asm code { Code (assembly/hex) }] "
- "[output {OutputName (string)}]\n");
+ ShowMessages("syntax : \t!xsetbv [Xcr (hex)] [pid ProcessId (hex)] [core CoreId (hex)] "
+ "[imm IsImmediate (yesno)] [sc EnableShortCircuiting (onoff)] [stage CallingStage (prepostall)] "
+ "[buffer PreAllocatedBuffer (hex)] [script { Script (string) }] [asm condition { Condition (assembly/hex) }] "
+ "[asm code { Code (assembly/hex) }] [output {OutputName (string)}]\n");
ShowMessages("\n");
ShowMessages("\t\te.g : !xsetbv\n");
+ ShowMessages("\t\te.g : !xsetbv 0\n");
ShowMessages("\t\te.g : !xsetbv pid 400\n");
ShowMessages("\t\te.g : !xsetbv core 2 pid 400\n");
- ShowMessages("\t\te.g : !xsetbv script { printf(\"XSETBV executed from RIP: %%llx\\n\", @rip); }\n");
+ ShowMessages("\t\te.g : !xsetbv script { printf(\"XSETBV instruction is executed with XCR index: %%llx\\n\", @rcx); }\n");
ShowMessages("\t\te.g : !xsetbv asm code { nop; nop; nop }\n");
}
@@ -49,7 +50,9 @@ CommandXsetbv(vector CommandTokens, string Command)
PDEBUGGER_GENERAL_ACTION ActionBreakToDebugger = NULL;
PDEBUGGER_GENERAL_ACTION ActionCustomCode = NULL;
PDEBUGGER_GENERAL_ACTION ActionScript = NULL;
+ BOOLEAN GetXcr = FALSE;
UINT32 EventLength;
+ UINT64 SpecialTarget = 0;
UINT32 ActionBreakToDebuggerLength = 0;
UINT32 ActionCustomCodeLength = 0;
UINT32 ActionScriptLength = 0;
@@ -58,7 +61,6 @@ CommandXsetbv(vector CommandTokens, string Command)
//
// Interpret and fill the general event and action fields
//
- //
if (!InterpretGeneralEventAndActionsFields(
&CommandTokens,
XSETBV_INSTRUCTION_EXECUTION,
@@ -76,16 +78,62 @@ CommandXsetbv(vector CommandTokens, string Command)
}
//
- // Check for size
+ // Interpret command specific details (if any), of XCR index
//
- if (CommandTokens.size() > 1)
+ for (auto Section : CommandTokens)
{
- ShowMessages("incorrect use of the '%s'\n\n",
- GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
- CommandXsetbvHelp();
+ if (CompareLowerCaseStrings(Section, "!xsetbv"))
+ {
+ continue;
+ }
+ else if (!GetXcr)
+ {
+ //
+ // It's probably an XCR index
+ //
+ if (!ConvertTokenToUInt64(Section, &SpecialTarget))
+ {
+ //
+ // Unknown parameter
+ //
+ ShowMessages("unknown parameter '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(Section).c_str());
+ CommandXsetbvHelp();
- FreeEventsAndActionsMemory(Event, ActionBreakToDebugger, ActionCustomCode, ActionScript);
- return;
+ FreeEventsAndActionsMemory(Event, ActionBreakToDebugger, ActionCustomCode, ActionScript);
+ return;
+ }
+ else
+ {
+ //
+ // A special XCR is set
+ //
+ GetXcr = TRUE;
+ }
+ }
+ else
+ {
+ //
+ // Unknown parameter
+ //
+ ShowMessages("unknown parameter '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(Section).c_str());
+
+ CommandXsetbvHelp();
+
+ FreeEventsAndActionsMemory(Event, ActionBreakToDebugger, ActionCustomCode, ActionScript);
+ return;
+ }
+ }
+
+ //
+ // Set the target XCR (if not specific then it means all XCRs)
+ //
+ Event->Options.OptionalParam1 = GetXcr;
+
+ if (GetXcr)
+ {
+ Event->Options.OptionalParam2 = SpecialTarget;
}
//
@@ -117,7 +165,6 @@ CommandXsetbv(vector CommandTokens, string Command)
//
// There was an error
//
-
FreeEventsAndActionsMemory(Event, ActionBreakToDebugger, ActionCustomCode, ActionScript);
return;
}
diff --git a/hyperdbg/libhyperdbg/pci-id.cpp b/hyperdbg/libhyperdbg/code/debugger/misc/pci-id.cpp
similarity index 100%
rename from hyperdbg/libhyperdbg/pci-id.cpp
rename to hyperdbg/libhyperdbg/code/debugger/misc/pci-id.cpp
diff --git a/hyperdbg/libhyperdbg/pci-id.h b/hyperdbg/libhyperdbg/header/pci-id.h
similarity index 100%
rename from hyperdbg/libhyperdbg/pci-id.h
rename to hyperdbg/libhyperdbg/header/pci-id.h
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
index c262862e..0b622578 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
@@ -147,6 +147,7 @@
+
@@ -156,7 +157,6 @@
-
@@ -178,6 +178,7 @@
+
@@ -204,6 +205,7 @@
+
@@ -300,8 +302,6 @@
-
-
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
index 98a6f1f3..539bcab3 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
@@ -173,7 +173,7 @@
header
-
+
header
@@ -580,12 +580,6 @@
code\debugger\commands\debugging-commands
-
- code\debugger\misc
-
-
- code\debugger\commands\extension-commands
-
code\debugger\commands\extension-commands
@@ -598,6 +592,12 @@
code\debugger\commands\extension-commands
+
+ code\debugger\commands\extension-commands
+
+
+ code\debugger\misc
+
diff --git a/hyperdbg/libhyperdbg/pch.h b/hyperdbg/libhyperdbg/pch.h
index 6017232f..db3e26f9 100644
--- a/hyperdbg/libhyperdbg/pch.h
+++ b/hyperdbg/libhyperdbg/pch.h
@@ -144,7 +144,7 @@ typedef const wchar_t *LPCWCHAR, *PCWCHAR;
//
// PCI IDs
//
-#include "pci-id.h"
+#include "header/pci-id.h"
//
// General
From b2056dfe349c1e948b646913fce8d70b38c67fef Mon Sep 17 00:00:00 2001
From: Sina Karvandi
Date: Fri, 22 Aug 2025 00:54:12 +0200
Subject: [PATCH 039/323] Refine README content and formatting
Updated README.md to enhance clarity and fix formatting issues.
---
README.md | 49 +++++++++++++++++++++++++++++++++----------------
1 file changed, 33 insertions(+), 16 deletions(-)
diff --git a/README.md b/README.md
index 03d3a2eb..a726f145 100644
--- a/README.md
+++ b/README.md
@@ -6,11 +6,10 @@
-
# HyperDbg Debugger
-HyperDbg Debugger is an open-source, community-driven, hypervisor-assisted, user-mode, and kernel-mode Windows debugger with a focus on using modern hardware technologies. It is a debugger designed for analyzing, fuzzing, and reversing.
+**HyperDbg Debugger** is a free (as in free beer and freedom), open-source, community-driven, hypervisor-assisted, user-mode, and kernel-mode Windows debugger with a focus on using modern hardware technologies. It is a debugger designed for analyzing, fuzzing, and reversing.
You can follow **HyperDbg** on **[Twitter](https://twitter.com/HyperDbg)** or **[Mastodon](https://infosec.exchange/@hyperdbg)** to get notified about new releases, or join any of the HyperDbg groups, where you can ask developers and open-source reversing enthusiasts for help setting up and using HyperDbg.
@@ -23,12 +22,24 @@ You can follow **HyperDbg** on **[Twitter](https://twitter.com/HyperDbg)** or **
**HyperDbg** is designed with a focus on using modern hardware technologies to provide new features to the debuggers' world. It operates on top of Windows by virtualizing an already running system using Intel VT-x and EPT. This debugger aims not to use any APIs and software debugging mechanisms, but instead, it uses Second Layer Page Table (a.k.a. Extended Page Table or EPT) extensively to monitor both kernel and user executions.
-HyperDbg comes with features like hidden hooks, which are as fast as old inline hooks, but also stealth. It mimics hardware debug registers for (read & write) to a specific location, but this time entirely invisible for both Windows kernel and the programs, and of course, without any limitation in size or count!
+HyperDbg comes with features like hidden hooks, which are as fast as old inline hooks, but also stealth. It mimics hardware debug registers for (read & write) to a specific location, but this time invisible for both the Windows kernel and the programs, and of course, without any limitation in size or count!
-Using TLB-splitting, and having features such as measuring code coverage and monitoring all mov(s) to/from memory by a function, makes HyperDbg a unique debugger.
+Using TLB-splitting and having features such as measuring code coverage and monitoring all mov(s) to/from memory by a function, makes HyperDbg a unique debugger.
Although it has novel features, HyperDbg tries to be as stealthy as possible. It doesn’t use any debugging APIs to debug Windows or any application, so classic anti-debugging methods won’t detect it. Also, it resists the exploitation of time delta methods (e.g., RDTSC/RDTSCP) to detect the presence of hypervisors, therefore making it much harder for applications, packers, protectors, malware, anti-cheat engines, etc. to discover the debugger.
+## Why HyperDbg?
+
+HyperDbg is harder to set up and use, and also requires deeper low-level system knowledge compared to traditional debuggers. However, it provides two major advantages:
+
+1. **Full System & OS Control**
+HyperDbg operates at the hypervisor level, giving you powerful capabilities that are simply not possible with classic debuggers. This allows you to leverage hardware-assisted [features](https://github.com/HyperDbg/HyperDbg?tab=readme-ov-file#unique-features) for advanced reverse engineering and debugging scenarios.
+
+2. **Stealth & Detection Resistance**
+Since HyperDbg doesn't rely on standard OS debugging APIs, it is generally much harder (though not impossible) to detect. This makes it a strong choice when working against anti-debugging protections.
+
+These advantages open up entirely new debugging and reverse engineering techniques that go beyond what conventional debuggers can offer.
+
## Build & Installation
You can download the latest compiled binary files from **[releases](https://github.com/HyperDbg/HyperDbg/releases)**; otherwise, if you want to build HyperDbg, you should clone HyperDbg with the `--recursive` flag.
@@ -91,10 +102,11 @@ In case you use one of **HyperDbg**'s components in your work, please consider c
You can also read [this article](https://research.hyperdbg.org/debugger/kernel-debugger-design/) as it describes the overall architecture, technical difficulties, design decisions, and internals of HyperDbg Debugger, [this article](https://research.hyperdbg.org/vmm/transparency/) about our efforts on vm-exit transparency, [this article](https://research.hyperdbg.org/debugger/chasing-bugs/) about chasing bugs within hypervisors, and [this article](https://research.hyperdbg.org/debugger/gaining-insights/) about new reverse engineering techniques introduced in HyperDbg. More articles, posts, and resources are available at the **[awesome](https://github.com/HyperDbg/awesome)** repo, and in addition, the **[slides](https://github.com/HyperDbg/slides)** repo provides presentation slides for further reference.
## Unique Features
+
* Advanced Hypervisor-based Kernel Mode Debugger [link ][link ][link ]
* Classic EPT Hook (Hidden Breakpoint) [link ][link ][link ]
* Inline EPT Hook (Inline Hook) [link ][link ]
-* Monitor Memory For R/W (Emulating Hardware Debug Registers Without Limitation) [link ][link ][link ]
+* Monitor Memory for R/W (Emulating Hardware Debug Registers Without Limitation) [link ][link ][link ]
* SYSCALL Hook (Disable EFER & Handle #UD) [link ][link ][link ]
* SYSRET Hook (Disable EFER & Handle #UD) [link ][link ]
* CPUID Hook & Monitor [link ][link ]
@@ -104,15 +116,15 @@ You can also read [this article](https://research.hyperdbg.org/debugger/kernel-d
* RDPMC Hook & Monitor [link ]
* VMCALL Hook & Monitor [link ]
* Debug Registers Hook & Monitor [link ]
-* I/O Port (In Instruction) Hook & Monitor [link ][link ]
-* I/O Port (Out Instruction) Hook & Monitor [link ][link ]
+* I/O Port (IN Instruction) Hook & Monitor [link ][link ]
+* I/O Port (OUT Instruction) Hook & Monitor [link ][link ]
* MMIO Monitor [link ]
* Exception (IDT < 32) Monitor [link ][link ][link ]
* External-Interrupt (IDT > 32) Monitor [link ][link ][link ]
* Running Automated Scripts [link ]
-* Transparent-mode (Anti-debugging and Anti-hypervisor Resistance) [link ][link ]
-* Running Custom Assembly In Both VMX-root, VMX non-root (Kernel & User) [link ]
-* Checking For Custom Conditions [link ][link ]
+* Transparent-mode and Hyperevade Project (Anti-debugging and Anti-hypervisor Resistance) [link ][link ][link ]
+* Running Custom Assembly in Both VMX-root, VMX non-root (Kernel & User) [link ]
+* Checking for Custom Conditions [link ][link ]
* Process-specific & Thread-specific Debugging [link ][link ][link ]
* VMX-root Compatible Message Tracing [link ]
* Powerful Kernel Side Scripting Engine [link ][link ]
@@ -123,18 +135,21 @@ You can also read [this article](https://research.hyperdbg.org/debugger/kernel-d
* Various Custom Scripts [link ]
* HyperDbg Software Development Kit (SDK) [link ]
* Event Short-circuiting [link ][link ]
-* Tracking records of function calls and return addresses [link ]
+* Tracking Records of Function Calls and Return Addresses [link ]
* Kernel-level Length Disassembler Engine (LDE) [link ][link ]
* Memory Execution Monitor & Execution Blocking [link ]
* Custom Page-fault Injection [link ]
* Different Event Calling Stages [link ]
* Injecting Custom Interrupts/Exceptions/Faults [link ][link ]
-* Instant events in the Debugger Mode [link ]
-* Detect kernel-to-user and user-to-kernel transitions [link ]
-* Physical memory monitoring hooks [link ]
+* Instant Events in the Debugger Mode [link ]
+* Detecting Kernel-to-user and User-to-kernel Transitions [link ]
+* Physical Memory Monitoring Hooks [link ]
* Enumerating PCI/PCI-e Devices [link ]
* Interpreting and Dumping PCI/PCI-e Configuration Space (CAM) [link ]
-* Dumping IDT entries, I/O APIC, and Local APIC in XAPIC and X2APIC modes [link ][link ][link ]
+* Dumping IDT Entries, I/O APIC, and Local APIC in XAPIC and X2APIC Modes [link ][link ][link ]
+* Triggering and Counting System Management Mode (SMM) Interrupts (SMIs) [link ]
+* Attaching to the User-mode Process and Preventing Execution [link ]
+* Intercepting Execution of XSETBV Instructions [link ]
## How does it work?
@@ -146,15 +161,17 @@ You can read about the internal design of HyperDbg and its features in the [docu
## Scripts
+
You can write your **[scripts](https://github.com/HyperDbg/scripts)** to automate your debugging journey. **HyperDbg** has a powerful, fast, and entirely kernel-side implemented [script engine](https://docs.hyperdbg.org/commands/scripting-language).
## Contributing
+
Contributing to HyperDbg is super appreciated. We have made a list of potential [tasks](https://github.com/HyperDbg/HyperDbg/blob/master/CONTRIBUTING.md#things-to-work-on) that you might be interested in contributing towards.
If you want to contribute to HyperDbg, please read the [Contribution Guide](https://github.com/HyperDbg/HyperDbg/blob/master/CONTRIBUTING.md).
-
## License
+
**HyperDbg**, and all its submodules and repos, unless a license is otherwise specified, are licensed under **GPLv3** LICENSE.
Dependencies are licensed by their own.
From c37ec6f3c000339fe63174f2d72e9fa72a8c5a7c Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 23 Aug 2025 01:30:12 +0200
Subject: [PATCH 040/323] apply command to the target thread from MBEC
---
hyperdbg/hyperhv/code/interface/Dispatch.c | 13 -----
hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c | 22 +++++--
.../code/debugger/user-level/Attaching.c | 14 +++--
.../hyperkd/code/debugger/user-level/Ud.c | 57 +++++++++++--------
hyperdbg/hyperkd/code/driver/Loader.c | 1 -
.../hyperkd/header/debugger/user-level/Ud.h | 2 +-
hyperdbg/include/SDK/modules/VMM.h | 7 ---
hyperdbg/include/config/Configuration.h | 2 +-
.../commands/debugging-commands/t.cpp | 2 +-
.../code/debugger/user-level/ud.cpp | 2 +-
10 files changed, 65 insertions(+), 57 deletions(-)
diff --git a/hyperdbg/hyperhv/code/interface/Dispatch.c b/hyperdbg/hyperhv/code/interface/Dispatch.c
index c0733d4d..1e456880 100644
--- a/hyperdbg/hyperhv/code/interface/Dispatch.c
+++ b/hyperdbg/hyperhv/code/interface/Dispatch.c
@@ -116,19 +116,6 @@ DispatchEventCpuid(VIRTUAL_MACHINE_STATE * VCpu)
VMM_CALLBACK_TRIGGERING_EVENT_STATUS_TYPE EventTriggerResult;
BOOLEAN PostEventTriggerReq = FALSE;
- //
- // Check if attaching is for command dispatching in user debugger
- // or a regular CPUID
- //
- if (g_Callbacks.UdCheckForCommand != NULL && g_Callbacks.UdCheckForCommand())
- {
- //
- // It's a thread command for user debugger, no need to run the
- // actual CPUID instruction and change the registers
- //
- return;
- }
-
//
// As the context to event trigger, we send the eax before the cpuid
// so that the debugger can both read the eax as it's now changed by
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
index b7778fbb..407c4c3a 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
@@ -160,6 +160,9 @@ VmxVmexitHandler(_Inout_ PGUEST_REGS GuestRegs)
case VMX_EXIT_REASON_IO_SMI:
case VMX_EXIT_REASON_SMI:
{
+ //
+ // Handle SMI and IO-SMI (should never happen in normal cases)
+ //
LogInfo("VM-exit reason SMM %llx | qual: %llx", ExitReason, VCpu->ExitQualification);
break;
@@ -185,6 +188,9 @@ VmxVmexitHandler(_Inout_ PGUEST_REGS GuestRegs)
}
case VMX_EXIT_REASON_EPT_VIOLATION:
{
+ //
+ // Handle EPT violation
+ //
if (EptHandleEptViolation(VCpu) == FALSE)
{
LogError("Err, there were errors in handling EPT violation");
@@ -194,6 +200,9 @@ VmxVmexitHandler(_Inout_ PGUEST_REGS GuestRegs)
}
case VMX_EXIT_REASON_EPT_MISCONFIGURATION:
{
+ //
+ // Handle EPT misconfiguration (should never happen)
+ //
EptHandleMisconfiguration();
break;
@@ -296,12 +305,12 @@ VmxVmexitHandler(_Inout_ PGUEST_REGS GuestRegs)
}
case VMX_EXIT_REASON_EXECUTE_XSETBV:
{
- //
- // Dispatch and trigger the XSETBV instruction events
- //
- DispatchEventXsetbv(VCpu);
+ //
+ // Dispatch and trigger the XSETBV instruction events
+ //
+ DispatchEventXsetbv(VCpu);
- break;
+ break;
}
case VMX_EXIT_REASON_VMX_PREEMPTION_TIMER_EXPIRED:
{
@@ -323,6 +332,9 @@ VmxVmexitHandler(_Inout_ PGUEST_REGS GuestRegs)
}
default:
{
+ //
+ // Not handled vm-exit
+ //
LogError("Err, unknown vmexit, reason : 0x%llx", ExitReason);
break;
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c b/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c
index 59a9a148..8cf99d9c 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c
@@ -656,11 +656,17 @@ AttachingCheckThreadInterceptionWithUserDebugger(UINT32 CoreId)
//
// Handling state through the user-mode debugger
//
- UdCheckAndHandleBreakpointsAndDebugBreaks(DbgState,
- DEBUGGEE_PAUSING_REASON_DEBUGGEE_GENERAL_THREAD_INTERCEPTED,
- NULL);
+ if (UdCheckAndHandleBreakpointsAndDebugBreaks(DbgState,
+ DEBUGGEE_PAUSING_REASON_DEBUGGEE_GENERAL_THREAD_INTERCEPTED,
+ NULL))
+ {
+ //
+ // Check for possible commands that need to be executed
+ //
+ UdCheckForCommand(ProcessDebuggingDetail);
- return TRUE;
+ return TRUE;
+ }
}
//
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
index a32dd7f8..97fbc07e 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
@@ -184,6 +184,7 @@ UdRestoreToOriginalDirection(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingD
* @brief Perform stepping though the instructions in target thread
*
* @param ThreadDebuggingDetails
+ * @param SteppingType
*
* @return VOID
*/
@@ -225,11 +226,6 @@ UdStepInstructions(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
break;
}
- //
- // Continue the current instruction won't pass it
- //
- VmFuncSuppressRipIncrement(KeGetCurrentProcessorNumberEx(NULL));
-
//
// It's not paused anymore!
//
@@ -239,6 +235,7 @@ UdStepInstructions(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
/**
* @brief Perform the user-mode commands
*
+ * @param ProcessDebuggingDetails
* @param ThreadDebuggingDetails
* @param UserAction
* @param OptionalParam1
@@ -249,12 +246,13 @@ UdStepInstructions(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
* @return BOOLEAN
*/
BOOLEAN
-UdPerformCommand(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
- DEBUGGER_UD_COMMAND_ACTION_TYPE UserAction,
- UINT64 OptionalParam1,
- UINT64 OptionalParam2,
- UINT64 OptionalParam3,
- UINT64 OptionalParam4)
+UdPerformCommand(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail,
+ PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
+ DEBUGGER_UD_COMMAND_ACTION_TYPE UserAction,
+ UINT64 OptionalParam1,
+ UINT64 OptionalParam2,
+ UINT64 OptionalParam3,
+ UINT64 OptionalParam4)
{
UNREFERENCED_PARAMETER(OptionalParam2);
UNREFERENCED_PARAMETER(OptionalParam3);
@@ -272,6 +270,17 @@ UdPerformCommand(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
//
UdStepInstructions(ThreadDebuggingDetails, (DEBUGGER_REMOTE_STEPPING_REQUEST)OptionalParam1);
+ //
+ // Continue the debuggee process
+ //
+ if (AttachingConfigureInterceptingThreads(ProcessDebuggingDetail->Token, FALSE))
+ {
+ //
+ // Unpause the threads of the target process
+ //
+ ThreadHolderUnpauseAllThreadsInProcess(ProcessDebuggingDetail);
+ }
+
break;
default:
@@ -280,6 +289,7 @@ UdPerformCommand(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
// Invalid user action
//
return FALSE;
+
break;
}
@@ -289,20 +299,15 @@ UdPerformCommand(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
/**
* @brief Check for the user-mode commands
*
+ * @param ProcessDebuggingDetail
+ *
* @return BOOLEAN
*/
BOOLEAN
-UdCheckForCommand()
+UdCheckForCommand(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail)
{
PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails;
-
- //
- // Check if user-debugger is initialized or not
- //
- if (!g_UserDebuggerState)
- {
- return FALSE;
- }
+ BOOLEAN CommandFound = FALSE;
ThreadDebuggingDetails = ThreadHolderGetProcessThreadDetailsByProcessIdAndThreadId(HANDLE_TO_UINT32(PsGetCurrentProcessId()),
HANDLE_TO_UINT32(PsGetCurrentThreadId()));
@@ -329,10 +334,16 @@ UdCheckForCommand()
{
if (ThreadDebuggingDetails->UdAction[i].ActionType != DEBUGGER_UD_COMMAND_ACTION_TYPE_NONE)
{
+ //
+ // We found a command for this thread
+ //
+ CommandFound = TRUE;
+
//
// Perform the command
//
- UdPerformCommand(ThreadDebuggingDetails,
+ UdPerformCommand(ProcessDebuggingDetail,
+ ThreadDebuggingDetails,
ThreadDebuggingDetails->UdAction[i].ActionType,
ThreadDebuggingDetails->UdAction[i].OptionalParam1,
ThreadDebuggingDetails->UdAction[i].OptionalParam2,
@@ -360,9 +371,9 @@ UdCheckForCommand()
}
//
- // Won't change the registers for cpuid
+ // Return whether we found a command or not
//
- return TRUE;
+ return CommandFound;
}
/**
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index 90cc6216..d9ab3408 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -59,7 +59,6 @@ LoaderInitVmmAndDebugger()
VmmCallbacks.DebuggingCallbackHandleBreakpointException = BreakpointHandleBreakpoints;
VmmCallbacks.DebuggingCallbackHandleDebugBreakpointException = BreakpointCheckAndHandleDebugBreakpoint;
VmmCallbacks.BreakpointCheckAndHandleReApplyingBreakpoint = BreakpointCheckAndHandleReApplyingBreakpoint;
- VmmCallbacks.UdCheckForCommand = UdCheckForCommand;
VmmCallbacks.DebuggerCheckProcessOrThreadChange = DebuggerCheckProcessOrThreadChange;
VmmCallbacks.DebuggingCallbackCheckThreadInterception = AttachingCheckThreadInterceptionWithUserDebugger;
VmmCallbacks.KdCheckAndHandleNmiCallback = KdCheckAndHandleNmiCallback;
diff --git a/hyperdbg/hyperkd/header/debugger/user-level/Ud.h b/hyperdbg/hyperkd/header/debugger/user-level/Ud.h
index 5b2149fd..1f669b18 100644
--- a/hyperdbg/hyperkd/header/debugger/user-level/Ud.h
+++ b/hyperdbg/hyperkd/header/debugger/user-level/Ud.h
@@ -65,4 +65,4 @@ BOOLEAN
UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest);
BOOLEAN
-UdCheckForCommand();
+UdCheckForCommand(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail);
diff --git a/hyperdbg/include/SDK/modules/VMM.h b/hyperdbg/include/SDK/modules/VMM.h
index 89f3b9cd..ebdf3b53 100644
--- a/hyperdbg/include/SDK/modules/VMM.h
+++ b/hyperdbg/include/SDK/modules/VMM.h
@@ -76,12 +76,6 @@ typedef BOOLEAN (*DEBUGGING_CALLBACK_HANDLE_DEBUG_BREAKPOINT_EXCEPTION)(UINT32 C
*/
typedef BOOLEAN (*DEBUGGING_CALLBACK_CHECK_THREAD_INTERCEPTION)(UINT32 CoreId);
-/**
- * @brief Check for commands in user-debugger
- *
- */
-typedef BOOLEAN (*UD_CHECK_FOR_COMMAND)();
-
/**
* @brief Handle registered MTF callback
*
@@ -206,7 +200,6 @@ typedef struct _VMM_CALLBACKS
// Callbacks to be removed
//
BREAKPOINT_CHECK_AND_HANDLE_REAPPLYING_BREAKPOINT BreakpointCheckAndHandleReApplyingBreakpoint;
- UD_CHECK_FOR_COMMAND UdCheckForCommand;
KD_CHECK_AND_HANDLE_NMI_CALLBACK KdCheckAndHandleNmiCallback;
VMM_CALLBACK_REGISTERED_MTF_HANDLER VmmCallbackRegisteredMtfHandler; // Fixed but not good
INTERCEPTION_CALLBACK_TRIGGER_CLOCK_AND_IPI DebuggerCheckProcessOrThreadChange;
diff --git a/hyperdbg/include/config/Configuration.h b/hyperdbg/include/config/Configuration.h
index e0e4dec3..fc84cd44 100644
--- a/hyperdbg/include/config/Configuration.h
+++ b/hyperdbg/include/config/Configuration.h
@@ -72,7 +72,7 @@
/**
* @brief Activates the user-mode debugger
*/
-#define ActivateUserModeDebugger FALSE
+#define ActivateUserModeDebugger TRUE
/**
* @brief Activates the hyperevade project
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/t.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/t.cpp
index 9d9b7330..67a40cc6 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/t.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/t.cpp
@@ -93,7 +93,7 @@ CommandT(vector CommandTokens, string Command)
if (g_ActiveProcessDebuggingState.IsActive && !g_ActiveProcessDebuggingState.IsPaused)
{
ShowMessages("the target process is running, use the "
- "'pause' command or press CTRL+C to pause the process\n");
+ "'pause' command to pause the process\n");
return;
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
index 26665fd4..ca7668c1 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
@@ -1060,7 +1060,7 @@ UdSendStepPacketToDebuggee(UINT64 ProcessDetailToken, UINT32 TargetThreadId, DEB
.IsOnWaitingState = TRUE;
//
- // Send the 'continue' command
+ // Send the 'step' command
//
UdSendCommand(ProcessDetailToken,
TargetThreadId,
From 739d14339373b174691e7cb0209acb56154da0ef Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 23 Aug 2025 15:36:53 +0200
Subject: [PATCH 041/323] show number of blocked context switches
---
CHANGELOG.md | 1 +
.../hyperkd/code/debugger/user-level/ThreadHolder.c | 8 +++++---
hyperdbg/hyperkd/code/debugger/user-level/Ud.c | 12 +++++++++++-
.../header/debugger/user-level/ThreadHolder.h | 1 +
hyperdbg/include/SDK/headers/RequestStructures.h | 1 +
.../code/debugger/commands/meta-commands/switch.cpp | 5 +++--
hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp | 5 +++--
7 files changed, 25 insertions(+), 8 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b10574bd..afc81c22 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ New release of the HyperDbg Debugger.
### Added
- The **!xsetbv** event command is added to execution of XSETBV instruction thanks to HyperDbg group members ([link](https://docs.hyperdbg.org/commands/extension-commands/xsetbv))
+- Number of blocked context switches in the '.switch' command ([link](https://docs.hyperdbg.org/commands/meta-commands/.switch))
### Changed
- Non-volatile XMM registers are no longer saved/restored on VM-exit handler ([link](https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions?view=msvc-170))
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/ThreadHolder.c b/hyperdbg/hyperkd/code/debugger/user-level/ThreadHolder.c
index 4a5201bd..63314ad5 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/ThreadHolder.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/ThreadHolder.c
@@ -638,9 +638,11 @@ ThreadHolderQueryDetailsOfActiveDebuggingThreadsAndProcesses(
//
// A paused thread should be saved
//
- BufferToStoreDetails[CurrentIndex].IsProcess = FALSE;
- BufferToStoreDetails[CurrentIndex].ProcessId = ProcessDebuggingDetails->ProcessId;
- BufferToStoreDetails[CurrentIndex].ThreadId = ThreadHolder->Threads[i].ThreadId;
+ BufferToStoreDetails[CurrentIndex].IsProcess = FALSE;
+ BufferToStoreDetails[CurrentIndex].ProcessId = ProcessDebuggingDetails->ProcessId;
+ BufferToStoreDetails[CurrentIndex].ThreadId = ThreadHolder->Threads[i].ThreadId;
+ BufferToStoreDetails[CurrentIndex].NumberOfBlockedContextSwitches = ThreadHolder->Threads[i].NumberOfBlockedContextSwitches;
+
CurrentIndex++;
if (MaxCount == CurrentIndex)
{
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
index 97fbc07e..d6814d91 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
@@ -319,7 +319,7 @@ UdCheckForCommand(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail)
//
// If we reached here, the current thread is in debugger attached mechanism
- // now we check whether it's a regular CPUID or a debugger paused thread CPUID
+ // now we check whether it's paused or not
//
if (!ThreadDebuggingDetails->IsPaused)
{
@@ -435,6 +435,11 @@ UdSetThreadPausingState(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetai
//
ThreadDebuggingDetails->ThreadRip = VmFuncGetRip();
+ //
+ // Set the number of context switches to one (reset it if already set)
+ //
+ ThreadDebuggingDetails->NumberOfBlockedContextSwitches = 1;
+
//
// Indicate that it's spinning
//
@@ -537,6 +542,11 @@ UdCheckAndHandleBreakpointsAndDebugBreaks(PROCESSOR_DEBUGGING_STATE * DbgS
//
if (ThreadDebuggingDetails->IsPaused)
{
+ //
+ // Increase the number of context switches
+ //
+ ThreadDebuggingDetails->NumberOfBlockedContextSwitches++;
+
//
// The thread is already paused, so we don't need to pause it again
//
diff --git a/hyperdbg/hyperkd/header/debugger/user-level/ThreadHolder.h b/hyperdbg/hyperkd/header/debugger/user-level/ThreadHolder.h
index f00e81db..309d9d33 100644
--- a/hyperdbg/hyperkd/header/debugger/user-level/ThreadHolder.h
+++ b/hyperdbg/hyperkd/header/debugger/user-level/ThreadHolder.h
@@ -34,6 +34,7 @@ typedef struct _USERMODE_DEBUGGING_THREAD_DETAILS
UINT32 ThreadId;
UINT64 ThreadRip; // if IsPaused is TRUE
BOOLEAN IsPaused;
+ UINT64 NumberOfBlockedContextSwitches;
DEBUGGER_UD_COMMAND_ACTION UdAction[MAX_USER_ACTIONS_FOR_THREADS];
} USERMODE_DEBUGGING_THREAD_DETAILS, *PUSERMODE_DEBUGGING_THREAD_DETAILS;
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 2681ef08..c292a862 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -842,6 +842,7 @@ typedef struct _USERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS
{
UINT32 ProcessId;
UINT32 ThreadId;
+ UINT64 NumberOfBlockedContextSwitches;
BOOLEAN IsProcess;
} USERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS, *PUSERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS;
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/switch.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/switch.cpp
index 27c88cdc..9c3f1f76 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/switch.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/switch.cpp
@@ -33,6 +33,7 @@ CommandSwitchHelp()
ShowMessages("syntax : \t.switch [tid ThreadId (hex)]\n");
ShowMessages("\n");
+ ShowMessages("\t\te.g : .switch\n");
ShowMessages("\t\te.g : .switch list\n");
ShowMessages("\t\te.g : .switch pid b60 \n");
ShowMessages("\t\te.g : .switch tid b60 \n");
@@ -51,7 +52,7 @@ CommandSwitch(vector CommandTokens, string Command)
{
UINT32 PidOrTid = NULL;
- if (CommandTokens.size() > 3 || CommandTokens.size() == 2)
+ if (CommandTokens.size() > 3)
{
ShowMessages("incorrect use of the '%s'\n\n",
GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
@@ -62,7 +63,7 @@ CommandSwitch(vector CommandTokens, string Command)
//
// Perform switching or listing the threads
//
- if (CommandTokens.size() == 1)
+ if (CommandTokens.size() == 1 || (CommandTokens.size() == 2 && CompareLowerCaseStrings(CommandTokens.at(1), "list")))
{
UdShowListActiveDebuggingProcessesAndThreads();
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
index ca7668c1..7b0da730 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
@@ -1298,9 +1298,10 @@ UdShowListActiveDebuggingProcessesAndThreads()
{
CheckCurrentProcessOrThread = TRUE;
}
- ShowMessages("\t%s %04x (thread)\n",
+ ShowMessages("\t%s %04x (thread) | # blk ctx switches: %llx\n",
CheckCurrentProcessOrThread ? "->" : " ",
- AddressOfThreadsAndProcessDetails[i].ThreadId);
+ AddressOfThreadsAndProcessDetails[i].ThreadId,
+ AddressOfThreadsAndProcessDetails[i].NumberOfBlockedContextSwitches);
}
}
}
From 05b27083b233c4f294369cf8171c2d1a5fe3912c Mon Sep 17 00:00:00 2001
From: sina
Date: Wed, 27 Aug 2025 23:14:57 +0200
Subject: [PATCH 042/323] fix running step-in command in user debugger
---
.../hyperkd/code/debugger/user-level/Ud.c | 11 ----
hyperdbg/include/config/Configuration.h | 2 +-
.../code/debugger/user-level/ud.cpp | 41 +++++++------
.../debugger/user-level/user-listening.cpp | 60 ++++++++++---------
hyperdbg/libhyperdbg/header/ud.h | 2 +-
5 files changed, 58 insertions(+), 58 deletions(-)
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
index d6814d91..d1d27d66 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
@@ -400,17 +400,6 @@ UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest)
return FALSE;
}
- //
- // Based on the documentation, HyperDbg stops intercepting threads
- // when the debugger sent the first command, but if user presses
- // run the 'pause' command, all the threads (or new threads) that will enter
- // the user-mode will be intercepted
- //
- if (ProcessDebuggingDetails->IsOnThreadInterceptingPhase)
- {
- AttachingConfigureInterceptingThreads(ProcessDebuggingDetails->Token, FALSE);
- }
-
//
// Apply the command to all threads or just one thread
//
diff --git a/hyperdbg/include/config/Configuration.h b/hyperdbg/include/config/Configuration.h
index fc84cd44..e0e4dec3 100644
--- a/hyperdbg/include/config/Configuration.h
+++ b/hyperdbg/include/config/Configuration.h
@@ -72,7 +72,7 @@
/**
* @brief Activates the user-mode debugger
*/
-#define ActivateUserModeDebugger TRUE
+#define ActivateUserModeDebugger FALSE
/**
* @brief Activates the hyperevade project
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
index 7b0da730..c720dc57 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
@@ -68,7 +68,7 @@ UdUninitializeUserDebugger()
//
// Remove the active process
//
- UdRemoveActiveDebuggingProcess(TRUE);
+ UdRemoveActiveDebuggingProcess();
//
// Initialize the handle table
@@ -110,30 +110,35 @@ UdSetActiveDebuggingProcess(UINT64 DebuggingId,
BOOLEAN Is32Bit,
BOOLEAN IsPaused)
{
- g_ActiveProcessDebuggingState.ProcessId = ProcessId;
- g_ActiveProcessDebuggingState.ThreadId = ThreadId;
- g_ActiveProcessDebuggingState.Is32Bit = Is32Bit;
- g_ActiveProcessDebuggingState.ProcessDebuggingToken = DebuggingId;
+ if (g_ActiveProcessDebuggingState.IsPaused == FALSE)
+ {
+ //
+ // Activate the debugging
+ //
+ g_ActiveProcessDebuggingState.IsActive = TRUE;
- //
- // Set pausing state
- //
- g_ActiveProcessDebuggingState.IsPaused = IsPaused;
+ //
+ // Set the details
+ //
+ g_ActiveProcessDebuggingState.ProcessId = ProcessId;
+ g_ActiveProcessDebuggingState.ThreadId = ThreadId;
+ g_ActiveProcessDebuggingState.Is32Bit = Is32Bit;
+ g_ActiveProcessDebuggingState.ProcessDebuggingToken = DebuggingId;
- //
- // Activate the debugging
- //
- g_ActiveProcessDebuggingState.IsActive = TRUE;
+ //
+ // Set pausing state
+ //
+ g_ActiveProcessDebuggingState.IsPaused = IsPaused;
+ }
}
/**
* @brief Remove the current active debugging process (thread)
- * @param DontSwitchToNewProcess
*
* @return VOID
*/
VOID
-UdRemoveActiveDebuggingProcess(BOOLEAN DontSwitchToNewProcess)
+UdRemoveActiveDebuggingProcess()
{
//
// Activate the debugging
@@ -743,7 +748,7 @@ UdKillProcess(UINT32 TargetPid)
//
// Remove the current active debugging process (thread)
//
- UdRemoveActiveDebuggingProcess(FALSE);
+ UdRemoveActiveDebuggingProcess();
//
// The operation of attaching was successful
@@ -825,7 +830,7 @@ UdDetachProcess(UINT32 TargetPid, UINT64 ProcessDetailToken)
//
// Remove the current active debugging process (thread)
//
- UdRemoveActiveDebuggingProcess(FALSE);
+ UdRemoveActiveDebuggingProcess();
//
// The operation of attaching was successful
@@ -1298,7 +1303,7 @@ UdShowListActiveDebuggingProcessesAndThreads()
{
CheckCurrentProcessOrThread = TRUE;
}
- ShowMessages("\t%s %04x (thread) | # blk ctx switches: %llx\n",
+ ShowMessages("\t%s %04x (thread) | # blkd exec attempts: %llx\n",
CheckCurrentProcessOrThread ? "->" : " ",
AddressOfThreadsAndProcessDetails[i].ThreadId,
AddressOfThreadsAndProcessDetails[i].NumberOfBlockedContextSwitches);
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/user-listening.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/user-listening.cpp
index 1d9b5476..1b733b72 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/user-listening.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/user-listening.cpp
@@ -50,9 +50,9 @@ UdHandleUserDebuggerPausing(PDEBUGGEE_UD_PAUSED_PACKET PausePacket)
break;
case DEBUGGEE_PAUSING_REASON_DEBUGGEE_GENERAL_THREAD_INTERCEPTED:
- ShowMessages("\nthread: %x from process: %x intercepted\n",
- PausePacket->ThreadId,
- PausePacket->ProcessId);
+ // ShowMessages("\nthread: %x from process: %x intercepted\n",
+ // PausePacket->ThreadId,
+ // PausePacket->ProcessId);
break;
@@ -77,31 +77,37 @@ UdHandleUserDebuggerPausing(PDEBUGGEE_UD_PAUSED_PACKET PausePacket)
}
}
- if (!PausePacket->Is32Bit)
+ //
+ // For the first thread that is paused, show the disassembly
+ //
+ if (g_ActiveProcessDebuggingState.IsPaused == FALSE || PausePacket->ThreadId == g_ActiveProcessDebuggingState.ThreadId)
{
- //
- // Show diassembles
- //
- ShowMessages("\n");
- HyperDbgDisassembler64(PausePacket->InstructionBytesOnRip,
- PausePacket->Rip,
- MAXIMUM_INSTR_SIZE,
- 1,
- TRUE,
- (PRFLAGS)&PausePacket->Rflags);
- }
- else
- {
- //
- // Show diassembles
- //
- ShowMessages("\n");
- HyperDbgDisassembler32(PausePacket->InstructionBytesOnRip,
- PausePacket->Rip,
- MAXIMUM_INSTR_SIZE,
- 1,
- TRUE,
- (PRFLAGS)&PausePacket->Rflags);
+ if (!PausePacket->Is32Bit)
+ {
+ //
+ // Show diassembles
+ //
+ ShowMessages("\n");
+ HyperDbgDisassembler64(PausePacket->InstructionBytesOnRip,
+ PausePacket->Rip,
+ MAXIMUM_INSTR_SIZE,
+ 1,
+ TRUE,
+ (PRFLAGS)&PausePacket->Rflags);
+ }
+ else
+ {
+ //
+ // Show diassembles
+ //
+ ShowMessages("\n");
+ HyperDbgDisassembler32(PausePacket->InstructionBytesOnRip,
+ PausePacket->Rip,
+ MAXIMUM_INSTR_SIZE,
+ 1,
+ TRUE,
+ (PRFLAGS)&PausePacket->Rflags);
+ }
}
//
diff --git a/hyperdbg/libhyperdbg/header/ud.h b/hyperdbg/libhyperdbg/header/ud.h
index 416d5a34..3f117d24 100644
--- a/hyperdbg/libhyperdbg/header/ud.h
+++ b/hyperdbg/libhyperdbg/header/ud.h
@@ -67,7 +67,7 @@ VOID
UdUninitializeUserDebugger();
VOID
-UdRemoveActiveDebuggingProcess(BOOLEAN DontSwitchToNewProcess);
+UdRemoveActiveDebuggingProcess();
VOID
UdHandleUserDebuggerPausing(PDEBUGGEE_UD_PAUSED_PACKET PausePacket);
From 99b807dd6e39b92b83bfc25c31cb439ade2e6927 Mon Sep 17 00:00:00 2001
From: unknown
Date: Sat, 30 Aug 2025 00:14:48 +0200
Subject: [PATCH 043/323] add codes to support the p command in the user
debugger
---
CHANGELOG.md | 2 +
.../code/debugger/broadcast/DpcRoutines.c | 33 ++++
.../debugger/commands/BreakpointCommands.c | 10 +-
.../hyperkd/code/debugger/kernel-level/Kd.c | 133 ++++++-------
.../code/debugger/meta-events/Tracing.c | 28 ++-
.../code/debugger/user-level/Attaching.c | 18 +-
.../hyperkd/code/debugger/user-level/Ud.c | 182 ++++++++++++++----
.../header/debugger/broadcast/DpcRoutines.h | 3 +
.../hyperkd/header/debugger/kernel-level/Kd.h | 6 -
.../header/debugger/meta-events/Tracing.h | 5 +-
.../header/debugger/user-level/ThreadHolder.h | 2 +
.../hyperkd/header/debugger/user-level/Ud.h | 10 +-
.../include/SDK/headers/RequestStructures.h | 5 +-
hyperdbg/include/config/Configuration.h | 2 +-
.../code/debugger/user-level/ud.cpp | 83 +++++---
.../debugger/user-level/user-listening.cpp | 20 +-
hyperdbg/libhyperdbg/header/ud.h | 8 +-
hyperdbg/script-eval/code/Functions.c | 4 +-
18 files changed, 384 insertions(+), 170 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index afc81c22..2160391c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,8 @@ New release of the HyperDbg Debugger.
### Added
- The **!xsetbv** event command is added to execution of XSETBV instruction thanks to HyperDbg group members ([link](https://docs.hyperdbg.org/commands/extension-commands/xsetbv))
- Number of blocked context switches in the '.switch' command ([link](https://docs.hyperdbg.org/commands/meta-commands/.switch))
+- Added support to the step-in (the 't' command) for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/t))
+- Added support to the step-over (the 'p' command) for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/p))
### Changed
- Non-volatile XMM registers are no longer saved/restored on VM-exit handler ([link](https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions?view=msvc-170))
diff --git a/hyperdbg/hyperkd/code/debugger/broadcast/DpcRoutines.c b/hyperdbg/hyperkd/code/debugger/broadcast/DpcRoutines.c
index 5f765241..f47b5706 100644
--- a/hyperdbg/hyperkd/code/debugger/broadcast/DpcRoutines.c
+++ b/hyperdbg/hyperkd/code/debugger/broadcast/DpcRoutines.c
@@ -277,3 +277,36 @@ DpcRoutineVmExitAndHaltSystemAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID S
//
KeSignalCallDpcDone(SystemArgument1);
}
+
+/**
+ * @brief Broadcast applying hardware debug register
+ *
+ * @param Dpc
+ * @param DeferredContext
+ * @param SystemArgument1
+ * @param SystemArgument2
+ * @return BOOLEAN
+ */
+BOOLEAN
+DpcRoutineSetHardwareDebugRegisters(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ UNREFERENCED_PARAMETER(Dpc);
+ UNREFERENCED_PARAMETER(DeferredContext);
+
+ //
+ // Apply hardware debug registers
+ //
+ UdApplyHardwareDebugRegister(DeferredContext);
+
+ //
+ // Wait for all DPCs to synchronize at this point
+ //
+ KeSignalCallDpcSynchronize(SystemArgument2);
+
+ //
+ // Mark the DPC as being complete
+ //
+ KeSignalCallDpcDone(SystemArgument1);
+
+ return TRUE;
+}
diff --git a/hyperdbg/hyperkd/code/debugger/commands/BreakpointCommands.c b/hyperdbg/hyperkd/code/debugger/commands/BreakpointCommands.c
index c50d1dc7..2f98ab51 100644
--- a/hyperdbg/hyperkd/code/debugger/commands/BreakpointCommands.c
+++ b/hyperdbg/hyperkd/code/debugger/commands/BreakpointCommands.c
@@ -290,9 +290,8 @@ BreakpointCheckAndHandleDebugBreakpoint(UINT32 CoreId)
//
KdHandleDebugEventsWhenKernelDebuggerIsAttached(DbgState, TrapSetByDebugger);
}
- else if (UdHandleInstantBreak(DbgState,
- DEBUGGEE_PAUSING_REASON_DEBUGGEE_GENERAL_DEBUG_BREAK,
- NULL))
+ else if (g_UserDebuggerState == TRUE &&
+ UdHandleDebugEventsWhenUserDebuggerIsAttached(DbgState, TrapSetByDebugger))
{
//
// if the above function returns true, no need for further action
@@ -338,9 +337,8 @@ BreakpointCheckAndHandleDebugBreakpoint(UINT32 CoreId)
//
KdHandleDebugEventsWhenKernelDebuggerIsAttached(DbgState, TrapSetByDebugger);
}
- else if (UdHandleInstantBreak(DbgState,
- DEBUGGEE_PAUSING_REASON_DEBUGGEE_GENERAL_DEBUG_BREAK,
- NULL))
+ else if (g_UserDebuggerState == TRUE &&
+ UdHandleDebugEventsWhenUserDebuggerIsAttached(DbgState, TrapSetByDebugger))
{
//
// if the above function returns true, no need for further action
diff --git a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
index d9ad35b5..742a96bb 100644
--- a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
+++ b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
@@ -401,6 +401,62 @@ KdLoggingResponsePacketToDebugger(
return Result;
}
+/**
+ * @brief Regular step-over, step one instruction to the debuggee if
+ * there is a call then it jumps the call
+ *
+ * @param LastRip Last RIP register
+ * @param IsNextInstructionACall
+ * @param CallLength
+ *
+ * @return VOID
+ */
+VOID
+KdRegularStepOver(UINT64 LastRip, BOOLEAN IsNextInstructionACall, UINT32 CallLength)
+{
+ UINT64 NextAddressForHardwareDebugBp = 0;
+ ULONG ProcessorsCount;
+
+ // LogInfo("Last Rip: %llx, IsNextInstructionACall: %s, Call length: %x",
+ // LastRip,
+ // IsNextInstructionACall ? "true" : "false",
+ // CallLength);
+
+ if (IsNextInstructionACall)
+ {
+ //
+ // It's a call, we should put a hardware debug register breakpoint
+ // on the next instruction
+ //
+ NextAddressForHardwareDebugBp = LastRip + CallLength;
+
+ ProcessorsCount = KeQueryActiveProcessorCount(0);
+
+ //
+ // Store the detail of the hardware debug register to avoid trigger
+ // in other processes
+ //
+ g_HardwareDebugRegisterDetailsForStepOver.Address = NextAddressForHardwareDebugBp;
+ g_HardwareDebugRegisterDetailsForStepOver.ProcessId = HANDLE_TO_UINT32(PsGetCurrentProcessId());
+ g_HardwareDebugRegisterDetailsForStepOver.ThreadId = HANDLE_TO_UINT32(PsGetCurrentThreadId());
+
+ //
+ // Add hardware debug breakpoints on all core on vm-entry
+ //
+ for (size_t i = 0; i < ProcessorsCount; i++)
+ {
+ g_DbgState[i].HardwareDebugRegisterForStepping = NextAddressForHardwareDebugBp;
+ }
+ }
+ else
+ {
+ //
+ // Any instruction other than call (regular step)
+ //
+ TracingRegularStepInInstruction();
+ }
+}
+
/**
* @brief Handles debug events when kernel-debugger is attached
*
@@ -1492,74 +1548,6 @@ KdCheckGuestOperatingModeChanges(UINT16 PreviousCsSelector, UINT16 CurrentCsSele
return TRUE;
}
-/**
- * @brief Regular step-in | step one instruction to the debuggee
- * @param DbgState The state of the debugger on the current core
- *
- * @return VOID
- */
-VOID
-KdRegularStepInInstruction(PROCESSOR_DEBUGGING_STATE * DbgState)
-{
- TracingPerformRegularStepInInstruction(DbgState);
-
- //
- // Unset the trap flag on the next VM-exit
- //
- BreakpointRestoreTheTrapFlagOnceTriggered(HANDLE_TO_UINT32(PsGetCurrentProcessId()), HANDLE_TO_UINT32(PsGetCurrentThreadId()));
-}
-
-/**
- * @brief Regular step-over | step one instruction to the debuggee if
- * there is a call then it jumps the call
- *
- * @param DbgState The state of the debugger on the current core
- * @param IsNextInstructionACall
- * @param CallLength
- *
- * @return VOID
- */
-VOID
-KdRegularStepOver(PROCESSOR_DEBUGGING_STATE * DbgState, BOOLEAN IsNextInstructionACall, UINT32 CallLength)
-{
- UINT64 NextAddressForHardwareDebugBp = 0;
- ULONG ProcessorsCount;
-
- if (IsNextInstructionACall)
- {
- //
- // It's a call, we should put a hardware debug register breakpoint
- // on the next instruction
- //
- NextAddressForHardwareDebugBp = VmFuncGetLastVmexitRip(DbgState->CoreId) + CallLength;
-
- ProcessorsCount = KeQueryActiveProcessorCount(0);
-
- //
- // Store the detail of the hardware debug register to avoid trigger
- // in other processes
- //
- g_HardwareDebugRegisterDetailsForStepOver.Address = NextAddressForHardwareDebugBp;
- g_HardwareDebugRegisterDetailsForStepOver.ProcessId = HANDLE_TO_UINT32(PsGetCurrentProcessId());
- g_HardwareDebugRegisterDetailsForStepOver.ThreadId = HANDLE_TO_UINT32(PsGetCurrentThreadId());
-
- //
- // Add hardware debug breakpoints on all core on vm-entry
- //
- for (size_t i = 0; i < ProcessorsCount; i++)
- {
- g_DbgState[i].HardwareDebugRegisterForStepping = NextAddressForHardwareDebugBp;
- }
- }
- else
- {
- //
- // Any instruction other than call (regular step)
- //
- KdRegularStepInInstruction(DbgState);
- }
-}
-
/**
* @brief Send event registration buffer to user-mode to register the event
* @param EventDetailHeader
@@ -2423,7 +2411,10 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
//
// Step-over (p command)
//
- KdRegularStepOver(DbgState, SteppingPacket->IsCurrentInstructionACall, SteppingPacket->CallLength);
+ KdRegularStepOver(
+ VmFuncGetLastVmexitRip(DbgState->CoreId),
+ SteppingPacket->IsCurrentInstructionACall,
+ SteppingPacket->CallLength);
//
// Unlock other cores
@@ -2449,9 +2440,9 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
//
//
- // Indicate a step
+ // Indicate a step-in
//
- KdRegularStepInInstruction(DbgState);
+ TracingRegularStepInInstruction();
//
// Unlock other cores
diff --git a/hyperdbg/hyperkd/code/debugger/meta-events/Tracing.c b/hyperdbg/hyperkd/code/debugger/meta-events/Tracing.c
index 52af8b00..1ce6f974 100644
--- a/hyperdbg/hyperkd/code/debugger/meta-events/Tracing.c
+++ b/hyperdbg/hyperkd/code/debugger/meta-events/Tracing.c
@@ -104,16 +104,36 @@ TracingCheckForContinuingSteps(PROCESSOR_DEBUGGING_STATE * DbgState)
}
/**
- * @brief Regular step-in | step one instruction to the debuggee
- * @param DbgState The state of the debugger on the current core
+ * @brief Regular step-in, step one instruction to the debuggee
*
* @return VOID
*/
VOID
-TracingPerformRegularStepInInstruction(PROCESSOR_DEBUGGING_STATE * DbgState)
+TracingRegularStepInInstruction()
{
- UNREFERENCED_PARAMETER(DbgState);
+ //
+ // Perform the step-in
+ //
+ TracingPerformRegularStepInInstruction();
+ //
+ // Unset the trap flag on the next VM-exit
+ //
+ if (!BreakpointRestoreTheTrapFlagOnceTriggered(HANDLE_TO_UINT32(PsGetCurrentProcessId()), HANDLE_TO_UINT32(PsGetCurrentThreadId())))
+ {
+ LogWarning("Warning, it is currently not possible to add the current process/thread to the list of processes "
+ "where the trap flag should be masked. Please ensure that you manually unset the trap flag");
+ }
+}
+
+/**
+ * @brief Regular step-in, step one instruction to the debuggee
+ *
+ * @return VOID
+ */
+VOID
+TracingPerformRegularStepInInstruction()
+{
UINT64 Interruptibility;
UINT64 InterruptibilityOld = NULL64_ZERO;
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c b/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c
index 8cf99d9c..a02bec49 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c
@@ -663,7 +663,7 @@ AttachingCheckThreadInterceptionWithUserDebugger(UINT32 CoreId)
//
// Check for possible commands that need to be executed
//
- UdCheckForCommand(ProcessDebuggingDetail);
+ UdCheckForCommand(DbgState, ProcessDebuggingDetail);
return TRUE;
}
@@ -1341,11 +1341,17 @@ AttachingSwitchProcess(PDEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS SwitchRequest)
//
// Fill the needed details by user mode
//
- SwitchRequest->Token = ProcessDebuggingDetail->Token;
- SwitchRequest->ProcessId = ProcessDebuggingDetail->ProcessId;
- SwitchRequest->ThreadId = ThreadDebuggingDetail->ThreadId;
- SwitchRequest->Is32Bit = ProcessDebuggingDetail->Is32Bit;
- SwitchRequest->IsPaused = ThreadDebuggingDetail->IsPaused;
+ SwitchRequest->Token = ProcessDebuggingDetail->Token;
+ SwitchRequest->ProcessId = ProcessDebuggingDetail->ProcessId;
+ SwitchRequest->ThreadId = ThreadDebuggingDetail->ThreadId;
+ SwitchRequest->Is32Bit = ProcessDebuggingDetail->Is32Bit;
+ SwitchRequest->Rip = ThreadDebuggingDetail->ThreadRip;
+ SwitchRequest->IsPaused = ThreadDebuggingDetail->IsPaused;
+ SwitchRequest->SizeOfInstruction = ThreadDebuggingDetail->SizeOfInstruction;
+
+ memcpy(&SwitchRequest->InstructionBytesOnRip[0],
+ &ThreadDebuggingDetail->InstructionBytesOnRip[0],
+ ThreadDebuggingDetail->SizeOfInstruction);
SwitchRequest->Result = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
return TRUE;
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
index d1d27d66..bef7e790 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
@@ -165,76 +165,162 @@ UdHandleInstantBreak(PROCESSOR_DEBUGGING_STATE * DbgState,
}
/**
- * @brief Restore the thread to the original direction
+ * @brief Apply hardware debug registers to all cores
*
- * @param ThreadDebuggingDetails
+ * @param TargetAddress
*
* @return VOID
*/
VOID
-UdRestoreToOriginalDirection(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails)
+UdApplyHardwareDebugRegister(PVOID TargetAddress)
+{
+ SetDebugRegisters(DEBUGGER_DEBUG_REGISTER_FOR_STEP_OVER,
+ BREAK_ON_INSTRUCTION_FETCH,
+ FALSE,
+ (UINT64)TargetAddress);
+}
+
+/**
+ * @brief routines to broadcast setting hardware debug registers on all cores
+ * @param TargetAddress
+ *
+ * @return VOID
+ */
+VOID
+UdBroadcastSetHardwareDebugRegistersAllCores(PVOID TargetAddress)
{
//
- // Configure the RIP again
+ // Broadcast to all cores
//
- VmFuncSetRip(ThreadDebuggingDetails->ThreadRip);
+ KeGenericCallDpc(DpcRoutineSetHardwareDebugRegisters, TargetAddress);
+}
+
+/**
+ * @brief Regular step-over, step one instruction to the debuggee on user debugger if
+ * there is a call then it jumps the call
+ *
+ * @param LastRip Last RIP register
+ * @param IsNextInstructionACall
+ * @param CallLength
+ *
+ * @return VOID
+ */
+VOID
+UdRegularStepOver(UINT64 LastRip, BOOLEAN IsNextInstructionACall, UINT32 CallLength)
+{
+ UINT64 NextAddressForHardwareDebugBp = 0;
+
+ // LogInfo("Last Rip: %llx, IsNextInstructionACall: %s, Call length: %x",
+ // LastRip,
+ // IsNextInstructionACall ? "true" : "false",
+ // CallLength);
+
+ if (IsNextInstructionACall)
+ {
+ //
+ // It's a call, we should put a hardware debug register breakpoint
+ // on the next instruction
+ //
+ NextAddressForHardwareDebugBp = LastRip + CallLength;
+
+ //
+ // Broadcast to apply hardware debug registers to all cores
+ //
+ UdBroadcastSetHardwareDebugRegistersAllCores((PVOID)NextAddressForHardwareDebugBp);
+ }
+ else
+ {
+ //
+ // Any instruction other than call (regular step)
+ //
+ TracingRegularStepInInstruction();
+ }
+}
+
+/**
+ * @brief Handles debug events when user-debugger is attached
+ *
+ * @param DbgState The state of the debugger on the current core
+ * @param TrapSetByDebugger Shows whether a trap set by debugger or not
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+UdHandleDebugEventsWhenUserDebuggerIsAttached(PROCESSOR_DEBUGGING_STATE * DbgState,
+ BOOLEAN TrapSetByDebugger)
+{
+ UNREFERENCED_PARAMETER(TrapSetByDebugger);
+
+ if (UdHandleInstantBreak(DbgState,
+ DEBUGGEE_PAUSING_REASON_DEBUGGEE_GENERAL_DEBUG_BREAK,
+ NULL))
+ {
+ //
+ // Handled by user debugger
+ //
+ return TRUE;
+ }
+ else
+ {
+ //
+ // Not handled by user debugger
+ //
+ return FALSE;
+ }
}
/**
* @brief Perform stepping though the instructions in target thread
*
+ * @param DbgState The state of the debugger on the current core
* @param ThreadDebuggingDetails
* @param SteppingType
+ * @param IsCurrentInstructionACall
+ * @param CallInstructionSize
*
* @return VOID
*/
VOID
-UdStepInstructions(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
- DEBUGGER_REMOTE_STEPPING_REQUEST SteppingType)
+UdStepInstructions(PROCESSOR_DEBUGGING_STATE * DbgState,
+ PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
+ DEBUGGER_REMOTE_STEPPING_REQUEST SteppingType,
+ BOOLEAN IsCurrentInstructionACall,
+ UINT32 CallInstructionSize)
{
- //
- // Configure the RIP
- //
- UdRestoreToOriginalDirection(ThreadDebuggingDetails);
+ UNREFERENCED_PARAMETER(ThreadDebuggingDetails);
switch (SteppingType)
{
case DEBUGGER_REMOTE_STEPPING_REQUEST_STEP_IN:
//
- // Set the trap-flag
+ // Apply step-in (t command)
//
- VmFuncSetRflagTrapFlag(TRUE);
-
- //
- // Indicate that we should set the trap flag to the FALSE next time on
- // the same process/thread
- //
- if (!BreakpointRestoreTheTrapFlagOnceTriggered(HANDLE_TO_UINT32(PsGetCurrentProcessId()), HANDLE_TO_UINT32(PsGetCurrentThreadId())))
- {
- LogWarning("Warning, it is currently not possible to add the current process/thread to the list of processes "
- "where the trap flag should be masked. Please ensure that you manually unset the trap flag");
- }
+ TracingRegularStepInInstruction();
break;
case DEBUGGER_REMOTE_STEPPING_REQUEST_STEP_OVER:
+ //
+ // Apply Step-over (p command)
+ //
+ UdRegularStepOver(
+ VmFuncGetLastVmexitRip(DbgState->CoreId),
+ IsCurrentInstructionACall,
+ CallInstructionSize);
+
break;
default:
break;
}
-
- //
- // It's not paused anymore!
- //
- ThreadDebuggingDetails->IsPaused = FALSE;
}
/**
* @brief Perform the user-mode commands
*
+ * @param DbgState The state of the debugger on the current core
* @param ProcessDebuggingDetails
* @param ThreadDebuggingDetails
* @param UserAction
@@ -246,7 +332,8 @@ UdStepInstructions(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
* @return BOOLEAN
*/
BOOLEAN
-UdPerformCommand(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail,
+UdPerformCommand(PROCESSOR_DEBUGGING_STATE * DbgState,
+ PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail,
PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
DEBUGGER_UD_COMMAND_ACTION_TYPE UserAction,
UINT64 OptionalParam1,
@@ -254,8 +341,6 @@ UdPerformCommand(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail,
UINT64 OptionalParam3,
UINT64 OptionalParam4)
{
- UNREFERENCED_PARAMETER(OptionalParam2);
- UNREFERENCED_PARAMETER(OptionalParam3);
UNREFERENCED_PARAMETER(OptionalParam4);
//
@@ -268,7 +353,11 @@ UdPerformCommand(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail,
//
// Stepping through the instructions
//
- UdStepInstructions(ThreadDebuggingDetails, (DEBUGGER_REMOTE_STEPPING_REQUEST)OptionalParam1);
+ UdStepInstructions(DbgState,
+ ThreadDebuggingDetails,
+ (DEBUGGER_REMOTE_STEPPING_REQUEST)OptionalParam1,
+ (BOOLEAN)OptionalParam2,
+ (UINT32)OptionalParam3);
//
// Continue the debuggee process
@@ -299,12 +388,14 @@ UdPerformCommand(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail,
/**
* @brief Check for the user-mode commands
*
+ * @param DbgState The state of the debugger on the current core
* @param ProcessDebuggingDetail
*
* @return BOOLEAN
*/
BOOLEAN
-UdCheckForCommand(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail)
+UdCheckForCommand(PROCESSOR_DEBUGGING_STATE * DbgState,
+ PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail)
{
PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails;
BOOLEAN CommandFound = FALSE;
@@ -342,7 +433,8 @@ UdCheckForCommand(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail)
//
// Perform the command
//
- UdPerformCommand(ProcessDebuggingDetail,
+ UdPerformCommand(DbgState,
+ ProcessDebuggingDetail,
ThreadDebuggingDetails,
ThreadDebuggingDetails->UdAction[i].ActionType,
ThreadDebuggingDetails->UdAction[i].OptionalParam1,
@@ -411,11 +503,16 @@ UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest)
*
* @param ThreadDebuggingDetails
* @param ProcessDebuggingDetails
+ * @param InstructionBytesBuffer
+ * @param SizeOfInstruction
+ *
* @return VOID
*/
VOID
UdSetThreadPausingState(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
- PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetails)
+ PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetails,
+ PVOID InstructionBytesBuffer,
+ UINT32 SizeOfInstruction)
{
UNREFERENCED_PARAMETER(ProcessDebuggingDetails);
@@ -433,6 +530,16 @@ UdSetThreadPausingState(PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetai
// Indicate that it's spinning
//
ThreadDebuggingDetails->IsPaused = TRUE;
+
+ //
+ // Set size of instruction
+ //
+ ThreadDebuggingDetails->SizeOfInstruction = SizeOfInstruction;
+
+ //
+ // Copy the current running instruction
+ //
+ memcpy(&ThreadDebuggingDetails->InstructionBytesOnRip[0], InstructionBytesBuffer, SizeOfInstruction);
}
/**
@@ -656,7 +763,10 @@ UdCheckAndHandleBreakpointsAndDebugBreaks(PROCESSOR_DEBUGGING_STATE * DbgS
//
// Set the thread debugging details
//
- UdSetThreadPausingState(ThreadDebuggingDetails, ProcessDebuggingDetails);
+ UdSetThreadPausingState(ThreadDebuggingDetails,
+ ProcessDebuggingDetails,
+ &PausePacket.InstructionBytesOnRip,
+ ExitInstructionLength);
//
// Everything was okay
diff --git a/hyperdbg/hyperkd/header/debugger/broadcast/DpcRoutines.h b/hyperdbg/hyperkd/header/debugger/broadcast/DpcRoutines.h
index 0a300664..50e24308 100644
--- a/hyperdbg/hyperkd/header/debugger/broadcast/DpcRoutines.h
+++ b/hyperdbg/hyperkd/header/debugger/broadcast/DpcRoutines.h
@@ -32,3 +32,6 @@ DpcRoutineReadMsrToAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgum
VOID
DpcRoutineVmExitAndHaltSystemAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+
+BOOLEAN
+DpcRoutineSetHardwareDebugRegisters(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
diff --git a/hyperdbg/hyperkd/header/debugger/kernel-level/Kd.h b/hyperdbg/hyperkd/header/debugger/kernel-level/Kd.h
index abfbf0f8..ec69bf02 100644
--- a/hyperdbg/hyperkd/header/debugger/kernel-level/Kd.h
+++ b/hyperdbg/hyperkd/header/debugger/kernel-level/Kd.h
@@ -135,12 +135,6 @@ KdNotifyDebuggeeForUserInput(DEBUGGEE_USER_INPUT_PACKET * Descriptor, UINT32 Len
static VOID
KdGuaranteedStepInstruction(PROCESSOR_DEBUGGING_STATE * DbgState);
-static VOID
-KdRegularStepInInstruction(PROCESSOR_DEBUGGING_STATE * DbgState);
-
-static VOID
-KdRegularStepOver(PROCESSOR_DEBUGGING_STATE * DbgState, BOOLEAN IsNextInstructionACall, UINT32 CallLength);
-
static BOOLEAN
KdPerformRegisterEvent(PDEBUGGEE_EVENT_AND_ACTION_HEADER_FOR_REMOTE_PACKET EventDetailHeader,
DEBUGGER_EVENT_AND_ACTION_RESULT * DebuggerEventAndActionResult);
diff --git a/hyperdbg/hyperkd/header/debugger/meta-events/Tracing.h b/hyperdbg/hyperkd/header/debugger/meta-events/Tracing.h
index 42eb7fb1..f444fdb8 100644
--- a/hyperdbg/hyperkd/header/debugger/meta-events/Tracing.h
+++ b/hyperdbg/hyperkd/header/debugger/meta-events/Tracing.h
@@ -28,4 +28,7 @@ VOID
TracingPerformInstrumentationStepIn(PROCESSOR_DEBUGGING_STATE * DbgState);
VOID
-TracingPerformRegularStepInInstruction(PROCESSOR_DEBUGGING_STATE * DbgState);
+TracingRegularStepInInstruction();
+
+VOID
+TracingPerformRegularStepInInstruction();
diff --git a/hyperdbg/hyperkd/header/debugger/user-level/ThreadHolder.h b/hyperdbg/hyperkd/header/debugger/user-level/ThreadHolder.h
index 309d9d33..7b59f644 100644
--- a/hyperdbg/hyperkd/header/debugger/user-level/ThreadHolder.h
+++ b/hyperdbg/hyperkd/header/debugger/user-level/ThreadHolder.h
@@ -34,6 +34,8 @@ typedef struct _USERMODE_DEBUGGING_THREAD_DETAILS
UINT32 ThreadId;
UINT64 ThreadRip; // if IsPaused is TRUE
BOOLEAN IsPaused;
+ BYTE InstructionBytesOnRip[MAXIMUM_INSTR_SIZE];
+ UINT32 SizeOfInstruction;
UINT64 NumberOfBlockedContextSwitches;
DEBUGGER_UD_COMMAND_ACTION UdAction[MAX_USER_ACTIONS_FOR_THREADS];
diff --git a/hyperdbg/hyperkd/header/debugger/user-level/Ud.h b/hyperdbg/hyperkd/header/debugger/user-level/Ud.h
index 1f669b18..4463a4a8 100644
--- a/hyperdbg/hyperkd/header/debugger/user-level/Ud.h
+++ b/hyperdbg/hyperkd/header/debugger/user-level/Ud.h
@@ -56,6 +56,9 @@ UdHandleInstantBreak(PROCESSOR_DEBUGGING_STATE * DbgState,
DEBUGGEE_PAUSING_REASON Reason,
PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail);
+VOID
+UdApplyHardwareDebugRegister(PVOID TargetAddress);
+
BOOLEAN
UdCheckAndHandleBreakpointsAndDebugBreaks(PROCESSOR_DEBUGGING_STATE * DbgState,
DEBUGGEE_PAUSING_REASON Reason,
@@ -65,4 +68,9 @@ BOOLEAN
UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest);
BOOLEAN
-UdCheckForCommand(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail);
+UdCheckForCommand(PROCESSOR_DEBUGGING_STATE * DbgState,
+ PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail);
+
+BOOLEAN
+UdHandleDebugEventsWhenUserDebuggerIsAttached(PROCESSOR_DEBUGGING_STATE * DbgState,
+ BOOLEAN TrapSetByDebugger);
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index c292a862..163b5f50 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -666,7 +666,10 @@ typedef struct _DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS
UINT32 ThreadId;
BOOLEAN CheckCallbackAtFirstInstruction;
BOOLEAN Is32Bit;
- BOOLEAN IsPaused; // used in switching to threads
+ UINT64 Rip; // used in switching threads
+ BYTE InstructionBytesOnRip[MAXIMUM_INSTR_SIZE]; // used in switching threads
+ UINT32 SizeOfInstruction; // used in switching threads
+ BOOLEAN IsPaused; // used in switching to threads
DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS_ACTION_TYPE Action;
UINT32 CountOfActiveDebuggingThreadsAndProcesses; // used in showing the list of active threads/processes
UINT64 Token;
diff --git a/hyperdbg/include/config/Configuration.h b/hyperdbg/include/config/Configuration.h
index e0e4dec3..fc84cd44 100644
--- a/hyperdbg/include/config/Configuration.h
+++ b/hyperdbg/include/config/Configuration.h
@@ -72,7 +72,7 @@
/**
* @brief Activates the user-mode debugger
*/
-#define ActivateUserModeDebugger FALSE
+#define ActivateUserModeDebugger TRUE
/**
* @brief Activates the hyperevade project
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
index c720dc57..cc262f1b 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
@@ -97,39 +97,47 @@ UdUninitializeUserDebugger()
/**
* @brief set the current active debugging process (thread)
* @param DebuggingId
+ * @param Rip
* @param ProcessId
* @param ThreadId
* @param Is32Bit
+ * @param InstructionBytesOnRip
*
* @return VOID
*/
VOID
UdSetActiveDebuggingProcess(UINT64 DebuggingId,
+ UINT64 Rip,
UINT32 ProcessId,
UINT32 ThreadId,
BOOLEAN Is32Bit,
- BOOLEAN IsPaused)
+ BOOLEAN IsPaused,
+ BYTE InstructionBytesOnRip[])
{
- if (g_ActiveProcessDebuggingState.IsPaused == FALSE)
- {
- //
- // Activate the debugging
- //
- g_ActiveProcessDebuggingState.IsActive = TRUE;
+ //
+ // Activate the debugging
+ //
+ g_ActiveProcessDebuggingState.IsActive = TRUE;
- //
- // Set the details
- //
- g_ActiveProcessDebuggingState.ProcessId = ProcessId;
- g_ActiveProcessDebuggingState.ThreadId = ThreadId;
- g_ActiveProcessDebuggingState.Is32Bit = Is32Bit;
- g_ActiveProcessDebuggingState.ProcessDebuggingToken = DebuggingId;
+ //
+ // Set the details
+ //
+ g_ActiveProcessDebuggingState.ProcessId = ProcessId;
+ g_ActiveProcessDebuggingState.ThreadId = ThreadId;
+ g_ActiveProcessDebuggingState.Is32Bit = Is32Bit;
+ g_ActiveProcessDebuggingState.Rip = Rip;
- //
- // Set pausing state
- //
- g_ActiveProcessDebuggingState.IsPaused = IsPaused;
- }
+ g_ActiveProcessDebuggingState.ProcessDebuggingToken = DebuggingId;
+
+ //
+ // Set current instruction
+ //
+ memcpy(&g_ActiveProcessDebuggingState.InstructionBytesOnRip[0], &InstructionBytesOnRip[0], MAXIMUM_INSTR_SIZE);
+
+ //
+ // Set pausing state
+ //
+ g_ActiveProcessDebuggingState.IsPaused = IsPaused;
}
/**
@@ -1057,6 +1065,32 @@ UdSendCommand(UINT64 ProcessDetailToken,
VOID
UdSendStepPacketToDebuggee(UINT64 ProcessDetailToken, UINT32 TargetThreadId, DEBUGGER_REMOTE_STEPPING_REQUEST StepType)
{
+ BOOLEAN IsCurrentInstructionACall = FALSE;
+ UINT32 CallInstructionSize = 0;
+
+ //
+ // Check for specific stepping type
+ //
+ if (StepType == DEBUGGER_REMOTE_STEPPING_REQUEST_STEP_OVER)
+ {
+ //
+ // We should check whether the current instruction is a 'call'
+ // instruction or not, if yes we have to compute the length of call
+ //
+ if (HyperDbgCheckWhetherTheCurrentInstructionIsCall(
+ (unsigned char *)&g_ActiveProcessDebuggingState.InstructionBytesOnRip[0],
+ MAXIMUM_INSTR_SIZE,
+ g_ActiveProcessDebuggingState.Is32Bit ? FALSE : TRUE, // equals to !g_IsRunningInstruction32Bit
+ &CallInstructionSize))
+ {
+ //
+ // It's a call in step-over
+ //
+ IsCurrentInstructionACall = TRUE;
+ CallInstructionSize = CallInstructionSize;
+ }
+ }
+
//
// Wait until the result of user-input received
//
@@ -1072,8 +1106,8 @@ UdSendStepPacketToDebuggee(UINT64 ProcessDetailToken, UINT32 TargetThreadId, DEB
DEBUGGER_UD_COMMAND_ACTION_TYPE_REGULAR_STEP,
FALSE,
StepType,
- NULL,
- NULL,
+ IsCurrentInstructionACall,
+ CallInstructionSize,
NULL);
WaitForSingleObject(
@@ -1125,8 +1159,7 @@ UdSetActiveDebuggingThreadByPidOrTid(UINT32 TargetPidOrTid, BOOLEAN IsTid)
//
Status = DeviceIoControl(
g_DeviceHandle, // Handle to device
- IOCTL_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS, // IO Control
- // code
+ IOCTL_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS, // IO Control code
&SwitchRequest, // Input Buffer to driver.
SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS, // Input buffer length
&SwitchRequest, // Output Buffer from driver.
@@ -1151,10 +1184,12 @@ UdSetActiveDebuggingThreadByPidOrTid(UINT32 TargetPidOrTid, BOOLEAN IsTid)
// Set the current active debugging process (thread)
//
UdSetActiveDebuggingProcess(SwitchRequest.Token,
+ SwitchRequest.Rip,
SwitchRequest.ProcessId,
SwitchRequest.ThreadId,
SwitchRequest.Is32Bit,
- SwitchRequest.IsPaused);
+ SwitchRequest.IsPaused,
+ SwitchRequest.InstructionBytesOnRip);
//
// The operation of attaching was successful
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/user-listening.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/user-listening.cpp
index 1b733b72..bcb78a05 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/user-listening.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/user-listening.cpp
@@ -28,15 +28,6 @@ extern DEBUGGER_SYNCRONIZATION_EVENTS_STATE
VOID
UdHandleUserDebuggerPausing(PDEBUGGEE_UD_PAUSED_PACKET PausePacket)
{
- //
- // Set the current active debugging process (thread)
- //
- UdSetActiveDebuggingProcess(PausePacket->ProcessDebuggingToken,
- PausePacket->ProcessId,
- PausePacket->ThreadId,
- PausePacket->Is32Bit,
- TRUE);
-
//
// Perform extra tasks for pausing reasons
//
@@ -82,6 +73,17 @@ UdHandleUserDebuggerPausing(PDEBUGGEE_UD_PAUSED_PACKET PausePacket)
//
if (g_ActiveProcessDebuggingState.IsPaused == FALSE || PausePacket->ThreadId == g_ActiveProcessDebuggingState.ThreadId)
{
+ //
+ // Set the current active debugging process (thread)
+ //
+ UdSetActiveDebuggingProcess(PausePacket->ProcessDebuggingToken,
+ PausePacket->Rip,
+ PausePacket->ProcessId,
+ PausePacket->ThreadId,
+ PausePacket->Is32Bit,
+ TRUE,
+ &PausePacket->InstructionBytesOnRip[0]);
+
if (!PausePacket->Is32Bit)
{
//
diff --git a/hyperdbg/libhyperdbg/header/ud.h b/hyperdbg/libhyperdbg/header/ud.h
index 3f117d24..89d73214 100644
--- a/hyperdbg/libhyperdbg/header/ud.h
+++ b/hyperdbg/libhyperdbg/header/ud.h
@@ -53,7 +53,10 @@ typedef struct _ACTIVE_DEBUGGING_PROCESS
BOOLEAN IsPaused;
GUEST_REGS Registers; // thread registers
UINT64 Context; // $context
+ UINT64 Rip;
BOOLEAN Is32Bit;
+ BYTE InstructionBytesOnRip[MAXIMUM_INSTR_SIZE];
+
} ACTIVE_DEBUGGING_PROCESS, *PACTIVE_DEBUGGING_PROCESS;
//////////////////////////////////////////////////
@@ -77,10 +80,13 @@ UdSendStepPacketToDebuggee(UINT64 ThreadDetailToken, UINT32 TargetThreadId, DEBU
VOID
UdSetActiveDebuggingProcess(UINT64 DebuggingId,
+ UINT64 Rip,
UINT32 ProcessId,
UINT32 ThreadId,
BOOLEAN Is32Bit,
- BOOLEAN IsPaused);
+ BOOLEAN IsPaused,
+ BYTE InstructionBytesOnRip[]);
+
BOOLEAN
UdSetActiveDebuggingThreadByPidOrTid(UINT32 TargetPidOrTid, BOOLEAN IsTid);
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index 34d5c8ea..e44c61fe 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -2004,12 +2004,10 @@ ScriptEngineFunctionEventTraceStepIn()
#ifdef SCRIPT_ENGINE_KERNEL_MODE
- ULONG CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
-
//
// Call instrumentation step in
//
- TracingPerformRegularStepInInstruction(&g_DbgState[CurrentCore]);
+ TracingPerformRegularStepInInstruction();
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
From 87f32fb5d02b4192baac6727e0575e6bfd8313b6 Mon Sep 17 00:00:00 2001
From: unknown
Date: Sat, 30 Aug 2025 03:37:10 +0200
Subject: [PATCH 044/323] add user debugger command synchronization event
---
.../hyperkd/code/debugger/user-level/Ud.c | 113 +++++++++++++++---
hyperdbg/hyperkd/header/globals/Global.h | 6 +
hyperdbg/include/SDK/headers/DataTypes.h | 1 -
.../include/SDK/headers/RequestStructures.h | 2 +
hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 2 +
.../commands/debugging-commands/r.cpp | 79 ++++++++++--
.../debugger/commands/meta-commands/start.cpp | 2 +-
.../code/debugger/kernel-level/kd.cpp | 14 +--
.../kernel-level/kernel-listening.cpp | 14 +--
.../code/debugger/user-level/ud.cpp | 70 +++++++++--
hyperdbg/libhyperdbg/header/common.h | 94 +++++++++++++++
hyperdbg/libhyperdbg/header/debugger.h | 3 +-
hyperdbg/libhyperdbg/header/kd.h | 49 --------
hyperdbg/libhyperdbg/header/ud.h | 30 +----
14 files changed, 345 insertions(+), 134 deletions(-)
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
index bef7e790..d45a9f71 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
@@ -67,6 +67,11 @@ UdInitializeUserDebugger()
//
ThreadHolderAllocateThreadHoldingBuffers();
+ //
+ // Initialize command waiting event
+ //
+ KeInitializeEvent(&g_UserDebuggerWaitingCommandEvent, SynchronizationEvent, FALSE);
+
//
// Indicate that the user debugger is active
//
@@ -273,6 +278,7 @@ UdHandleDebugEventsWhenUserDebuggerIsAttached(PROCESSOR_DEBUGGING_STATE * DbgSta
* @brief Perform stepping though the instructions in target thread
*
* @param DbgState The state of the debugger on the current core
+ * @param ProcessDebuggingDetail
* @param ThreadDebuggingDetails
* @param SteppingType
* @param IsCurrentInstructionACall
@@ -281,11 +287,12 @@ UdHandleDebugEventsWhenUserDebuggerIsAttached(PROCESSOR_DEBUGGING_STATE * DbgSta
* @return VOID
*/
VOID
-UdStepInstructions(PROCESSOR_DEBUGGING_STATE * DbgState,
- PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
- DEBUGGER_REMOTE_STEPPING_REQUEST SteppingType,
- BOOLEAN IsCurrentInstructionACall,
- UINT32 CallInstructionSize)
+UdStepInstructions(PROCESSOR_DEBUGGING_STATE * DbgState,
+ PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail,
+ PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadDebuggingDetails,
+ DEBUGGER_REMOTE_STEPPING_REQUEST SteppingType,
+ BOOLEAN IsCurrentInstructionACall,
+ UINT32 CallInstructionSize)
{
UNREFERENCED_PARAMETER(ThreadDebuggingDetails);
@@ -298,6 +305,17 @@ UdStepInstructions(PROCESSOR_DEBUGGING_STATE * DbgState,
//
TracingRegularStepInInstruction();
+ //
+ // Continue the debuggee process
+ //
+ if (AttachingConfigureInterceptingThreads(ProcessDebuggingDetail->Token, FALSE))
+ {
+ //
+ // Unpause the threads of the target process
+ //
+ ThreadHolderUnpauseAllThreadsInProcess(ProcessDebuggingDetail);
+ }
+
break;
case DEBUGGER_REMOTE_STEPPING_REQUEST_STEP_OVER:
@@ -310,6 +328,17 @@ UdStepInstructions(PROCESSOR_DEBUGGING_STATE * DbgState,
IsCurrentInstructionACall,
CallInstructionSize);
+ //
+ // Continue the debuggee process
+ //
+ if (AttachingConfigureInterceptingThreads(ProcessDebuggingDetail->Token, FALSE))
+ {
+ //
+ // Unpause the threads of the target process
+ //
+ ThreadHolderUnpauseAllThreadsInProcess(ProcessDebuggingDetail);
+ }
+
break;
default:
@@ -317,6 +346,39 @@ UdStepInstructions(PROCESSOR_DEBUGGING_STATE * DbgState,
}
}
+/**
+ * @brief Perform stepping though the instructions in target thread
+ *
+ * @param DbgState The state of the debugger on the current core
+ * @param ProcessDebuggingDetail
+ * @param ThreadDebuggingDetails
+ * @param SteppingType
+ * @param IsCurrentInstructionACall
+ * @param CallInstructionSize
+ *
+ * @return VOID
+ */
+VOID
+UdReadRegisters(PROCESSOR_DEBUGGING_STATE * DbgState,
+ UINT32 RegisterId)
+{
+ UNREFERENCED_PARAMETER(DbgState);
+ UNREFERENCED_PARAMETER(RegisterId);
+
+ //
+ // Send the register packet to the user debugger
+ //
+ // LogCallbackSendBuffer(OPERATION_NOTIFICATION_FROM_USER_DEBUGGER_READ_REGISTERS,
+ // &PausePacket,
+ // sizeof(DEBUGGEE_UD_PAUSED_PACKET),
+ // TRUE);
+
+ //
+ // Set the event to indicate that the command is completed
+ //
+ KeSetEvent(&g_UserDebuggerWaitingCommandEvent, IO_NO_INCREMENT, FALSE);
+}
+
/**
* @brief Perform the user-mode commands
*
@@ -354,21 +416,21 @@ UdPerformCommand(PROCESSOR_DEBUGGING_STATE * DbgState,
// Stepping through the instructions
//
UdStepInstructions(DbgState,
+ ProcessDebuggingDetail,
ThreadDebuggingDetails,
(DEBUGGER_REMOTE_STEPPING_REQUEST)OptionalParam1,
(BOOLEAN)OptionalParam2,
(UINT32)OptionalParam3);
+ break;
+
+ case DEBUGGER_UD_COMMAND_ACTION_TYPE_READ_REGISTERS:
+
//
- // Continue the debuggee process
+ // Read the registers
//
- if (AttachingConfigureInterceptingThreads(ProcessDebuggingDetail->Token, FALSE))
- {
- //
- // Unpause the threads of the target process
- //
- ThreadHolderUnpauseAllThreadsInProcess(ProcessDebuggingDetail);
- }
+ UdReadRegisters(DbgState,
+ (UINT32)OptionalParam1);
break;
@@ -478,6 +540,7 @@ BOOLEAN
UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest)
{
PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetails;
+ BOOLEAN Result;
//
// Find the thread debugging detail of the thread
@@ -495,7 +558,24 @@ UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest)
//
// Apply the command to all threads or just one thread
//
- return ThreadHolderApplyActionToPausedThreads(ProcessDebuggingDetails, ActionRequest);
+ Result = ThreadHolderApplyActionToPausedThreads(ProcessDebuggingDetails, ActionRequest);
+
+ //
+ // Check if we need to wait for the command event completion or not
+ //
+ if (Result && ActionRequest->WaitForEventCompletion)
+ {
+ //
+ // Wait for the command to be completed
+ //
+ KeWaitForSingleObject(&g_UserDebuggerWaitingCommandEvent,
+ Executive,
+ KernelMode,
+ FALSE,
+ NULL);
+ }
+
+ return Result;
}
/**
@@ -746,11 +826,6 @@ UdCheckAndHandleBreakpointsAndDebugBreaks(PROCESSOR_DEBUGGING_STATE * DbgS
&PausePacket.InstructionBytesOnRip,
ExitInstructionLength);
- //
- // Copy registers to the pause packet
- //
- RtlCopyMemory(&PausePacket.GuestRegs, DbgState->Regs, sizeof(GUEST_REGS));
-
//
// Send the pause packet, along with RIP and an indication
// to pause to the user debugger
diff --git a/hyperdbg/hyperkd/header/globals/Global.h b/hyperdbg/hyperkd/header/globals/Global.h
index 0c25aee7..575403c8 100644
--- a/hyperdbg/hyperkd/header/globals/Global.h
+++ b/hyperdbg/hyperkd/header/globals/Global.h
@@ -16,6 +16,12 @@
*/
PROCESSOR_DEBUGGING_STATE * g_DbgState;
+/**
+ * @brief Event to show whether the user debugger is waiting for a command or not
+ *
+ */
+KEVENT g_UserDebuggerWaitingCommandEvent;
+
/**
* @brief Holder of script engines global variables
*
diff --git a/hyperdbg/include/SDK/headers/DataTypes.h b/hyperdbg/include/SDK/headers/DataTypes.h
index 1594e3fb..cc0df192 100644
--- a/hyperdbg/include/SDK/headers/DataTypes.h
+++ b/hyperdbg/include/SDK/headers/DataTypes.h
@@ -238,7 +238,6 @@ typedef struct _DEBUGGEE_UD_PAUSED_PACKET
VMM_CALLBACK_EVENT_CALLING_STAGE_TYPE EventCallingStage;
BYTE InstructionBytesOnRip[MAXIMUM_INSTR_SIZE];
UINT16 ReadInstructionLen;
- GUEST_REGS GuestRegs;
} DEBUGGEE_UD_PAUSED_PACKET, *PDEBUGGEE_UD_PAUSED_PACKET;
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 163b5f50..06b1812e 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -903,6 +903,7 @@ typedef enum _DEBUGGER_UD_COMMAND_ACTION_TYPE
DEBUGGER_UD_COMMAND_ACTION_TYPE_NONE = 0,
DEBUGGER_UD_COMMAND_ACTION_TYPE_PAUSE,
DEBUGGER_UD_COMMAND_ACTION_TYPE_REGULAR_STEP,
+ DEBUGGER_UD_COMMAND_ACTION_TYPE_READ_REGISTERS,
} DEBUGGER_UD_COMMAND_ACTION_TYPE;
@@ -930,6 +931,7 @@ typedef struct _DEBUGGER_UD_COMMAND_PACKET
UINT64 ProcessDebuggingDetailToken;
UINT32 TargetThreadId;
BOOLEAN ApplyToAllPausedThreads;
+ BOOLEAN WaitForEventCompletion;
UINT32 Result;
} DEBUGGER_UD_COMMAND_PACKET, *PDEBUGGER_UD_COMMAND_PACKET;
diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
index 30ffee01..e4731568 100644
--- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
+++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
@@ -34,6 +34,8 @@ extern BOOLEAN g_IsDebuggerModulesLoaded;
extern BOOLEAN g_IsReversingMachineModulesLoaded;
extern BOOLEAN g_PrivilegesAlreadyAdjusted;
extern LIST_ENTRY g_OutputSources;
+extern DEBUGGER_SYNCRONIZATION_EVENTS_STATE
+ g_UserSyncronizationObjectsHandleTable[DEBUGGER_MAXIMUM_SYNCRONIZATION_USER_DEBUGGER_OBJECTS];
/**
* @brief Set the function callback that will be called if any message
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp
index 15fc2598..a5f6e054 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp
@@ -17,7 +17,8 @@
//
// Global Variables
//
-extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
+extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
+extern ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState;
std::map RegistersMap = {
{"rax", REGISTER_RAX},
@@ -201,10 +202,30 @@ HyperDbgReadAllRegisters(GUEST_REGS * GuestRegisters, GUEST_EXTRA_REGISTERS * Ex
//
RegState->RegisterId = DEBUGGEE_SHOW_ALL_REGISTERS;
- if (!KdSendReadRegisterPacketToDebuggee(RegState, SizeOfRegState))
+ //
+ // Check whether a kernel debugger is connected or a user-mode debugger is active
+ //
+ if (g_IsSerialConnectedToRemoteDebuggee)
{
- free(RegState);
- return FALSE;
+ if (!KdSendReadRegisterPacketToDebuggee(RegState, SizeOfRegState))
+ {
+ free(RegState);
+ return FALSE;
+ }
+ }
+ else if (g_ActiveProcessDebuggingState.IsActive && g_ActiveProcessDebuggingState.IsPaused)
+ {
+ //
+ // It's stepping over user debugger
+ //
+ if (!UdSendReadRegisterToUserDebugger(g_ActiveProcessDebuggingState.ProcessDebuggingToken,
+ g_ActiveProcessDebuggingState.ThreadId,
+ RegState,
+ SizeOfRegState))
+ {
+ free(RegState);
+ return FALSE;
+ }
}
if (RegState->KernelStatus == DEBUGGER_OPERATION_WAS_SUCCESSFUL)
@@ -253,9 +274,25 @@ HyperDbgReadTargetRegister(REGS_ENUM RegisterId, UINT64 * TargetRegister)
//
RegState.RegisterId = (UINT32)RegisterId;
- if (!KdSendReadRegisterPacketToDebuggee(&RegState, sizeof(DEBUGGEE_REGISTER_READ_DESCRIPTION)))
+ if (g_IsSerialConnectedToRemoteDebuggee)
{
- return FALSE;
+ if (!KdSendReadRegisterPacketToDebuggee(&RegState, sizeof(DEBUGGEE_REGISTER_READ_DESCRIPTION)))
+ {
+ return FALSE;
+ }
+ }
+ else if (g_ActiveProcessDebuggingState.IsActive && g_ActiveProcessDebuggingState.IsPaused)
+ {
+ //
+ // It's stepping over user debugger
+ //
+ if (!UdSendReadRegisterToUserDebugger(g_ActiveProcessDebuggingState.ProcessDebuggingToken,
+ g_ActiveProcessDebuggingState.ThreadId,
+ &RegState,
+ sizeof(DEBUGGEE_REGISTER_READ_DESCRIPTION)))
+ {
+ return FALSE;
+ }
}
if (RegState.KernelStatus == DEBUGGER_OPERATION_WAS_SUCCESSFUL)
@@ -423,22 +460,40 @@ CommandR(vector CommandTokens, string Command)
UINT32 Pointer;
REGS_ENUM RegKind;
std::vector Tmp;
+ std::string SetRegValue;
- std::string SetRegValue;
+//
+// Disable user-mode debugger in this version
+//
+#if ActivateUserModeDebugger == FALSE
+
+ if (!g_IsSerialConnectedToRemoteDebugger)
+ {
+ ShowMessages("the user-mode debugger in VMI Mode is still in the beta version and not stable. "
+ "we decided to exclude it from this release and release it in future versions. "
+ "if you want to test the user-mode debugger in VMI Mode, you should build "
+ "HyperDbg with special instructions. But starting processes is fully supported "
+ "in the Debugger Mode.\n"
+ "(it's not recommended to use it in VMI Mode yet!)\n");
+ return;
+ }
+
+#endif // !ActivateUserModeDebugger
if (CommandTokens.size() == 1)
{
//
// show all registers
//
- if (g_IsSerialConnectedToRemoteDebuggee)
+ if (g_IsSerialConnectedToRemoteDebuggee ||
+ (g_ActiveProcessDebuggingState.IsActive && g_ActiveProcessDebuggingState.IsPaused))
{
HyperDbgRegisterShowAll();
}
else
{
ShowMessages("err, reading registers (r) is not valid in the current "
- "context, you should connect to a debuggee\n");
+ "context, you should connect to a debuggee or attach to a process\n");
}
return;
@@ -476,14 +531,15 @@ CommandR(vector CommandTokens, string Command)
//
// send the request
//
- if (g_IsSerialConnectedToRemoteDebuggee)
+ if (g_IsSerialConnectedToRemoteDebuggee ||
+ (g_ActiveProcessDebuggingState.IsActive && g_ActiveProcessDebuggingState.IsPaused))
{
HyperDbgRegisterShowTargetRegister(RegKind);
}
else
{
ShowMessages("err, reading registers (r) is not valid in the current "
- "context, you should connect to a debuggee\n");
+ "context, you should connect to a debuggee or attach to a process\n");
}
}
else
@@ -495,7 +551,6 @@ CommandR(vector CommandTokens, string Command)
//
// if command contains a '=' means user wants modify the register
//
-
else if (Command.find('=', 0) != string::npos)
{
Command.erase(0, 1);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp
index 10347fe6..0cb94ec0 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp
@@ -61,7 +61,7 @@ CommandStart(vector CommandTokens, string Command)
return;
}
- //
+//
// Disable user-mode debugger in this version
//
#if ActivateUserModeDebugger == FALSE
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
index e5fb1880..cf3d28f9 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
@@ -529,7 +529,7 @@ KdSendReadRegisterPacketToDebuggee(PDEBUGGEE_REGISTER_READ_DESCRIPTION RegDes, U
//
// Set the request data
//
- DbgWaitSetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_READ_REGISTERS, RegDes, RegBuffSize);
+ DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_READ_REGISTERS, RegDes, RegBuffSize);
//
// Send the 'r' command as read register packet
@@ -564,7 +564,7 @@ KdSendWriteRegisterPacketToDebuggee(PDEBUGGEE_REGISTER_WRITE_DESCRIPTION RegDes)
//
// Set the request data
//
- DbgWaitSetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_WRITE_REGISTER, RegDes, sizeof(DEBUGGEE_REGISTER_WRITE_DESCRIPTION));
+ DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_WRITE_REGISTER, RegDes, sizeof(DEBUGGEE_REGISTER_WRITE_DESCRIPTION));
//
// Send write register packet
@@ -599,7 +599,7 @@ KdSendReadMemoryPacketToDebuggee(PDEBUGGER_READ_MEMORY ReadMem, UINT32 RequestSi
//
// Set the request data
//
- DbgWaitSetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_READ_MEMORY, ReadMem, RequestSize);
+ DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_READ_MEMORY, ReadMem, RequestSize);
//
// Send u-d command as read memory packet
@@ -635,7 +635,7 @@ KdSendEditMemoryPacketToDebuggee(PDEBUGGER_EDIT_MEMORY EditMem, UINT32 Size)
//
// Set the request data
//
- DbgWaitSetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_EDIT_MEMORY, EditMem, sizeof(DEBUGGER_EDIT_MEMORY));
+ DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_EDIT_MEMORY, EditMem, sizeof(DEBUGGER_EDIT_MEMORY));
//
// Send d command as read memory packet
@@ -997,7 +997,7 @@ KdSendApicActionPacketsToDebuggee(PDEBUGGER_APIC_REQUEST ApicRequest, UINT32 Exp
//
// Set the request data
//
- DbgWaitSetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_APIC_ACTIONS, ApicRequest, ExpectedRequestSize);
+ DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_APIC_ACTIONS, ApicRequest, ExpectedRequestSize);
//
// Send the APIC request packets
@@ -1033,7 +1033,7 @@ KdSendSmiPacketsToDebuggee(PSMI_OPERATION_PACKETS SmiOperationRequest, UINT32 Ex
//
// Set the request data
//
- DbgWaitSetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_SMI_OPERATION_RESULT, SmiOperationRequest, ExpectedRequestSize);
+ DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_SMI_OPERATION_RESULT, SmiOperationRequest, ExpectedRequestSize);
//
// Send the SMI request packets
@@ -1067,7 +1067,7 @@ KdSendQueryIdtPacketsToDebuggee(PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS IdtR
//
// Set the request data
//
- DbgWaitSetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_IDT_ENTRIES,
+ DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_IDT_ENTRIES,
IdtRequest,
sizeof(INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS));
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
index 412c6baa..6c565e62 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
@@ -801,7 +801,7 @@ StartAgain:
//
// Get the address and size of the caller
//
- DbgWaitGetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_READ_REGISTERS, &CallerAddress, &CallerSize);
+ DbgWaitGetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_READ_REGISTERS, &CallerAddress, &CallerSize);
//
// Copy the memory buffer for the caller
@@ -822,7 +822,7 @@ StartAgain:
//
// Get the address and size of the caller
//
- DbgWaitGetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_WRITE_REGISTER, &CallerAddress, &CallerSize);
+ DbgWaitGetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_WRITE_REGISTER, &CallerAddress, &CallerSize);
//
// Copy the memory buffer for the caller
@@ -843,7 +843,7 @@ StartAgain:
//
// Get the address and size of the caller
//
- DbgWaitGetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_APIC_ACTIONS, &CallerAddress, &CallerSize);
+ DbgWaitGetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_APIC_ACTIONS, &CallerAddress, &CallerSize);
//
// Copy the memory buffer for the caller
@@ -864,7 +864,7 @@ StartAgain:
//
// Get the address and size of the caller
//
- DbgWaitGetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_IDT_ENTRIES, &CallerAddress, &CallerSize);
+ DbgWaitGetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_IDT_ENTRIES, &CallerAddress, &CallerSize);
//
// Copy the memory buffer for the caller
@@ -885,7 +885,7 @@ StartAgain:
//
// Get the address and size of the caller
//
- DbgWaitGetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_READ_MEMORY, &CallerAddress, &CallerSize);
+ DbgWaitGetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_READ_MEMORY, &CallerAddress, &CallerSize);
//
// Copy the memory buffer for the caller
@@ -906,7 +906,7 @@ StartAgain:
//
// Get the address and size of the caller
//
- DbgWaitGetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_EDIT_MEMORY, &CallerAddress, &CallerSize);
+ DbgWaitGetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_EDIT_MEMORY, &CallerAddress, &CallerSize);
//
// Copy the memory buffer for the caller
@@ -992,7 +992,7 @@ StartAgain:
//
// Get the address and size of the caller
//
- DbgWaitGetRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_SMI_OPERATION_RESULT, &CallerAddress, &CallerSize);
+ DbgWaitGetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_SMI_OPERATION_RESULT, &CallerAddress, &CallerSize);
//
// Copy the memory buffer for the caller
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
index cc262f1b..dc34bead 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
@@ -994,6 +994,7 @@ UdContinueProcess(UINT64 ProcessDebuggingToken)
* @param ThreadId
* @param ActionType
* @param ApplyToAllPausedThreads
+ * @param WaitForEventCompletion
* @param OptionalParam1
* @param OptionalParam2
* @param OptionalParam3
@@ -1006,6 +1007,7 @@ UdSendCommand(UINT64 ProcessDetailToken,
UINT32 ThreadId,
DEBUGGER_UD_COMMAND_ACTION_TYPE ActionType,
BOOLEAN ApplyToAllPausedThreads,
+ BOOLEAN WaitForEventCompletion,
UINT64 OptionalParam1,
UINT64 OptionalParam2,
UINT64 OptionalParam3,
@@ -1028,6 +1030,7 @@ UdSendCommand(UINT64 ProcessDetailToken,
CommandPacket.ProcessDebuggingDetailToken = ProcessDetailToken;
CommandPacket.ApplyToAllPausedThreads = ApplyToAllPausedThreads;
CommandPacket.TargetThreadId = ThreadId;
+ CommandPacket.WaitForEventCompletion = WaitForEventCompletion;
CommandPacket.UdAction.ActionType = ActionType;
CommandPacket.UdAction.OptionalParam1 = OptionalParam1;
CommandPacket.UdAction.OptionalParam2 = OptionalParam2;
@@ -1054,6 +1057,52 @@ UdSendCommand(UINT64 ProcessDetailToken,
}
}
+/**
+ * @brief Send the command to the user debugger+
+ *
+ * @param ProcessDetailToken
+ * @param TargetThreadId
+ * @param RegDes
+ * @param RegBuffSize
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+UdSendReadRegisterToUserDebugger(UINT64 ProcessDetailToken,
+ UINT32 TargetThreadId,
+ PDEBUGGEE_REGISTER_READ_DESCRIPTION RegDes,
+ UINT32 RegBuffSize)
+
+{
+ //
+ // Set the request data
+ //
+ DbgWaitSetUserRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_READ_REGISTERS, RegDes, RegBuffSize);
+
+ //
+ // Send the 'step' command
+ //
+ UdSendCommand(ProcessDetailToken,
+ TargetThreadId,
+ DEBUGGER_UD_COMMAND_ACTION_TYPE_READ_REGISTERS,
+ FALSE,
+ TRUE,
+ RegDes->RegisterId,
+ NULL,
+ NULL,
+ NULL);
+
+ //
+ // Wait until the result of read registers received
+ //
+ DbgWaitForUserResponse(DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_READ_REGISTERS);
+
+ //
+ // Reading it was successful
+ //
+ return TRUE;
+}
+
/**
* @brief Send stepping instructions packet to user debugger
* @param ProcessDetailToken
@@ -1063,7 +1112,9 @@ UdSendCommand(UINT64 ProcessDetailToken,
* @return VOID
*/
VOID
-UdSendStepPacketToDebuggee(UINT64 ProcessDetailToken, UINT32 TargetThreadId, DEBUGGER_REMOTE_STEPPING_REQUEST StepType)
+UdSendStepPacketToDebuggee(UINT64 ProcessDetailToken,
+ UINT32 TargetThreadId,
+ DEBUGGER_REMOTE_STEPPING_REQUEST StepType)
{
BOOLEAN IsCurrentInstructionACall = FALSE;
UINT32 CallInstructionSize = 0;
@@ -1091,13 +1142,6 @@ UdSendStepPacketToDebuggee(UINT64 ProcessDetailToken, UINT32 TargetThreadId, DEB
}
}
- //
- // Wait until the result of user-input received
- //
- g_UserSyncronizationObjectsHandleTable
- [DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_IS_DEBUGGER_RUNNING]
- .IsOnWaitingState = TRUE;
-
//
// Send the 'step' command
//
@@ -1105,16 +1149,16 @@ UdSendStepPacketToDebuggee(UINT64 ProcessDetailToken, UINT32 TargetThreadId, DEB
TargetThreadId,
DEBUGGER_UD_COMMAND_ACTION_TYPE_REGULAR_STEP,
FALSE,
+ FALSE,
StepType,
IsCurrentInstructionACall,
CallInstructionSize,
NULL);
- WaitForSingleObject(
- g_UserSyncronizationObjectsHandleTable
- [DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_IS_DEBUGGER_RUNNING]
- .EventHandle,
- INFINITE);
+ //
+ // Wait until the result of user-input received
+ //
+ DbgWaitForUserResponse(DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_IS_DEBUGGER_RUNNING);
}
/**
diff --git a/hyperdbg/libhyperdbg/header/common.h b/hyperdbg/libhyperdbg/header/common.h
index be7c47e7..ba0b5019 100644
--- a/hyperdbg/libhyperdbg/header/common.h
+++ b/hyperdbg/libhyperdbg/header/common.h
@@ -82,6 +82,100 @@
*/
#define CPUID_ADDR_WIDTH 0x80000008
+//////////////////////////////////////////////////
+// Kernel & User Synchronization //
+//////////////////////////////////////////////////
+
+#define DbgWaitForKernelResponse(KernelSyncObjectId) \
+ do \
+ { \
+ DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
+ &g_KernelSyncronizationObjectsHandleTable[KernelSyncObjectId]; \
+ \
+ SyncronizationObject->IsOnWaitingState = TRUE; \
+ WaitForSingleObject(SyncronizationObject->EventHandle, INFINITE); \
+ \
+ } while (FALSE);
+
+#define DbgWaitForUserResponse(UserSyncObjectId) \
+ do \
+ { \
+ DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
+ &g_UserSyncronizationObjectsHandleTable[UserSyncObjectId]; \
+ \
+ SyncronizationObject->IsOnWaitingState = TRUE; \
+ WaitForSingleObject(SyncronizationObject->EventHandle, INFINITE); \
+ \
+ } while (FALSE);
+
+#define DbgWaitSetKernelRequestData(KernelSyncObjectId, ReqData, ReqSize) \
+ do \
+ { \
+ DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
+ &g_KernelSyncronizationObjectsHandleTable[KernelSyncObjectId]; \
+ \
+ SyncronizationObject->RequestData = (PVOID)ReqData; \
+ SyncronizationObject->RequestSize = (UINT32)ReqSize; \
+ \
+ } while (FALSE);
+
+#define DbgWaitSetUserRequestData(UserSyncObjectId, ReqData, ReqSize) \
+ do \
+ { \
+ DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
+ &g_UserSyncronizationObjectsHandleTable[UserSyncObjectId]; \
+ \
+ SyncronizationObject->RequestData = (PVOID)ReqData; \
+ SyncronizationObject->RequestSize = (UINT32)ReqSize; \
+ \
+ } while (FALSE);
+
+#define DbgWaitGetKernelRequestData(KernelSyncObjectId, ReqData, ReqSize) \
+ do \
+ { \
+ DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
+ &g_KernelSyncronizationObjectsHandleTable[KernelSyncObjectId]; \
+ \
+ *ReqData = SyncronizationObject->RequestData; \
+ *ReqSize = SyncronizationObject->RequestSize; \
+ SyncronizationObject->RequestData = NULL; \
+ SyncronizationObject->RequestSize = NULL_ZERO; \
+ \
+ } while (FALSE);
+
+#define DbgWaitGetUserRequestData(UserSyncObjectId, ReqData, ReqSize) \
+ do \
+ { \
+ DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
+ &g_UserSyncronizationObjectsHandleTable[UserSyncObjectId]; \
+ \
+ *ReqData = SyncronizationObject->RequestData; \
+ *ReqSize = SyncronizationObject->RequestSize; \
+ SyncronizationObject->RequestData = NULL; \
+ SyncronizationObject->RequestSize = NULL_ZERO; \
+ \
+ } while (FALSE);
+
+#define DbgReceivedKernelResponse(KernelSyncObjectId) \
+ do \
+ { \
+ DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
+ &g_KernelSyncronizationObjectsHandleTable[KernelSyncObjectId]; \
+ \
+ SyncronizationObject->IsOnWaitingState = FALSE; \
+ SetEvent(SyncronizationObject->EventHandle); \
+ } while (FALSE);
+
+#define DbgReceivedUserResponse(UserSyncObjectId) \
+ do \
+ { \
+ DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
+ &g_UserSyncronizationObjectsHandleTable[UserSyncObjectId]; \
+ \
+ SyncronizationObject->IsOnWaitingState = FALSE; \
+ SetEvent(SyncronizationObject->EventHandle); \
+ } while (FALSE);
+
//////////////////////////////////////////////////
// Assembly Functions //
//////////////////////////////////////////////////
diff --git a/hyperdbg/libhyperdbg/header/debugger.h b/hyperdbg/libhyperdbg/header/debugger.h
index 17c69a00..9bd0b086 100644
--- a/hyperdbg/libhyperdbg/header/debugger.h
+++ b/hyperdbg/libhyperdbg/header/debugger.h
@@ -101,7 +101,8 @@ typedef enum _DEBUGGER_EVENT_PARSING_ERROR_CAUSE
//
// User-debugger
//
-#define DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_IS_DEBUGGER_RUNNING 0x30
+#define DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_IS_DEBUGGER_RUNNING 0x0
+#define DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_READ_REGISTERS 0x1
//////////////////////////////////////////////////
// Event Details //
diff --git a/hyperdbg/libhyperdbg/header/kd.h b/hyperdbg/libhyperdbg/header/kd.h
index fc60129e..2bde6dbe 100644
--- a/hyperdbg/libhyperdbg/header/kd.h
+++ b/hyperdbg/libhyperdbg/header/kd.h
@@ -11,55 +11,6 @@
*/
#pragma once
-//////////////////////////////////////////////////
-// Definitions //
-//////////////////////////////////////////////////
-
-#define DbgWaitForKernelResponse(KernelSyncObjectId) \
- do \
- { \
- DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
- &g_KernelSyncronizationObjectsHandleTable[KernelSyncObjectId]; \
- \
- SyncronizationObject->IsOnWaitingState = TRUE; \
- WaitForSingleObject(SyncronizationObject->EventHandle, INFINITE); \
- \
- } while (FALSE);
-
-#define DbgWaitSetRequestData(KernelSyncObjectId, ReqData, ReqSize) \
- do \
- { \
- DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
- &g_KernelSyncronizationObjectsHandleTable[KernelSyncObjectId]; \
- \
- SyncronizationObject->RequestData = (PVOID)ReqData; \
- SyncronizationObject->RequestSize = (UINT32)ReqSize; \
- \
- } while (FALSE);
-
-#define DbgWaitGetRequestData(KernelSyncObjectId, ReqData, ReqSize) \
- do \
- { \
- DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
- &g_KernelSyncronizationObjectsHandleTable[KernelSyncObjectId]; \
- \
- *ReqData = SyncronizationObject->RequestData; \
- *ReqSize = SyncronizationObject->RequestSize; \
- SyncronizationObject->RequestData = NULL; \
- SyncronizationObject->RequestSize = NULL_ZERO; \
- \
- } while (FALSE);
-
-#define DbgReceivedKernelResponse(KernelSyncObjectId) \
- do \
- { \
- DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
- &g_KernelSyncronizationObjectsHandleTable[KernelSyncObjectId]; \
- \
- SyncronizationObject->IsOnWaitingState = FALSE; \
- SetEvent(SyncronizationObject->EventHandle); \
- } while (FALSE);
-
//////////////////////////////////////////////////
// Display Windows Details //
//////////////////////////////////////////////////
diff --git a/hyperdbg/libhyperdbg/header/ud.h b/hyperdbg/libhyperdbg/header/ud.h
index 89d73214..33e235a6 100644
--- a/hyperdbg/libhyperdbg/header/ud.h
+++ b/hyperdbg/libhyperdbg/header/ud.h
@@ -11,30 +11,6 @@
*/
#pragma once
-//////////////////////////////////////////////////
-// Definitions //
-//////////////////////////////////////////////////
-
-#define DbgWaitForUserResponse(UserSyncObjectId) \
- do \
- { \
- DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
- &g_UserSyncronizationObjectsHandleTable[UserSyncObjectId]; \
- \
- SyncronizationObject->IsOnWaitingState = TRUE; \
- WaitForSingleObject(SyncronizationObject->EventHandle, INFINITE); \
- } while (FALSE);
-
-#define DbgReceivedUserResponse(UserSyncObjectId) \
- do \
- { \
- DEBUGGER_SYNCRONIZATION_EVENTS_STATE * SyncronizationObject = \
- &g_UserSyncronizationObjectsHandleTable[UserSyncObjectId]; \
- \
- SyncronizationObject->IsOnWaitingState = FALSE; \
- SetEvent(SyncronizationObject->EventHandle); \
- } while (FALSE);
-
//////////////////////////////////////////////////
// Structures //
//////////////////////////////////////////////////
@@ -119,3 +95,9 @@ UdContinueProcess(UINT64 ProcessDebuggingToken);
BOOLEAN
UdPauseProcess(UINT64 ProcessDebuggingToken);
+
+BOOLEAN
+UdSendReadRegisterToUserDebugger(UINT64 ProcessDetailToken,
+ UINT32 TargetThreadId,
+ PDEBUGGEE_REGISTER_READ_DESCRIPTION RegDes,
+ UINT32 RegBuffSize);
From 85debe2636d53f25be6ffea3f6ef4e9d3acac104 Mon Sep 17 00:00:00 2001
From: unknown
Date: Sat, 30 Aug 2025 03:55:15 +0200
Subject: [PATCH 045/323] add synchronization functions
---
.../hyperkd/code/common/Synchronization.c | 61 +++++++++++++++++++
.../hyperkd/code/debugger/user-level/Ud.c | 10 +--
.../hyperkd/header/common/Synchronization.h | 26 ++++++++
hyperdbg/hyperkd/header/pch.h | 1 +
hyperdbg/hyperkd/hyperkd.vcxproj | 2 +
hyperdbg/hyperkd/hyperkd.vcxproj.filters | 6 ++
6 files changed, 99 insertions(+), 7 deletions(-)
create mode 100644 hyperdbg/hyperkd/code/common/Synchronization.c
create mode 100644 hyperdbg/hyperkd/header/common/Synchronization.h
diff --git a/hyperdbg/hyperkd/code/common/Synchronization.c b/hyperdbg/hyperkd/code/common/Synchronization.c
new file mode 100644
index 00000000..a35b753e
--- /dev/null
+++ b/hyperdbg/hyperkd/code/common/Synchronization.c
@@ -0,0 +1,61 @@
+/**
+ * @file Synchronization.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Routines synchronization objects
+ * @details
+ * @version 0.16
+ * @date 2025-08-30
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+/**
+ * @brief Initialize a waiting event
+ *
+ * @param Event
+ * @return VOID
+ */
+VOID
+SynchronizationInitializeEvent(PRKEVENT Event)
+{
+ //
+ // Initialize an event
+ //
+ KeInitializeEvent(Event, SynchronizationEvent, FALSE);
+}
+
+/**
+ * @brief Set (signal) a waiting event
+ *
+ * @param Event
+ * @return VOID
+ */
+VOID
+SynchronizationSetEvent(PRKEVENT Event)
+{
+ //
+ // Set (signal) an event
+ //
+ KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
+}
+
+/**
+ * @brief Wait for a waiting event
+ *
+ * @param Event
+ * @return VOID
+ */
+VOID
+SynchronizationWaitForEvent(PRKEVENT Event)
+{
+ //
+ // Wait for an event
+ //
+ KeWaitForSingleObject(Event,
+ Executive,
+ KernelMode,
+ FALSE,
+ NULL);
+}
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
index d45a9f71..185d9a08 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
@@ -70,7 +70,7 @@ UdInitializeUserDebugger()
//
// Initialize command waiting event
//
- KeInitializeEvent(&g_UserDebuggerWaitingCommandEvent, SynchronizationEvent, FALSE);
+ SynchronizationInitializeEvent(&g_UserDebuggerWaitingCommandEvent);
//
// Indicate that the user debugger is active
@@ -376,7 +376,7 @@ UdReadRegisters(PROCESSOR_DEBUGGING_STATE * DbgState,
//
// Set the event to indicate that the command is completed
//
- KeSetEvent(&g_UserDebuggerWaitingCommandEvent, IO_NO_INCREMENT, FALSE);
+ SynchronizationSetEvent(&g_UserDebuggerWaitingCommandEvent);
}
/**
@@ -568,11 +568,7 @@ UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest)
//
// Wait for the command to be completed
//
- KeWaitForSingleObject(&g_UserDebuggerWaitingCommandEvent,
- Executive,
- KernelMode,
- FALSE,
- NULL);
+ SynchronizationWaitForEvent(&g_UserDebuggerWaitingCommandEvent);
}
return Result;
diff --git a/hyperdbg/hyperkd/header/common/Synchronization.h b/hyperdbg/hyperkd/header/common/Synchronization.h
new file mode 100644
index 00000000..6833c241
--- /dev/null
+++ b/hyperdbg/hyperkd/header/common/Synchronization.h
@@ -0,0 +1,26 @@
+/**
+ * @file Synchronization.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Routines for synchronization objects
+ * @details
+ *
+ * @version 0.16
+ * @date 2025-08-30
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+VOID
+SynchronizationInitializeEvent(PRKEVENT Event);
+
+VOID
+SynchronizationSetEvent(PRKEVENT Event);
+
+VOID
+SynchronizationWaitForEvent(PRKEVENT Event);
diff --git a/hyperdbg/hyperkd/header/pch.h b/hyperdbg/hyperkd/header/pch.h
index 0f59a783..524fdaef 100644
--- a/hyperdbg/hyperkd/header/pch.h
+++ b/hyperdbg/hyperkd/header/pch.h
@@ -110,6 +110,7 @@
#include "header/debugger/script-engine/ScriptEngine.h"
#include "header/debugger/memory/Memory.h"
#include "header/common/Common.h"
+#include "header/common/Synchronization.h"
#include "header/debugger/memory/Allocations.h"
#include "header/debugger/kernel-level/Kd.h"
#include "header/debugger/user-level/Ud.h"
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj b/hyperdbg/hyperkd/hyperkd.vcxproj
index cd52c9a1..c2102bc7 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj
@@ -115,6 +115,7 @@
+
@@ -158,6 +159,7 @@
+
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj.filters b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
index f403ffcf..b3774320 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj.filters
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
@@ -264,6 +264,9 @@
code\platform
+
+ code\common
+
@@ -398,6 +401,9 @@
header\platform
+
+ header\common
+
From a869065718e982f651879eea7c5564fc01d47cb8 Mon Sep 17 00:00:00 2001
From: unknown
Date: Sun, 31 Aug 2025 01:53:29 +0200
Subject: [PATCH 046/323] add support to the registers command to the user
debugger
---
.../code/debugger/commands/DebuggerCommands.c | 49 +++++
.../hyperkd/code/debugger/kernel-level/Kd.c | 100 +---------
.../hyperkd/code/debugger/user-level/Ud.c | 75 ++++++-
hyperdbg/hyperkd/code/driver/Ioctl.c | 4 +-
.../debugger/commands/DebuggerCommands.h | 4 +
.../hyperkd/header/debugger/kernel-level/Kd.h | 7 -
.../hyperkd/header/debugger/user-level/Ud.h | 4 +-
hyperdbg/hyperkd/header/globals/Global.h | 18 ++
hyperdbg/include/SDK/headers/ErrorCodes.h | 6 +
.../code/debugger/core/debugger.cpp | 5 +
.../code/debugger/user-level/ud.cpp | 185 ++++++++++++------
hyperdbg/libhyperdbg/header/debugger.h | 1 -
hyperdbg/libhyperdbg/header/ud.h | 13 ++
13 files changed, 292 insertions(+), 179 deletions(-)
diff --git a/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c b/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c
index 1421b4ee..f18c5f24 100644
--- a/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c
+++ b/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c
@@ -12,6 +12,55 @@
*/
#include "pch.h"
+/**
+ * @brief read registers
+ * @param Regs
+ * @param ReadRegisterRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+DebuggerCommandReadRegisters(GUEST_REGS * Regs,
+ PDEBUGGEE_REGISTER_READ_DESCRIPTION ReadRegisterRequest)
+{
+ GUEST_EXTRA_REGISTERS ERegs = {0};
+
+ if (ReadRegisterRequest->RegisterId == DEBUGGEE_SHOW_ALL_REGISTERS)
+ {
+ //
+ // Add General purpose registers
+ //
+ memcpy((void *)((CHAR *)ReadRegisterRequest + sizeof(DEBUGGEE_REGISTER_READ_DESCRIPTION)),
+ Regs,
+ sizeof(GUEST_REGS));
+
+ //
+ // Read Extra registers
+ //
+ ERegs.CS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_CS);
+ ERegs.SS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_SS);
+ ERegs.DS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_DS);
+ ERegs.ES = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_ES);
+ ERegs.FS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_FS);
+ ERegs.GS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_GS);
+ ERegs.RFLAGS = DebuggerGetRegValueWrapper(NULL, REGISTER_RFLAGS);
+ ERegs.RIP = DebuggerGetRegValueWrapper(NULL, REGISTER_RIP);
+
+ //
+ // copy at the end of ReadRegisterRequest structure
+ //
+ memcpy((void *)((CHAR *)ReadRegisterRequest + sizeof(DEBUGGEE_REGISTER_READ_DESCRIPTION) + sizeof(GUEST_REGS)),
+ &ERegs,
+ sizeof(GUEST_EXTRA_REGISTERS));
+ }
+ else
+ {
+ ReadRegisterRequest->Value = DebuggerGetRegValueWrapper(Regs, ReadRegisterRequest->RegisterId);
+ }
+
+ return TRUE;
+}
+
/**
* @brief Read memory for different commands
*
diff --git a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
index 742a96bb..085c6b48 100644
--- a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
+++ b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
@@ -670,104 +670,6 @@ KdContinueDebuggeeJustCurrentCore(PROCESSOR_DEBUGGING_STATE * DbgState)
SpinlockUnlock(&DbgState->Lock);
}
-/**
- * @brief read registers
- * @param DbgState The state of the debugger on the current core
- * @param ReadRegisterRequest
- *
- * @return BOOLEAN
- */
-_Use_decl_annotations_
-BOOLEAN
-KdReadRegisters(PROCESSOR_DEBUGGING_STATE * DbgState, PDEBUGGEE_REGISTER_READ_DESCRIPTION ReadRegisterRequest)
-{
- GUEST_EXTRA_REGISTERS ERegs = {0};
-
- if (ReadRegisterRequest->RegisterId == DEBUGGEE_SHOW_ALL_REGISTERS)
- {
- //
- // Add General purpose registers
- //
- memcpy((void *)((CHAR *)ReadRegisterRequest + sizeof(DEBUGGEE_REGISTER_READ_DESCRIPTION)),
- DbgState->Regs,
- sizeof(GUEST_REGS));
-
- //
- // Read Extra registers
- //
- ERegs.CS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_CS);
- ERegs.SS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_SS);
- ERegs.DS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_DS);
- ERegs.ES = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_ES);
- ERegs.FS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_FS);
- ERegs.GS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_GS);
- ERegs.RFLAGS = DebuggerGetRegValueWrapper(NULL, REGISTER_RFLAGS);
- ERegs.RIP = DebuggerGetRegValueWrapper(NULL, REGISTER_RIP);
-
- //
- // copy at the end of ReadRegisterRequest structure
- //
- memcpy((void *)((CHAR *)ReadRegisterRequest + sizeof(DEBUGGEE_REGISTER_READ_DESCRIPTION) + sizeof(GUEST_REGS)),
- &ERegs,
- sizeof(GUEST_EXTRA_REGISTERS));
- }
- else
- {
- ReadRegisterRequest->Value = DebuggerGetRegValueWrapper(DbgState->Regs, ReadRegisterRequest->RegisterId);
- }
-
- return TRUE;
-}
-
-/**
- * @brief read registers
- * @param Regs
- * @param ReadRegisterRequest
- *
- * @return BOOLEAN
- */
-_Use_decl_annotations_
-BOOLEAN
-KdReadMemory(PGUEST_REGS Regs, PDEBUGGEE_REGISTER_READ_DESCRIPTION ReadRegisterRequest)
-{
- GUEST_EXTRA_REGISTERS ERegs = {0};
-
- if (ReadRegisterRequest->RegisterId == DEBUGGEE_SHOW_ALL_REGISTERS)
- {
- //
- // Add General purpose registers
- //
- memcpy((void *)((CHAR *)ReadRegisterRequest + sizeof(DEBUGGEE_REGISTER_READ_DESCRIPTION)),
- Regs,
- sizeof(GUEST_REGS));
-
- //
- // Read Extra registers
- //
- ERegs.CS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_CS);
- ERegs.SS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_SS);
- ERegs.DS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_DS);
- ERegs.ES = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_ES);
- ERegs.FS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_FS);
- ERegs.GS = (UINT16)DebuggerGetRegValueWrapper(NULL, REGISTER_GS);
- ERegs.RFLAGS = DebuggerGetRegValueWrapper(NULL, REGISTER_RFLAGS);
- ERegs.RIP = DebuggerGetRegValueWrapper(NULL, REGISTER_RIP);
-
- //
- // copy at the end of ReadRegisterRequest structure
- //
- memcpy((void *)((CHAR *)ReadRegisterRequest + sizeof(DEBUGGEE_REGISTER_READ_DESCRIPTION) + sizeof(GUEST_REGS)),
- &ERegs,
- sizeof(GUEST_EXTRA_REGISTERS));
- }
- else
- {
- ReadRegisterRequest->Value = DebuggerGetRegValueWrapper(Regs, ReadRegisterRequest->RegisterId);
- }
-
- return TRUE;
-}
-
/**
* @brief change the current operating core to new core
*
@@ -2605,7 +2507,7 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
//
// Read registers
//
- if (KdReadRegisters(DbgState, ReadRegisterPacket))
+ if (DebuggerCommandReadRegisters(DbgState->Regs, ReadRegisterPacket))
{
ReadRegisterPacket->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
}
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
index 185d9a08..e5bdf703 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
@@ -365,13 +365,29 @@ UdReadRegisters(PROCESSOR_DEBUGGING_STATE * DbgState,
UNREFERENCED_PARAMETER(DbgState);
UNREFERENCED_PARAMETER(RegisterId);
+ PDEBUGGER_UD_COMMAND_PACKET ActionRequest;
+ PDEBUGGEE_REGISTER_READ_DESCRIPTION RegDesc;
+
//
- // Send the register packet to the user debugger
+ // Recover the action request buffer and optional storage buffer
//
- // LogCallbackSendBuffer(OPERATION_NOTIFICATION_FROM_USER_DEBUGGER_READ_REGISTERS,
- // &PausePacket,
- // sizeof(DEBUGGEE_UD_PAUSED_PACKET),
- // TRUE);
+ ActionRequest = (DEBUGGER_UD_COMMAND_PACKET *)g_UserDebuggerWaitingCommandBuffer;
+ RegDesc = (PDEBUGGEE_REGISTER_READ_DESCRIPTION)((UINT8 *)g_UserDebuggerWaitingCommandBuffer + sizeof(DEBUGGER_UD_COMMAND_PACKET));
+
+ //
+ // *** Here, we should read the registers and put them in the optional storage buffer ***
+ //
+ DebuggerCommandReadRegisters(DbgState->Regs, RegDesc);
+
+ //
+ // Set the register request result
+ //
+ RegDesc->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+
+ //
+ // Set the action request result
+ //
+ ActionRequest->Result = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
//
// Set the event to indicate that the command is completed
@@ -534,10 +550,15 @@ UdCheckForCommand(PROCESSOR_DEBUGGING_STATE * DbgState,
* @brief Dispatch the user-mode commands
*
* @param ActionRequest
+ * @param ActionRequestInputLength
+ * @param ActionRequestOutputLength
+ *
* @return BOOLEAN
*/
BOOLEAN
-UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest)
+UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest,
+ UINT32 ActionRequestInputLength,
+ UINT32 ActionRequestOutputLength)
{
PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetails;
BOOLEAN Result;
@@ -552,9 +573,32 @@ UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest)
//
// Token not found!
//
+ ActionRequest->Result = DEBUGGER_ERROR_INVALID_THREAD_DEBUGGING_TOKEN;
+
return FALSE;
}
+ //
+ // Check if this command needs the action request to be waited for completion or not
+ //
+ if (ActionRequest->WaitForEventCompletion)
+ {
+ //
+ // Set the command event buffer
+ //
+ g_UserDebuggerWaitingCommandBuffer = (PVOID)ActionRequest;
+
+ //
+ // Set the input command buffer length
+ //
+ g_UserDebuggerWaitingCommandInputBufferLength = ActionRequestInputLength;
+
+ //
+ // Set the output command buffer length
+ //
+ g_UserDebuggerWaitingCommandOutputBufferLength = ActionRequestOutputLength;
+ }
+
//
// Apply the command to all threads or just one thread
//
@@ -571,6 +615,25 @@ UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest)
SynchronizationWaitForEvent(&g_UserDebuggerWaitingCommandEvent);
}
+ //
+ // Since the command is applied successfully, we can set the result
+ // Note that if the command contains another layer of optional buffers
+ // the result of that optional buffer might be different than this result
+ // this one is just for applying the command itself
+ //
+ if (Result)
+ {
+ //
+ // If we are not waiting for the event completion, we should set the
+ // result of the action request here as we successfully applied the command
+ //
+ ActionRequest->Result = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
+ else
+ {
+ ActionRequest->Result = DEBUGGER_ERROR_UNABLE_TO_APPLY_COMMAND_TO_THE_TARGET_THREAD;
+ }
+
return Result;
}
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index f0f62a8d..03eb8d4b 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -1284,9 +1284,9 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Perform the dispatching of user debugger command
//
- UdDispatchUsermodeCommands(DebuggerUdCommandRequest);
+ UdDispatchUsermodeCommands(DebuggerUdCommandRequest, InBuffLength, OutBuffLength);
- Irp->IoStatus.Information = sizeof(DEBUGGER_UD_COMMAND_PACKET);
+ Irp->IoStatus.Information = OutBuffLength;
Status = STATUS_SUCCESS;
//
diff --git a/hyperdbg/hyperkd/header/debugger/commands/DebuggerCommands.h b/hyperdbg/hyperkd/header/debugger/commands/DebuggerCommands.h
index 586756fe..c0043a3f 100644
--- a/hyperdbg/hyperkd/header/debugger/commands/DebuggerCommands.h
+++ b/hyperdbg/hyperkd/header/debugger/commands/DebuggerCommands.h
@@ -17,6 +17,10 @@
// Functions //
//////////////////////////////////////////////////
+BOOLEAN
+DebuggerCommandReadRegisters(GUEST_REGS * Regs,
+ PDEBUGGEE_REGISTER_READ_DESCRIPTION ReadRegisterRequest);
+
BOOLEAN
DebuggerCommandReadMemory(PDEBUGGER_READ_MEMORY ReadMemRequest, PVOID UserBuffer, PSIZE_T ReturnSize);
diff --git a/hyperdbg/hyperkd/header/debugger/kernel-level/Kd.h b/hyperdbg/hyperkd/header/debugger/kernel-level/Kd.h
index ec69bf02..f8487781 100644
--- a/hyperdbg/hyperkd/header/debugger/kernel-level/Kd.h
+++ b/hyperdbg/hyperkd/header/debugger/kernel-level/Kd.h
@@ -112,13 +112,6 @@ KdContinueDebuggee(_Inout_ PROCESSOR_DEBUGGING_STATE *
static VOID
KdContinueDebuggeeJustCurrentCore(PROCESSOR_DEBUGGING_STATE * DbgState);
-static BOOLEAN
-KdReadRegisters(_In_ PROCESSOR_DEBUGGING_STATE * DbgState,
- _Inout_ PDEBUGGEE_REGISTER_READ_DESCRIPTION ReadRegisterRequest);
-static BOOLEAN
-KdReadMemory(_In_ PGUEST_REGS Regs,
- _Inout_ PDEBUGGEE_REGISTER_READ_DESCRIPTION ReadRegisterRequest);
-
static BOOLEAN
KdSwitchCore(PROCESSOR_DEBUGGING_STATE * DbgState,
DEBUGGEE_CHANGE_CORE_PACKET * ChangeCorePacket);
diff --git a/hyperdbg/hyperkd/header/debugger/user-level/Ud.h b/hyperdbg/hyperkd/header/debugger/user-level/Ud.h
index 4463a4a8..bf825e9e 100644
--- a/hyperdbg/hyperkd/header/debugger/user-level/Ud.h
+++ b/hyperdbg/hyperkd/header/debugger/user-level/Ud.h
@@ -65,7 +65,9 @@ UdCheckAndHandleBreakpointsAndDebugBreaks(PROCESSOR_DEBUGGING_STATE * DbgS
PDEBUGGER_TRIGGERED_EVENT_DETAILS EventDetails);
BOOLEAN
-UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest);
+UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest,
+ UINT32 ActionRequestInputLength,
+ UINT32 ActionRequestOutputLength);
BOOLEAN
UdCheckForCommand(PROCESSOR_DEBUGGING_STATE * DbgState,
diff --git a/hyperdbg/hyperkd/header/globals/Global.h b/hyperdbg/hyperkd/header/globals/Global.h
index 575403c8..78df67be 100644
--- a/hyperdbg/hyperkd/header/globals/Global.h
+++ b/hyperdbg/hyperkd/header/globals/Global.h
@@ -22,6 +22,24 @@ PROCESSOR_DEBUGGING_STATE * g_DbgState;
*/
KEVENT g_UserDebuggerWaitingCommandEvent;
+/**
+ * @brief Buffer to hold the command from user debugger
+ *
+ */
+PVOID g_UserDebuggerWaitingCommandBuffer;
+
+/**
+ * @brief Length of the input command buffer from user debugger
+ *
+ */
+UINT32 g_UserDebuggerWaitingCommandInputBufferLength;
+
+/**
+ * @brief Length of the output command buffer from user debugger
+ *
+ */
+UINT32 g_UserDebuggerWaitingCommandOutputBufferLength;
+
/**
* @brief Holder of script engines global variables
*
diff --git a/hyperdbg/include/SDK/headers/ErrorCodes.h b/hyperdbg/include/SDK/headers/ErrorCodes.h
index c3d82979..78fbfe99 100644
--- a/hyperdbg/include/SDK/headers/ErrorCodes.h
+++ b/hyperdbg/include/SDK/headers/ErrorCodes.h
@@ -575,6 +575,12 @@
*/
#define DEBUGGER_ERROR_UNABLE_TO_TRIGGER_SMI 0xc0000058
+/**
+ * @brief error, unable to apply the command to the target thread
+ *
+ */
+#define DEBUGGER_ERROR_UNABLE_TO_APPLY_COMMAND_TO_THE_TARGET_THREAD 0xc0000059
+
//
// WHEN YOU ADD ANYTHING TO THIS LIST OF ERRORS, THEN
// MAKE SURE TO ADD AN ERROR MESSAGE TO ShowErrorMessage(UINT32 Error)
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index 379c705f..0856d3e7 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -564,6 +564,11 @@ ShowErrorMessage(UINT32 Error)
Error);
break;
+ case DEBUGGER_ERROR_UNABLE_TO_APPLY_COMMAND_TO_THE_TARGET_THREAD:
+ ShowMessages("err, unable to apply command to the target thread (%x)\n",
+ Error);
+ break;
+
default:
ShowMessages("err, error not found (%x)\n",
Error);
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
index dc34bead..69832589 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
@@ -993,6 +993,8 @@ UdContinueProcess(UINT64 ProcessDebuggingToken)
* @param ProcessDetailToken
* @param ThreadId
* @param ActionType
+ * @param OptionalBuffer
+ * @param OptionalBufferSize
* @param ApplyToAllPausedThreads
* @param WaitForEventCompletion
* @param OptionalParam1
@@ -1000,12 +1002,14 @@ UdContinueProcess(UINT64 ProcessDebuggingToken)
* @param OptionalParam3
* @param OptionalParam4
*
- * @return VOID
+ * @return BOOLEAN
*/
-VOID
+BOOLEAN
UdSendCommand(UINT64 ProcessDetailToken,
UINT32 ThreadId,
DEBUGGER_UD_COMMAND_ACTION_TYPE ActionType,
+ PVOID OptionalBuffer,
+ UINT32 OptionalBufferSize,
BOOLEAN ApplyToAllPausedThreads,
BOOLEAN WaitForEventCompletion,
UINT64 OptionalParam1,
@@ -1013,48 +1017,113 @@ UdSendCommand(UINT64 ProcessDetailToken,
UINT64 OptionalParam3,
UINT64 OptionalParam4)
{
- BOOL Status;
- ULONG ReturnedLength;
- DEBUGGER_UD_COMMAND_PACKET CommandPacket;
+ BOOL Status;
+ ULONG ReturnedLength;
+ UINT32 TargetBufferSize = 0;
+ DEBUGGER_UD_COMMAND_PACKET * CommandPacket;
- AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturn);
+ AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnFalse);
+
+ //
+ // Calculate the target buffer size
+ //
+ if (OptionalBufferSize == 0)
+ {
+ TargetBufferSize = sizeof(DEBUGGER_UD_COMMAND_PACKET);
+ }
+ else
+ {
+ TargetBufferSize = sizeof(DEBUGGER_UD_COMMAND_PACKET) + OptionalBufferSize;
+ }
+
+ //
+ // Allocate the target buffer
+ //
+ CommandPacket = (DEBUGGER_UD_COMMAND_PACKET *)malloc(TargetBufferSize);
+
+ if (CommandPacket == NULL)
+ {
+ ShowMessages("err, unable to allocate memory for command\n");
+ return FALSE;
+ }
//
// Zero the packet
//
- RtlZeroMemory(&CommandPacket, sizeof(DEBUGGER_UD_COMMAND_PACKET));
+ RtlZeroMemory(CommandPacket, TargetBufferSize);
//
// Set to the details
//
- CommandPacket.ProcessDebuggingDetailToken = ProcessDetailToken;
- CommandPacket.ApplyToAllPausedThreads = ApplyToAllPausedThreads;
- CommandPacket.TargetThreadId = ThreadId;
- CommandPacket.WaitForEventCompletion = WaitForEventCompletion;
- CommandPacket.UdAction.ActionType = ActionType;
- CommandPacket.UdAction.OptionalParam1 = OptionalParam1;
- CommandPacket.UdAction.OptionalParam2 = OptionalParam2;
- CommandPacket.UdAction.OptionalParam3 = OptionalParam3;
- CommandPacket.UdAction.OptionalParam4 = OptionalParam4;
+ CommandPacket->ProcessDebuggingDetailToken = ProcessDetailToken;
+ CommandPacket->ApplyToAllPausedThreads = ApplyToAllPausedThreads;
+ CommandPacket->TargetThreadId = ThreadId;
+ CommandPacket->WaitForEventCompletion = WaitForEventCompletion;
+ CommandPacket->UdAction.ActionType = ActionType;
+ CommandPacket->UdAction.OptionalParam1 = OptionalParam1;
+ CommandPacket->UdAction.OptionalParam2 = OptionalParam2;
+ CommandPacket->UdAction.OptionalParam3 = OptionalParam3;
+ CommandPacket->UdAction.OptionalParam4 = OptionalParam4;
+
+ //
+ // Copy the optional buffer if it's present
+ //
+ if (OptionalBuffer != NULL && OptionalBufferSize != 0)
+ {
+ //
+ // Append the optional buffer to the command packet buffer
+ //
+ memcpy((VOID *)((UINT8 *)CommandPacket + sizeof(DEBUGGER_UD_COMMAND_PACKET)), OptionalBuffer, OptionalBufferSize);
+ }
//
// Send IOCTL
//
- Status = DeviceIoControl(g_DeviceHandle, // Handle to device
- IOCTL_SEND_USER_DEBUGGER_COMMANDS, // IO Control Code (IOCTL)
- &CommandPacket, // Input Buffer to driver.
- sizeof(DEBUGGER_UD_COMMAND_PACKET), // Input buffer length
- &CommandPacket, // Output Buffer from driver.
- sizeof(DEBUGGER_UD_COMMAND_PACKET), // Length of output buffer in bytes.
- &ReturnedLength, // Bytes placed in buffer.
- NULL // synchronous call
+ Status = DeviceIoControl(g_DeviceHandle, // Handle to device
+ IOCTL_SEND_USER_DEBUGGER_COMMANDS, // IO Control Code (IOCTL)
+ CommandPacket, // Input Buffer to driver.
+ TargetBufferSize, // Input buffer length
+ CommandPacket, // Output Buffer from driver.
+ TargetBufferSize, // Length of output buffer in bytes.
+ &ReturnedLength, // Bytes placed in buffer.
+ NULL // synchronous call
);
if (!Status)
{
ShowMessages("ioctl failed with code 0x%x\n", GetLastError());
- return;
+
+ free(CommandPacket);
+ return FALSE;
}
+
+ if (CommandPacket->Result != DEBUGGER_OPERATION_WAS_SUCCESSFUL)
+ {
+ ShowErrorMessage((UINT32)CommandPacket->Result);
+
+ free(CommandPacket);
+ return FALSE;
+ }
+
+ //
+ // Copy the result of optional buffer to the caller buffer
+ //
+ if (OptionalBuffer != NULL && OptionalBufferSize != 0)
+ {
+ //
+ // Append the optional buffer to the command packet buffer
+ //
+ memcpy(OptionalBuffer,
+ (VOID *)((UINT8 *)CommandPacket + sizeof(DEBUGGER_UD_COMMAND_PACKET)),
+ OptionalBufferSize);
+ }
+
+ //
+ // Free the allocated buffer
+ //
+ free(CommandPacket);
+
+ return TRUE;
}
/**
@@ -1074,33 +1143,20 @@ UdSendReadRegisterToUserDebugger(UINT64 ProcessDeta
UINT32 RegBuffSize)
{
- //
- // Set the request data
- //
- DbgWaitSetUserRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_READ_REGISTERS, RegDes, RegBuffSize);
-
//
// Send the 'step' command
//
- UdSendCommand(ProcessDetailToken,
- TargetThreadId,
- DEBUGGER_UD_COMMAND_ACTION_TYPE_READ_REGISTERS,
- FALSE,
- TRUE,
- RegDes->RegisterId,
- NULL,
- NULL,
- NULL);
-
- //
- // Wait until the result of read registers received
- //
- DbgWaitForUserResponse(DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_READ_REGISTERS);
-
- //
- // Reading it was successful
- //
- return TRUE;
+ return UdSendCommand(ProcessDetailToken,
+ TargetThreadId,
+ DEBUGGER_UD_COMMAND_ACTION_TYPE_READ_REGISTERS,
+ RegDes,
+ RegBuffSize,
+ FALSE,
+ TRUE,
+ RegDes->RegisterId,
+ NULL,
+ NULL,
+ NULL);
}
/**
@@ -1145,20 +1201,23 @@ UdSendStepPacketToDebuggee(UINT64 ProcessDetailToken,
//
// Send the 'step' command
//
- UdSendCommand(ProcessDetailToken,
- TargetThreadId,
- DEBUGGER_UD_COMMAND_ACTION_TYPE_REGULAR_STEP,
- FALSE,
- FALSE,
- StepType,
- IsCurrentInstructionACall,
- CallInstructionSize,
- NULL);
-
- //
- // Wait until the result of user-input received
- //
- DbgWaitForUserResponse(DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_IS_DEBUGGER_RUNNING);
+ if (UdSendCommand(ProcessDetailToken,
+ TargetThreadId,
+ DEBUGGER_UD_COMMAND_ACTION_TYPE_REGULAR_STEP,
+ NULL,
+ 0,
+ FALSE,
+ FALSE,
+ StepType,
+ IsCurrentInstructionACall,
+ CallInstructionSize,
+ NULL))
+ {
+ //
+ // Wait until the result of user-input received
+ //
+ DbgWaitForUserResponse(DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_IS_DEBUGGER_RUNNING);
+ }
}
/**
diff --git a/hyperdbg/libhyperdbg/header/debugger.h b/hyperdbg/libhyperdbg/header/debugger.h
index 9bd0b086..85b6b396 100644
--- a/hyperdbg/libhyperdbg/header/debugger.h
+++ b/hyperdbg/libhyperdbg/header/debugger.h
@@ -102,7 +102,6 @@ typedef enum _DEBUGGER_EVENT_PARSING_ERROR_CAUSE
// User-debugger
//
#define DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_IS_DEBUGGER_RUNNING 0x0
-#define DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_READ_REGISTERS 0x1
//////////////////////////////////////////////////
// Event Details //
diff --git a/hyperdbg/libhyperdbg/header/ud.h b/hyperdbg/libhyperdbg/header/ud.h
index 33e235a6..401a5159 100644
--- a/hyperdbg/libhyperdbg/header/ud.h
+++ b/hyperdbg/libhyperdbg/header/ud.h
@@ -101,3 +101,16 @@ UdSendReadRegisterToUserDebugger(UINT64 ProcessDeta
UINT32 TargetThreadId,
PDEBUGGEE_REGISTER_READ_DESCRIPTION RegDes,
UINT32 RegBuffSize);
+
+BOOLEAN
+UdSendCommand(UINT64 ProcessDetailToken,
+ UINT32 ThreadId,
+ DEBUGGER_UD_COMMAND_ACTION_TYPE ActionType,
+ PVOID OptionalBuffer,
+ UINT32 OptionalBufferSize,
+ BOOLEAN ApplyToAllPausedThreads,
+ BOOLEAN WaitForEventCompletion,
+ UINT64 OptionalParam1,
+ UINT64 OptionalParam2,
+ UINT64 OptionalParam3,
+ UINT64 OptionalParam4);
From 3f6d837a62f52f429203201b1a315a386b91b243 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 31 Aug 2025 16:53:09 +0200
Subject: [PATCH 047/323] run script for modifying registers in the user
debugger
---
.../hyperkd/code/debugger/user-level/Ud.c | 74 +++++++++++++--
.../include/SDK/headers/RequestStructures.h | 1 +
.../commands/debugging-commands/r.cpp | 58 +-----------
.../code/debugger/kernel-level/kd.cpp | 4 +-
.../debugger/script-engine/script-engine.cpp | 93 ++++++++++++++++++-
.../code/debugger/user-level/ud.cpp | 68 +++++++++++++-
hyperdbg/libhyperdbg/header/script-engine.h | 3 +
hyperdbg/libhyperdbg/header/ud.h | 20 ++--
8 files changed, 247 insertions(+), 74 deletions(-)
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
index e5bdf703..439a243d 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
@@ -275,7 +275,7 @@ UdHandleDebugEventsWhenUserDebuggerIsAttached(PROCESSOR_DEBUGGING_STATE * DbgSta
}
/**
- * @brief Perform stepping though the instructions in target thread
+ * @brief Perform stepping though the instructions in the target thread
*
* @param DbgState The state of the debugger on the current core
* @param ProcessDebuggingDetail
@@ -347,14 +347,10 @@ UdStepInstructions(PROCESSOR_DEBUGGING_STATE * DbgState,
}
/**
- * @brief Perform stepping though the instructions in target thread
+ * @brief Perform reading register(s) in the target thread
*
* @param DbgState The state of the debugger on the current core
- * @param ProcessDebuggingDetail
- * @param ThreadDebuggingDetails
- * @param SteppingType
- * @param IsCurrentInstructionACall
- * @param CallInstructionSize
+ * @param RegisterId
*
* @return VOID
*/
@@ -395,6 +391,61 @@ UdReadRegisters(PROCESSOR_DEBUGGING_STATE * DbgState,
SynchronizationSetEvent(&g_UserDebuggerWaitingCommandEvent);
}
+/**
+ * @brief Perform running script in the target thread
+ *
+ * @param DbgState The state of the debugger on the current core
+ *
+ * @return VOID
+ */
+VOID
+UdRunScript(PROCESSOR_DEBUGGING_STATE * DbgState)
+{
+ PDEBUGGER_UD_COMMAND_PACKET ActionRequest;
+ DEBUGGEE_SCRIPT_PACKET * ScriptPacket;
+
+ //
+ // Recover the action request buffer and optional storage buffer
+ //
+ ActionRequest = (DEBUGGER_UD_COMMAND_PACKET *)g_UserDebuggerWaitingCommandBuffer;
+ ScriptPacket = (DEBUGGEE_SCRIPT_PACKET *)((UINT8 *)g_UserDebuggerWaitingCommandBuffer + sizeof(DEBUGGER_UD_COMMAND_PACKET));
+
+ //
+ // *** Here, we should execute script buffer and put them in the optional storage buffer ***
+ //
+
+ //
+ // Run the script in the target process (thread)
+ //
+ if (DebuggerPerformRunScript(DbgState,
+ NULL,
+ ScriptPacket,
+ &g_EventTriggerDetail))
+ {
+ //
+ // Set status
+ //
+ ScriptPacket->Result = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
+ else
+ {
+ //
+ // Set status
+ //
+ ScriptPacket->Result = DEBUGGER_ERROR_PREPARING_DEBUGGEE_TO_RUN_SCRIPT;
+ }
+
+ //
+ // Set the action request result
+ //
+ ActionRequest->Result = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+
+ //
+ // Set the event to indicate that the command is completed
+ //
+ SynchronizationSetEvent(&g_UserDebuggerWaitingCommandEvent);
+}
+
/**
* @brief Perform the user-mode commands
*
@@ -450,6 +501,15 @@ UdPerformCommand(PROCESSOR_DEBUGGING_STATE * DbgState,
break;
+ case DEBUGGER_UD_COMMAND_ACTION_TYPE_EXECUTE_SCRIPT_BUFFER:
+
+ //
+ // Execute the script buffer
+ //
+ UdRunScript(DbgState);
+
+ break;
+
default:
//
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 06b1812e..dd0821e5 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -904,6 +904,7 @@ typedef enum _DEBUGGER_UD_COMMAND_ACTION_TYPE
DEBUGGER_UD_COMMAND_ACTION_TYPE_PAUSE,
DEBUGGER_UD_COMMAND_ACTION_TYPE_REGULAR_STEP,
DEBUGGER_UD_COMMAND_ACTION_TYPE_READ_REGISTERS,
+ DEBUGGER_UD_COMMAND_ACTION_TYPE_EXECUTE_SCRIPT_BUFFER,
} DEBUGGER_UD_COMMAND_ACTION_TYPE;
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp
index a5f6e054..3161444e 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp
@@ -451,13 +451,6 @@ HyperDbgRegisterShowTargetRegister(REGS_ENUM RegisterId)
VOID
CommandR(vector CommandTokens, string Command)
{
- //
- // Interpret here
- //
- PVOID CodeBuffer;
- UINT64 BufferAddress;
- UINT32 BufferLength;
- UINT32 Pointer;
REGS_ENUM RegKind;
std::vector Tmp;
std::string SetRegValue;
@@ -582,53 +575,10 @@ CommandR(vector CommandTokens, string Command)
//
SetRegValue = "@" + tmp + '=' + Tmp[1] + "; ";
- if (g_IsSerialConnectedToRemoteDebuggee)
- {
- //
- // Send over serial
- //
-
- //
- // Run script engine handler
- //
- CodeBuffer = ScriptEngineParseWrapper((char *)SetRegValue.c_str(), TRUE);
- if (CodeBuffer == NULL)
- {
- //
- // return to show that this item contains an script
- //
- return;
- }
-
- //
- // Print symbols (test)
- //
- // PrintSymbolBufferWrapper(CodeBuffer);
-
- //
- // Set the buffer and length
- //
- BufferAddress = ScriptEngineWrapperGetHead(CodeBuffer);
- BufferLength = ScriptEngineWrapperGetSize(CodeBuffer);
- Pointer = ScriptEngineWrapperGetPointer(CodeBuffer);
-
- //
- // Send it to the remote debuggee
- //
- KdSendScriptPacketToDebuggee(BufferAddress, BufferLength, Pointer, FALSE);
-
- //
- // Remove the buffer of script engine interpreted code
- //
- ScriptEngineWrapperRemoveSymbolBuffer(CodeBuffer);
- }
- else
- {
- //
- // error
- //
- ShowMessages("err, you're not connected to any debuggee\n");
- }
+ //
+ // Send data to the target user debugger or kernel debugger
+ //
+ ScriptEngineExecuteSingleExpression(SetRegValue, TRUE, FALSE);
}
else
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
index cf3d28f9..7c2698b4 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
@@ -1068,8 +1068,8 @@ KdSendQueryIdtPacketsToDebuggee(PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS IdtR
// Set the request data
//
DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_IDT_ENTRIES,
- IdtRequest,
- sizeof(INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS));
+ IdtRequest,
+ sizeof(INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS));
//
// Send the IDT request packets
diff --git a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
index e0abeb21..358f3e4e 100644
--- a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
@@ -14,9 +14,10 @@
//
// Global Variables
//
-extern UINT64 g_ResultOfEvaluatedExpression;
-extern UINT32 g_ErrorStateOfResultOfEvaluatedExpression;
-extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
+extern UINT64 g_ResultOfEvaluatedExpression;
+extern UINT32 g_ErrorStateOfResultOfEvaluatedExpression;
+extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
+extern ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState;
/**
* @brief Get the value from the evaluation of single expression
@@ -123,3 +124,89 @@ ScriptEngineEvalSingleExpression(string Expr, PBOOLEAN HasError)
return Result;
}
+
+/**
+ * @brief Execute single expression for the kernel debugger and the user-mode debugger
+ *
+ * @param Expr
+ * @param ShowErrorMessageIfAny
+ * @param IsFormat If it's a format expression
+ *
+ * @return BOOLEAN Returns TRUE if it was successful
+ */
+BOOLEAN
+ScriptEngineExecuteSingleExpression(string Expr, BOOLEAN ShowErrorMessageIfAny, BOOLEAN IsFormat)
+{
+ PVOID CodeBuffer;
+ UINT64 BufferAddress;
+ UINT32 BufferLength;
+ UINT32 Pointer;
+ BOOLEAN Result = FALSE;
+
+ //
+ // Run script engine handler
+ //
+ CodeBuffer = ScriptEngineParseWrapper((char *)Expr.c_str(), ShowErrorMessageIfAny);
+
+ if (CodeBuffer == NULL)
+ {
+ //
+ // return to show that this item contains an error
+ //
+ return FALSE;
+ }
+
+ //
+ // Print symbols (test)
+ //
+ // PrintSymbolBufferWrapper(CodeBuffer);
+
+ //
+ // Set the buffer and length
+ //
+ BufferAddress = ScriptEngineWrapperGetHead(CodeBuffer);
+ BufferLength = ScriptEngineWrapperGetSize(CodeBuffer);
+ Pointer = ScriptEngineWrapperGetPointer(CodeBuffer);
+
+ if (g_IsSerialConnectedToRemoteDebuggee)
+ {
+ //
+ // Send it to the remote debuggee (kernel debugger)
+ //
+ Result = KdSendScriptPacketToDebuggee(BufferAddress,
+ BufferLength,
+ Pointer,
+ IsFormat);
+ }
+ else if (g_ActiveProcessDebuggingState.IsActive && g_ActiveProcessDebuggingState.IsPaused)
+ {
+ //
+ // Send it to the user debugger
+ //
+ Result = UdSendScriptBufferToProcess(
+ g_ActiveProcessDebuggingState.ProcessDebuggingToken,
+ g_ActiveProcessDebuggingState.ThreadId,
+ BufferAddress,
+ BufferLength,
+ Pointer,
+ IsFormat);
+ }
+ else
+ {
+ //
+ // Not connected to any debuggee
+ //
+ ShowMessages("err, you're not connected to any debuggee (neither user debugger nor kernel debugger)\n");
+ Result = FALSE;
+ }
+
+ //
+ // Remove the buffer of script engine interpreted code
+ //
+ ScriptEngineWrapperRemoveSymbolBuffer(CodeBuffer);
+
+ //
+ // Return result
+ //
+ return Result;
+}
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
index 69832589..050aad97 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
@@ -1127,7 +1127,7 @@ UdSendCommand(UINT64 ProcessDetailToken,
}
/**
- * @brief Send the command to the user debugger+
+ * @brief Send the command to the user debugger
*
* @param ProcessDetailToken
* @param TargetThreadId
@@ -1144,7 +1144,7 @@ UdSendReadRegisterToUserDebugger(UINT64 ProcessDeta
{
//
- // Send the 'step' command
+ // Send the read register command
//
return UdSendCommand(ProcessDetailToken,
TargetThreadId,
@@ -1159,6 +1159,70 @@ UdSendReadRegisterToUserDebugger(UINT64 ProcessDeta
NULL);
}
+/**
+ * @brief Send script buffer to the user debugger
+ *
+ * @param ProcessDetailToken
+ * @param TargetThreadId
+ * @param BufferAddress
+ * @param BufferLength
+ * @param Pointer
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+UdSendScriptBufferToProcess(UINT64 ProcessDetailToken,
+ UINT32 TargetThreadId,
+ UINT64 BufferAddress,
+ UINT32 BufferLength,
+ UINT32 Pointer,
+ BOOLEAN IsFormat)
+
+{
+ PDEBUGGEE_SCRIPT_PACKET ScriptPacket;
+ UINT32 SizeOfStruct = 0;
+ BOOLEAN Result = FALSE;
+
+ SizeOfStruct = sizeof(DEBUGGEE_SCRIPT_PACKET) + BufferLength;
+
+ ScriptPacket = (DEBUGGEE_SCRIPT_PACKET *)malloc(SizeOfStruct);
+
+ RtlZeroMemory(ScriptPacket, SizeOfStruct);
+
+ //
+ // Fill the script packet buffer
+ //
+ ScriptPacket->ScriptBufferSize = BufferLength;
+ ScriptPacket->ScriptBufferPointer = Pointer;
+ ScriptPacket->IsFormat = IsFormat;
+
+ //
+ // Move the buffer at the bottom of the script packet
+ //
+ memcpy((PVOID)((UINT64)ScriptPacket + sizeof(DEBUGGEE_SCRIPT_PACKET)),
+ (PVOID)BufferAddress,
+ BufferLength);
+
+ //
+ // Send the script buffer command
+ //
+ Result = UdSendCommand(ProcessDetailToken,
+ TargetThreadId,
+ DEBUGGER_UD_COMMAND_ACTION_TYPE_EXECUTE_SCRIPT_BUFFER,
+ ScriptPacket,
+ SizeOfStruct,
+ FALSE,
+ TRUE,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+
+ free(ScriptPacket);
+
+ return Result;
+}
+
/**
* @brief Send stepping instructions packet to user debugger
* @param ProcessDetailToken
diff --git a/hyperdbg/libhyperdbg/header/script-engine.h b/hyperdbg/libhyperdbg/header/script-engine.h
index e9fe3fbf..949beaca 100644
--- a/hyperdbg/libhyperdbg/header/script-engine.h
+++ b/hyperdbg/libhyperdbg/header/script-engine.h
@@ -108,3 +108,6 @@ ScriptEngineEvalUInt64StyleExpressionWrapper(const string & Expr, PBOOLEAN HasEr
UINT64
ScriptEngineEvalSingleExpression(string Expr, PBOOLEAN HasError);
+
+BOOLEAN
+ScriptEngineExecuteSingleExpression(string Expr, BOOLEAN ShowErrorMessageIfAny, BOOLEAN IsFormat);
diff --git a/hyperdbg/libhyperdbg/header/ud.h b/hyperdbg/libhyperdbg/header/ud.h
index 401a5159..cf31f1d8 100644
--- a/hyperdbg/libhyperdbg/header/ud.h
+++ b/hyperdbg/libhyperdbg/header/ud.h
@@ -96,12 +96,6 @@ UdContinueProcess(UINT64 ProcessDebuggingToken);
BOOLEAN
UdPauseProcess(UINT64 ProcessDebuggingToken);
-BOOLEAN
-UdSendReadRegisterToUserDebugger(UINT64 ProcessDetailToken,
- UINT32 TargetThreadId,
- PDEBUGGEE_REGISTER_READ_DESCRIPTION RegDes,
- UINT32 RegBuffSize);
-
BOOLEAN
UdSendCommand(UINT64 ProcessDetailToken,
UINT32 ThreadId,
@@ -114,3 +108,17 @@ UdSendCommand(UINT64 ProcessDetailToken,
UINT64 OptionalParam2,
UINT64 OptionalParam3,
UINT64 OptionalParam4);
+
+BOOLEAN
+UdSendScriptBufferToProcess(UINT64 ProcessDetailToken,
+ UINT32 TargetThreadId,
+ UINT64 BufferAddress,
+ UINT32 BufferLength,
+ UINT32 Pointer,
+ BOOLEAN IsFormat);
+
+BOOLEAN
+UdSendReadRegisterToUserDebugger(UINT64 ProcessDetailToken,
+ UINT32 TargetThreadId,
+ PDEBUGGEE_REGISTER_READ_DESCRIPTION RegDes,
+ UINT32 RegBuffSize);
From 31fc581135d7744476a52cfa42f0c4e4d373956b Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 31 Aug 2025 18:31:35 +0200
Subject: [PATCH 048/323] add support to the eval command in the user debugger
---
CHANGELOG.md | 8 ++-
.../SDK/imports/user/HyperDbgLibImports.h | 6 ++
.../commands/debugging-commands/eval.cpp | 62 +++++--------------
.../commands/debugging-commands/r.cpp | 6 +-
.../debugger/script-engine/script-engine.cpp | 4 +-
hyperdbg/libhyperdbg/code/export/export.cpp | 14 +++++
hyperdbg/libhyperdbg/header/script-engine.h | 2 +-
7 files changed, 46 insertions(+), 56 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2160391c..575a23cb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,16 +8,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
New release of the HyperDbg Debugger.
### Added
-- The **!xsetbv** event command is added to execution of XSETBV instruction thanks to HyperDbg group members ([link](https://docs.hyperdbg.org/commands/extension-commands/xsetbv))
+- The **!xsetbv** event command is added to the execution of the XSETBV instruction thanks to HyperDbg group members ([link](https://docs.hyperdbg.org/commands/extension-commands/xsetbv))
- Number of blocked context switches in the '.switch' command ([link](https://docs.hyperdbg.org/commands/meta-commands/.switch))
- Added support to the step-in (the 't' command) for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/t))
- Added support to the step-over (the 'p' command) for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/p))
+- Added support to show all registers or a specific register for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/r))
+- Export SDK API for running scripts in the kernel debugger or the user debugger
+- Added support to modify registers or a specific register for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/r))
+- Added support to evaluate (run) scripts on the target thread in the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/eval))
### Changed
- Non-volatile XMM registers are no longer saved/restored on VM-exit handler ([link](https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions?view=msvc-170))
- Fix grammar and spelling errors throughout HyperDbg codebase ([link](https://github.com/HyperDbg/HyperDbg/pull/546))
- Relocate extension command files into their corresponding VS directory
-- Fix infinite vm-exit bug for the '!monitor x' command thanks to [@unlockable](https://github.com/unlockable) ([link](https://github.com/HyperDbg/HyperDbg/pull/545))
+- Fix infinite VM-exit bug for the '!monitor x' command thanks to [@unlockable](https://github.com/unlockable) ([link](https://github.com/HyperDbg/HyperDbg/pull/545))
## [0.15.0.0] - 2025-08-18
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
index 4c0bd9be..7b8b3881 100644
--- a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
+++ b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
@@ -289,6 +289,12 @@ hwdbg_script_run_script(const CHAR * script,
VOID
hwdbg_script_engine_wrapper_test_parser(const CHAR * Expr);
+//
+// Run script
+//
+BOOLEAN
+hyperdbg_u_run_script(CHAR * Expr, BOOLEAN ShowErrorMessageIfAny);
+
#ifdef __cplusplus
}
#endif
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/eval.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/eval.cpp
index f0d292b5..be6b8d68 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/eval.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/eval.cpp
@@ -14,7 +14,8 @@
//
// Global Variables
//
-extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
+extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
+extern ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState;
/**
* @brief help of the ? command
@@ -194,11 +195,6 @@ ErrorMessage:
VOID
CommandEval(vector CommandTokens, string Command)
{
- PVOID CodeBuffer;
- UINT64 BufferAddress;
- UINT32 BufferLength;
- UINT32 Pointer;
-
if (CommandTokens.size() == 1)
{
ShowMessages("incorrect use of the '%s'\n\n",
@@ -242,56 +238,26 @@ CommandEval(vector CommandTokens, string Command)
return;
}
- if (g_IsSerialConnectedToRemoteDebuggee)
+ //
+ // Check if we're connected to a remote debuggee (kernel debugger) or the user debugger
+ //
+ if (g_IsSerialConnectedToRemoteDebuggee ||
+ (g_ActiveProcessDebuggingState.IsActive && g_ActiveProcessDebuggingState.IsPaused))
{
//
- // Send over serial
+ // Send data to the target user debugger or kernel debugger
//
-
- //
- // Run script engine handler
- //
- CodeBuffer = ScriptEngineParseWrapper((char *)Command.c_str(), TRUE);
-
- if (CodeBuffer == NULL)
- {
- //
- // return to show that this item contains an script
- //
- return;
- }
-
- //
- // Print symbols (test)
- //
- // PrintSymbolBufferWrapper(CodeBuffer);
-
- //
- // Set the buffer and length
- //
- BufferAddress = ScriptEngineWrapperGetHead(CodeBuffer);
- BufferLength = ScriptEngineWrapperGetSize(CodeBuffer);
- Pointer = ScriptEngineWrapperGetPointer(CodeBuffer);
-
- //
- // Send it to the remote debuggee
- //
- KdSendScriptPacketToDebuggee(BufferAddress, BufferLength, Pointer, FALSE);
-
- //
- // Remove the buffer of script engine interpreted code
- //
- ScriptEngineWrapperRemoveSymbolBuffer(CodeBuffer);
+ ScriptEngineExecuteSingleExpression((CHAR *)Command.c_str(), TRUE, FALSE);
}
else
{
//
- // It's a test
+ // It's a test (simulated) run of the script-engine
//
- ShowMessages("this command should not be used while you're in VMI-Mode or not in debugger-mode, "
- "the results that you see is a simulated result for TESTING script-engine "
- "and is not based on the status of your system. You can use this command, "
- "ONLY in debugger-mode\n\n");
+ ShowMessages("this command should not be used while you're in VMI-Mode (not attached to the user debugger) "
+ "or not in debugger-mode, the results that you see is a simulated result for TESTING script-engine "
+ "and is not based on the status of your system. You can use this command, either in the debugger mode "
+ "(kernel debugger), or when you attached to a user debugger\n\n");
ShowMessages("test expression : %s \n", Command.c_str());
ScriptEngineWrapperTestParser(Command);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp
index 3161444e..da225f35 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp
@@ -453,7 +453,7 @@ CommandR(vector CommandTokens, string Command)
{
REGS_ENUM RegKind;
std::vector Tmp;
- std::string SetRegValue;
+ std::string SetRegisterValue;
//
// Disable user-mode debugger in this version
@@ -573,12 +573,12 @@ CommandR(vector CommandTokens, string Command)
//
// send the request
//
- SetRegValue = "@" + tmp + '=' + Tmp[1] + "; ";
+ SetRegisterValue = "@" + tmp + '=' + Tmp[1] + "; ";
//
// Send data to the target user debugger or kernel debugger
//
- ScriptEngineExecuteSingleExpression(SetRegValue, TRUE, FALSE);
+ ScriptEngineExecuteSingleExpression((CHAR *)SetRegisterValue.c_str(), TRUE, FALSE);
}
else
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
index 358f3e4e..8c5dffa4 100644
--- a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
@@ -135,7 +135,7 @@ ScriptEngineEvalSingleExpression(string Expr, PBOOLEAN HasError)
* @return BOOLEAN Returns TRUE if it was successful
*/
BOOLEAN
-ScriptEngineExecuteSingleExpression(string Expr, BOOLEAN ShowErrorMessageIfAny, BOOLEAN IsFormat)
+ScriptEngineExecuteSingleExpression(CHAR * Expr, BOOLEAN ShowErrorMessageIfAny, BOOLEAN IsFormat)
{
PVOID CodeBuffer;
UINT64 BufferAddress;
@@ -146,7 +146,7 @@ ScriptEngineExecuteSingleExpression(string Expr, BOOLEAN ShowErrorMessageIfAny,
//
// Run script engine handler
//
- CodeBuffer = ScriptEngineParseWrapper((char *)Expr.c_str(), ShowErrorMessageIfAny);
+ CodeBuffer = ScriptEngineParseWrapper(Expr, ShowErrorMessageIfAny);
if (CodeBuffer == NULL)
{
diff --git a/hyperdbg/libhyperdbg/code/export/export.cpp b/hyperdbg/libhyperdbg/code/export/export.cpp
index dc29a1a4..99be9922 100644
--- a/hyperdbg/libhyperdbg/code/export/export.cpp
+++ b/hyperdbg/libhyperdbg/code/export/export.cpp
@@ -799,3 +799,17 @@ hyperdbg_u_disable_transparent_mode()
{
return HyperDbgDisableTransparentMode();
}
+
+/**
+ * @brief Run HyperDbg scripts in the target process (user debugger) or
+ * debuggee (kernel debugger)
+ * @param Expr The expression to run
+ * @param ShowErrorMessageIfAny If true, show error message if any
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+hyperdbg_u_run_script(CHAR * Expr, BOOLEAN ShowErrorMessageIfAny)
+{
+ return ScriptEngineExecuteSingleExpression(Expr, ShowErrorMessageIfAny, FALSE);
+}
diff --git a/hyperdbg/libhyperdbg/header/script-engine.h b/hyperdbg/libhyperdbg/header/script-engine.h
index 949beaca..48341994 100644
--- a/hyperdbg/libhyperdbg/header/script-engine.h
+++ b/hyperdbg/libhyperdbg/header/script-engine.h
@@ -110,4 +110,4 @@ UINT64
ScriptEngineEvalSingleExpression(string Expr, PBOOLEAN HasError);
BOOLEAN
-ScriptEngineExecuteSingleExpression(string Expr, BOOLEAN ShowErrorMessageIfAny, BOOLEAN IsFormat);
+ScriptEngineExecuteSingleExpression(CHAR * Expr, BOOLEAN ShowErrorMessageIfAny, BOOLEAN IsFormat);
From cda5029081e5945174312d49351d1df16c5f27d9 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 1 Sep 2025 14:38:59 +0200
Subject: [PATCH 049/323] run script for the print command in the user debugger
---
CHANGELOG.md | 2 +
.../commands/debugging-commands/eval.cpp | 5 +-
.../commands/debugging-commands/print.cpp | 64 ++-----------------
.../code/debugger/core/interpreter.cpp | 3 +-
.../debugger/script-engine/script-engine.cpp | 26 +++++++-
5 files changed, 35 insertions(+), 65 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 575a23cb..96d5846c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,8 @@ New release of the HyperDbg Debugger.
- Export SDK API for running scripts in the kernel debugger or the user debugger
- Added support to modify registers or a specific register for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/r))
- Added support to evaluate (run) scripts on the target thread in the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/eval))
+- Added indication of a thread running or paused state to the HyperDbg signature in the user debugger ([link](https://docs.hyperdbg.org/using-hyperdbg/prerequisites/signatures))
+- Added support to the 'print' command for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/print))
### Changed
- Non-volatile XMM registers are no longer saved/restored on VM-exit handler ([link](https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions?view=msvc-170))
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/eval.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/eval.cpp
index be6b8d68..202701cb 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/eval.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/eval.cpp
@@ -241,8 +241,7 @@ CommandEval(vector CommandTokens, string Command)
//
// Check if we're connected to a remote debuggee (kernel debugger) or the user debugger
//
- if (g_IsSerialConnectedToRemoteDebuggee ||
- (g_ActiveProcessDebuggingState.IsActive && g_ActiveProcessDebuggingState.IsPaused))
+ if (g_IsSerialConnectedToRemoteDebuggee || g_ActiveProcessDebuggingState.IsActive)
{
//
// Send data to the target user debugger or kernel debugger
@@ -255,7 +254,7 @@ CommandEval(vector CommandTokens, string Command)
// It's a test (simulated) run of the script-engine
//
ShowMessages("this command should not be used while you're in VMI-Mode (not attached to the user debugger) "
- "or not in debugger-mode, the results that you see is a simulated result for TESTING script-engine "
+ "or not in the debugger mode, the results that you see is a simulated result for TESTING the script engine "
"and is not based on the status of your system. You can use this command, either in the debugger mode "
"(kernel debugger), or when you attached to a user debugger\n\n");
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/print.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/print.cpp
index 3dd95374..da7af0e0 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/print.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/print.cpp
@@ -14,11 +14,6 @@
using namespace std;
-//
-// Global Variables
-//
-extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
-
/**
* @brief help of the print command
*
@@ -46,11 +41,6 @@ CommandPrintHelp()
VOID
CommandPrint(vector CommandTokens, string Command)
{
- PVOID CodeBuffer;
- UINT64 BufferAddress;
- UINT32 BufferLength;
- UINT32 Pointer;
-
if (CommandTokens.size() == 1)
{
ShowMessages("incorrect use of the '%s'\n\n",
@@ -80,54 +70,8 @@ CommandPrint(vector CommandTokens, string Command)
Command.insert(0, "print(");
Command.append(");");
- if (g_IsSerialConnectedToRemoteDebuggee)
- {
- //
- // Send over serial
- //
-
- //
- // Run script engine handler
- //
- CodeBuffer = ScriptEngineParseWrapper((char *)Command.c_str(), TRUE);
-
- if (CodeBuffer == NULL)
- {
- //
- // return to show that this item contains an script
- //
- return;
- }
-
- //
- // Print symbols (test)
- //
- // PrintSymbolBufferWrapper(CodeBuffer);
-
- //
- // Set the buffer and length
- //
- BufferAddress = ScriptEngineWrapperGetHead(CodeBuffer);
- BufferLength = ScriptEngineWrapperGetSize(CodeBuffer);
- Pointer = ScriptEngineWrapperGetPointer(CodeBuffer);
-
- //
- // Send it to the remote debuggee
- //
- KdSendScriptPacketToDebuggee(BufferAddress, BufferLength, Pointer, FALSE);
-
- //
- // Remove the buffer of script engine interpreted code
- //
- ScriptEngineWrapperRemoveSymbolBuffer(CodeBuffer);
-
- ShowMessages("\n");
- }
- else
- {
- //
- // error
- //
- ShowMessages("err, you're not connected to any debuggee\n");
- }
+ //
+ // Execute the expression
+ //
+ ScriptEngineExecuteSingleExpression((CHAR *)Command.c_str(), TRUE, FALSE);
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
index 02e436ea..bf21ff9c 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
@@ -1102,9 +1102,10 @@ HyperDbgShowSignature()
//
// Debugging a special process
//
- ShowMessages("%x:%x u%sHyperDbg> ",
+ ShowMessages("%x:%x %s u%sHyperDbg> ",
g_ActiveProcessDebuggingState.ProcessId,
g_ActiveProcessDebuggingState.ThreadId,
+ g_ActiveProcessDebuggingState.IsPaused ? "(paused)" : "(running)",
g_ActiveProcessDebuggingState.Is32Bit ? "86" : "64");
}
else if (g_IsSerialConnectedToRemoteDebuggee)
diff --git a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
index 8c5dffa4..11df60bf 100644
--- a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
@@ -143,6 +143,30 @@ ScriptEngineExecuteSingleExpression(CHAR * Expr, BOOLEAN ShowErrorMessageIfAny,
UINT32 Pointer;
BOOLEAN Result = FALSE;
+ //
+ // Check whether a kernel debugger is connected or a user-mode debugger is active
+ //
+ if (!g_IsSerialConnectedToRemoteDebuggee && !g_ActiveProcessDebuggingState.IsActive)
+ {
+ if (ShowErrorMessageIfAny)
+ {
+ ShowMessages("err, you're not connected to any debuggee (neither user debugger nor kernel debugger)\n");
+ }
+ return FALSE;
+ }
+
+ //
+ // Check if the user-mode debuggee is paused
+ //
+ if (g_ActiveProcessDebuggingState.IsActive && !g_ActiveProcessDebuggingState.IsPaused)
+ {
+ if (ShowErrorMessageIfAny)
+ {
+ ShowMessages("err, the target process is NOT paused, you should run 'pause' to pause it\n");
+ }
+ return FALSE;
+ }
+
//
// Run script engine handler
//
@@ -178,7 +202,7 @@ ScriptEngineExecuteSingleExpression(CHAR * Expr, BOOLEAN ShowErrorMessageIfAny,
Pointer,
IsFormat);
}
- else if (g_ActiveProcessDebuggingState.IsActive && g_ActiveProcessDebuggingState.IsPaused)
+ else if (g_ActiveProcessDebuggingState.IsActive)
{
//
// Send it to the user debugger
From fe4f2be270c35a66f06dd84bac110d0210d64393 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 1 Sep 2025 15:00:21 +0200
Subject: [PATCH 050/323] run script for the .formats command in the user
debugger
---
CHANGELOG.md | 2 +-
.../debugger/script-engine/script-engine.cpp | 52 +++----------------
2 files changed, 8 insertions(+), 46 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 96d5846c..d6205509 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,7 +17,7 @@ New release of the HyperDbg Debugger.
- Added support to modify registers or a specific register for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/r))
- Added support to evaluate (run) scripts on the target thread in the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/eval))
- Added indication of a thread running or paused state to the HyperDbg signature in the user debugger ([link](https://docs.hyperdbg.org/using-hyperdbg/prerequisites/signatures))
-- Added support to the 'print' command for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/print))
+- Added support to the '.formats' command for the user debugger ([link](https://docs.hyperdbg.org/commands/meta-commands/.formats))
### Changed
- Non-volatile XMM registers are no longer saved/restored on VM-exit handler ([link](https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions?view=msvc-170))
diff --git a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
index 11df60bf..ee015a28 100644
--- a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
@@ -30,10 +30,6 @@ extern ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState;
UINT64
ScriptEngineEvalSingleExpression(string Expr, PBOOLEAN HasError)
{
- PVOID CodeBuffer;
- UINT64 BufferAddress;
- UINT32 BufferLength;
- UINT32 Pointer;
UINT64 Result = NULL;
//
@@ -42,45 +38,16 @@ ScriptEngineEvalSingleExpression(string Expr, PBOOLEAN HasError)
Expr.insert(0, "formats(");
Expr.append(");");
- //
- // Run script engine handler
- //
- CodeBuffer = ScriptEngineParseWrapper((char *)Expr.c_str(), FALSE);
-
- if (CodeBuffer == NULL)
+ if (g_IsSerialConnectedToRemoteDebuggee || g_ActiveProcessDebuggingState.IsActive)
{
//
- // return to show that this item contains an script
+ // Send data to the target user debugger or kernel debugger
//
- *HasError = TRUE;
- return NULL;
- }
-
- //
- // Print symbols (test)
- //
- // PrintSymbolBufferWrapper(CodeBuffer);
-
- //
- // Set the buffer and length
- //
- BufferAddress = ScriptEngineWrapperGetHead(CodeBuffer);
- BufferLength = ScriptEngineWrapperGetSize(CodeBuffer);
- Pointer = ScriptEngineWrapperGetPointer(CodeBuffer);
-
- //
- // Check if it's connected over remote debuggee (in the Debugger Mode)
- //
- if (g_IsSerialConnectedToRemoteDebuggee)
- {
- //
- // Send over serial
- //
-
- //
- // Send it to the remote debuggee
- //
- KdSendScriptPacketToDebuggee(BufferAddress, BufferLength, Pointer, TRUE);
+ if (!ScriptEngineExecuteSingleExpression((CHAR *)Expr.c_str(), TRUE, FALSE))
+ {
+ *HasError = TRUE;
+ return NULL;
+ }
//
// Check whether there was an error in evaluation or not
@@ -117,11 +84,6 @@ ScriptEngineEvalSingleExpression(string Expr, PBOOLEAN HasError)
Result = ScriptEngineEvalUInt64StyleExpressionWrapper(Expr, HasError);
}
- //
- // Remove the buffer of script engine interpreted code
- //
- ScriptEngineWrapperRemoveSymbolBuffer(CodeBuffer);
-
return Result;
}
From 0d940ee543cb376fb4b1b82f9be3bd55da976177 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 1 Sep 2025 18:27:01 +0200
Subject: [PATCH 051/323] sending results of format to the user debugger
---
.../hyperkd/code/debugger/kernel-level/Kd.c | 2 +-
.../hyperkd/code/debugger/user-level/Ud.c | 33 +++++++++++++++++--
.../hyperkd/header/debugger/user-level/Ud.h | 3 ++
hyperdbg/hyperkd/header/globals/Global.h | 6 ++++
.../include/SDK/headers/RequestStructures.h | 1 +
.../debugger/script-engine/script-engine.cpp | 2 +-
.../code/debugger/user-level/ud.cpp | 11 +++++++
hyperdbg/script-eval/code/Functions.c | 4 +++
8 files changed, 58 insertions(+), 4 deletions(-)
diff --git a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
index 085c6b48..02eed173 100644
--- a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
+++ b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
@@ -836,7 +836,7 @@ KdNotifyDebuggeeForUserInput(DEBUGGEE_USER_INPUT_PACKET * Descriptor, UINT32 Len
}
/**
- * @brief Notify user-mode to unload the debuggee and close the connections
+ * @brief Send the result of formats command to the kernel debugger
* @param Value
*
* @return VOID
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
index 439a243d..ed50f048 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
@@ -185,6 +185,19 @@ UdApplyHardwareDebugRegister(PVOID TargetAddress)
(UINT64)TargetAddress);
}
+/**
+ * @brief Send the result of formats command to the user debugger
+ * @param Value
+ *
+ * @return VOID
+ */
+VOID
+UdSendFormatsFunctionResult(UINT64 Value)
+{
+ g_UserDebuggerFormatsResultPacket.Result = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ g_UserDebuggerFormatsResultPacket.Value = Value;
+}
+
/**
* @brief routines to broadcast setting hardware debug registers on all cores
* @param TargetAddress
@@ -423,9 +436,25 @@ UdRunScript(PROCESSOR_DEBUGGING_STATE * DbgState)
&g_EventTriggerDetail))
{
//
- // Set status
+ // Check if we need to format the output or not
//
- ScriptPacket->Result = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ if (ScriptPacket->IsFormat)
+ {
+ //
+ // For the format, we need to get the result from the script engine
+ // through global variables, we store the result of format into
+ // optional parameters
+ //
+ ScriptPacket->Result = g_UserDebuggerFormatsResultPacket.Result;
+ ScriptPacket->FormatValue = g_UserDebuggerFormatsResultPacket.Value;
+ }
+ else
+ {
+ //
+ // Set status
+ //
+ ScriptPacket->Result = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
}
else
{
diff --git a/hyperdbg/hyperkd/header/debugger/user-level/Ud.h b/hyperdbg/hyperkd/header/debugger/user-level/Ud.h
index bf825e9e..b9134e0f 100644
--- a/hyperdbg/hyperkd/header/debugger/user-level/Ud.h
+++ b/hyperdbg/hyperkd/header/debugger/user-level/Ud.h
@@ -76,3 +76,6 @@ UdCheckForCommand(PROCESSOR_DEBUGGING_STATE * DbgState,
BOOLEAN
UdHandleDebugEventsWhenUserDebuggerIsAttached(PROCESSOR_DEBUGGING_STATE * DbgState,
BOOLEAN TrapSetByDebugger);
+
+VOID
+UdSendFormatsFunctionResult(UINT64 Value);
diff --git a/hyperdbg/hyperkd/header/globals/Global.h b/hyperdbg/hyperkd/header/globals/Global.h
index 78df67be..d887f0f6 100644
--- a/hyperdbg/hyperkd/header/globals/Global.h
+++ b/hyperdbg/hyperkd/header/globals/Global.h
@@ -84,6 +84,12 @@ DEBUGGEE_REQUEST_TO_IGNORE_BREAKS_UNTIL_AN_EVENT g_IgnoreBreaksToDebugger;
*/
HARDWARE_DEBUG_REGISTER_DETAILS g_HardwareDebugRegisterDetailsForStepOver;
+/**
+ * @brief Holds the result of user debugger formats command
+ *
+ */
+DEBUGGEE_FORMATS_PACKET g_UserDebuggerFormatsResultPacket;
+
/**
* @brief Process switch to EPROCESS or Process ID
*
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index dd0821e5..d5033bb6 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1403,6 +1403,7 @@ typedef struct _DEBUGGEE_SCRIPT_PACKET
UINT32 ScriptBufferSize;
UINT32 ScriptBufferPointer;
BOOLEAN IsFormat;
+ UINT64 FormatValue;
UINT32 Result;
//
diff --git a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
index ee015a28..73b07f71 100644
--- a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine.cpp
@@ -43,7 +43,7 @@ ScriptEngineEvalSingleExpression(string Expr, PBOOLEAN HasError)
//
// Send data to the target user debugger or kernel debugger
//
- if (!ScriptEngineExecuteSingleExpression((CHAR *)Expr.c_str(), TRUE, FALSE))
+ if (!ScriptEngineExecuteSingleExpression((CHAR *)Expr.c_str(), TRUE, TRUE))
{
*HasError = TRUE;
return NULL;
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
index 050aad97..9b032cc4 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
@@ -17,6 +17,8 @@
extern UINT32 g_ProcessIdOfLatestStartingProcess;
extern ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState;
extern BOOLEAN g_IsUserDebuggerInitialized;
+extern UINT64 g_ResultOfEvaluatedExpression;
+extern UINT32 g_ErrorStateOfResultOfEvaluatedExpression;
extern CommandType g_CommandsList;
extern DEBUGGER_SYNCRONIZATION_EVENTS_STATE
g_UserSyncronizationObjectsHandleTable[DEBUGGER_MAXIMUM_SYNCRONIZATION_USER_DEBUGGER_OBJECTS];
@@ -1218,6 +1220,15 @@ UdSendScriptBufferToProcess(UINT64 ProcessDetailToken,
NULL,
NULL);
+ //
+ // Check if it's a format expression and if there was an error or not
+ //
+ if (IsFormat && Result)
+ {
+ g_ErrorStateOfResultOfEvaluatedExpression = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ g_ResultOfEvaluatedExpression = ScriptPacket->FormatValue;
+ }
+
free(ScriptPacket);
return Result;
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index e44c61fe..6e2be2ff 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -1225,6 +1225,10 @@ ScriptEngineFunctionFormats(UINT64 Tag, BOOLEAN ImmediateMessagePassing, UINT64
{
KdSendFormatsFunctionResult(Value);
}
+ else if (g_UserDebuggerState)
+ {
+ UdSendFormatsFunctionResult(Value);
+ }
else
{
//
From 8316085e17b7d843ec665cfb5fe41a0d8ca271ba Mon Sep 17 00:00:00 2001
From: unknown
Date: Tue, 2 Sep 2025 00:52:27 +0200
Subject: [PATCH 052/323] fix command parameter parsing errors on the user
debugger
---
CHANGELOG.md | 19 ++++++++++---------
.../commands/debugging-commands/pause.cpp | 5 ++---
.../extension-commands/syscall-sysret.cpp | 4 +++-
.../code/debugger/core/debugger.cpp | 2 +-
.../code/debugger/user-level/ud.cpp | 5 ++---
hyperdbg/script-eval/code/Functions.c | 2 +-
6 files changed, 19 insertions(+), 18 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d6205509..83f01d9f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,16 +8,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
New release of the HyperDbg Debugger.
### Added
-- The **!xsetbv** event command is added to the execution of the XSETBV instruction thanks to HyperDbg group members ([link](https://docs.hyperdbg.org/commands/extension-commands/xsetbv))
-- Number of blocked context switches in the '.switch' command ([link](https://docs.hyperdbg.org/commands/meta-commands/.switch))
-- Added support to the step-in (the 't' command) for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/t))
-- Added support to the step-over (the 'p' command) for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/p))
-- Added support to show all registers or a specific register for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/r))
-- Export SDK API for running scripts in the kernel debugger or the user debugger
-- Added support to modify registers or a specific register for the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/r))
+- The **!xsetbv** event command was added for handling the execution of the XSETBV instruction, thanks to HyperDbg group members ([link](https://docs.hyperdbg.org/commands/extension-commands/xsetbv))
+- Display of the number of blocked context switches in the '.switch' command ([link](https://docs.hyperdbg.org/commands/meta-commands/.switch))
+- Added support for step-in (the 't' command) in the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/t))
+- Added support for step-over (the 'p' command) in the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/p))
+- Added support to show all registers or a specific register in the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/r))
+- Exported SDK API for running scripts in either the kernel debugger or the user debugger
+- Added support to modify registers or a specific register in the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/r))
- Added support to evaluate (run) scripts on the target thread in the user debugger ([link](https://docs.hyperdbg.org/commands/debugging-commands/eval))
-- Added indication of a thread running or paused state to the HyperDbg signature in the user debugger ([link](https://docs.hyperdbg.org/using-hyperdbg/prerequisites/signatures))
-- Added support to the '.formats' command for the user debugger ([link](https://docs.hyperdbg.org/commands/meta-commands/.formats))
+- Added an indication of a thread's running or paused state to the HyperDbg signature in the user debugger ([link](https://docs.hyperdbg.org/using-hyperdbg/prerequisites/signatures))
+- Added support for the '.formats' command in the user debugger ([link](https://docs.hyperdbg.org/commands/meta-commands/.formats))
+- Added support for interpreting parameters based on script engine expressions in the user debugger
### Changed
- Non-volatile XMM registers are no longer saved/restored on VM-exit handler ([link](https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions?view=msvc-170))
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/pause.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/pause.cpp
index 33cee8af..5d2246e7 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/pause.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/pause.cpp
@@ -54,9 +54,8 @@ CommandPauseRequest()
}
else if (g_ActiveProcessDebuggingState.IsActive && UdPauseProcess(g_ActiveProcessDebuggingState.ProcessDebuggingToken))
{
- ShowMessages("please keep interacting with the process until all the "
- "threads are intercepted and halted; whenever you execute "
- "the first command, the thread interception will be stopped\n");
+ ShowMessages("please keep interacting with the process until all the threads are intercepted "
+ "and halted; you can run the 'g' command to continue the debuggee\n");
}
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/syscall-sysret.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/syscall-sysret.cpp
index 38d0e2a5..4b3f887b 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/syscall-sysret.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/syscall-sysret.cpp
@@ -167,7 +167,9 @@ CommandSyscallAndSysret(vector CommandTokens, string Command)
//
// It's probably a syscall address
//
- if (!ConvertTokenToUInt64(Section, &SpecialTarget))
+ if (!SymbolConvertNameOrExprToAddress(
+ GetCaseSensitiveStringFromCommandToken(Section),
+ &SpecialTarget))
{
//
// Unknown parameter
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index 0856d3e7..81996516 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -2072,7 +2072,7 @@ InterpretGeneralEventAndActionsFields(
ShowMessages("notice: as you're debugging a user-mode application, "
"this event will only trigger on your current debugging process "
"(pid:%x). If you want the event from the entire system, "
- "add 'pid all' to the event\n",
+ "add 'pid all' to the event\n\n",
g_ActiveProcessDebuggingState.ProcessId);
TempEvent->ProcessId = g_ActiveProcessDebuggingState.ProcessId;
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
index 9b032cc4..27804982 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
@@ -473,9 +473,8 @@ UdAttachToProcess(UINT32 TargetPid,
// it's a .attach command, no need for further action
//
ShowMessages("successfully attached to the target process!\n"
- "please keep interacting with the process until all the "
- "threads are intercepted and halted; whenever you execute "
- "the first command, the thread interception will be stopped\n");
+ "please keep interacting with the process until all the threads are "
+ "intercepted and halted; you can run the 'g' command to continue the debuggee\n");
return TRUE;
}
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index 6e2be2ff..ccece698 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -597,7 +597,7 @@ ScriptEngineFunctionPrint(UINT64 Tag, BOOLEAN ImmediateMessagePassing, UINT64 Va
// Prepare a buffer to bypass allocating a huge stack space for logging
//
char TempBuffer[20] = {0};
- UINT32 TempBufferLen = sprintf(TempBuffer, "%llx", Value);
+ UINT32 TempBufferLen = sprintf(TempBuffer, "%llx\n", Value);
LogSimpleWithTag((UINT32)Tag, ImmediateMessagePassing, TempBuffer, TempBufferLen + 1);
From f3b952805b2193c1a06df10f22a312d3d8da740b Mon Sep 17 00:00:00 2001
From: unknown
Date: Tue, 2 Sep 2025 01:11:03 +0200
Subject: [PATCH 053/323] export SDK API for evaluating expressions based on
the user or the kernel debugger context
---
CHANGELOG.md | 1 +
.../include/SDK/imports/user/HyperDbgLibImports.h | 9 ++++++---
hyperdbg/libhyperdbg/code/export/export.cpp | 15 +++++++++++++++
3 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 83f01d9f..aee3bb6d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,7 @@ New release of the HyperDbg Debugger.
- Added an indication of a thread's running or paused state to the HyperDbg signature in the user debugger ([link](https://docs.hyperdbg.org/using-hyperdbg/prerequisites/signatures))
- Added support for the '.formats' command in the user debugger ([link](https://docs.hyperdbg.org/commands/meta-commands/.formats))
- Added support for interpreting parameters based on script engine expressions in the user debugger
+- Exported SDK API for evaluating expressions based on the context of the kernel debugger or the user debugger
### Changed
- Non-volatile XMM registers are no longer saved/restored on VM-exit handler ([link](https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions?view=msvc-170))
diff --git a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
index 7b8b3881..d00a2d37 100644
--- a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
+++ b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
@@ -286,15 +286,18 @@ hwdbg_script_run_script(const CHAR * script,
const CHAR * hardware_script_file_path_to_save,
UINT32 initial_bram_buffer_size);
-VOID
+IMPORT_EXPORT_LIBHYPERDBG VOID
hwdbg_script_engine_wrapper_test_parser(const CHAR * Expr);
//
-// Run script
+// Run script and evaluate expression
//
-BOOLEAN
+IMPORT_EXPORT_LIBHYPERDBG BOOLEAN
hyperdbg_u_run_script(CHAR * Expr, BOOLEAN ShowErrorMessageIfAny);
+IMPORT_EXPORT_LIBHYPERDBG UINT64
+hyperdbg_u_eval_expression(CHAR * Expr, PBOOLEAN HasError);
+
#ifdef __cplusplus
}
#endif
diff --git a/hyperdbg/libhyperdbg/code/export/export.cpp b/hyperdbg/libhyperdbg/code/export/export.cpp
index 99be9922..d3382bca 100644
--- a/hyperdbg/libhyperdbg/code/export/export.cpp
+++ b/hyperdbg/libhyperdbg/code/export/export.cpp
@@ -813,3 +813,18 @@ hyperdbg_u_run_script(CHAR * Expr, BOOLEAN ShowErrorMessageIfAny)
{
return ScriptEngineExecuteSingleExpression(Expr, ShowErrorMessageIfAny, FALSE);
}
+
+/**
+ * @brief Evaluate expression and return result based on the target
+ * process (user debugger) or debuggee (kernel debugger) context
+ *
+ * @param Expr The expression to evaluate
+ * @param HasError If true, there was an error in evaluation
+ *
+ * @return UINT64 The result of the evaluated expression
+ */
+UINT64
+hyperdbg_u_eval_expression(CHAR * Expr, PBOOLEAN HasError)
+{
+ return ScriptEngineEvalSingleExpression(Expr, HasError);
+}
From 0338f9b301c5d42bbd01af40824c910ce266f463 Mon Sep 17 00:00:00 2001
From: unknown
Date: Sat, 6 Sep 2025 16:44:25 +0200
Subject: [PATCH 054/323] remove IRP sleep for debuggee manadatory bit
operation codes
---
hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 20 +++++++++-------
.../code/debugger/core/steppings.cpp | 24 +++++++------------
.../code/debugger/user-level/ud.cpp | 11 +++++++--
hyperdbg/libhyperdbg/header/ud.h | 8 ++++---
4 files changed, 35 insertions(+), 28 deletions(-)
diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
index e4731568..9f4fe2c0 100644
--- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
+++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
@@ -175,9 +175,9 @@ ReadIrpBasedBuffer()
BOOL Status;
ULONG ReturnedLength;
REGISTER_NOTIFY_BUFFER RegisterEvent;
- UINT32 OperationCode;
DWORD ErrorNum;
HANDLE Handle;
+ UINT32 OperationCode;
RegisterEvent.hEvent = NULL;
RegisterEvent.Type = IRP_BASED;
@@ -240,8 +240,6 @@ ReadIrpBasedBuffer()
//
ZeroMemory(OutputBuffer, UsermodeBufferSize);
- Sleep(DefaultSpeedOfReadingKernelMessages); // we're not trying to eat all of the CPU ;)
-
Status = DeviceIoControl(
Handle, // Handle to device
IOCTL_REGISTER_EVENT, // IO Control Code (IOCTL)
@@ -271,13 +269,19 @@ ReadIrpBasedBuffer()
//
// Compute the received buffer's operation code
//
- OperationCode = 0;
memcpy(&OperationCode, OutputBuffer, sizeof(UINT32));
- /*
- ShowMessages("Returned Length : 0x%x \n", ReturnedLength);
- ShowMessages("Operation Code : 0x%x \n", OperationCode);
- */
+ // ShowMessages("Returned Length : 0x%x \n", ReturnedLength);
+ // ShowMessages("Operation Code : 0x%x \n", OperationCode);
+
+ //
+ // Check if the operation code contains mandatory debuggee bit
+ // If that's the case, we shouldn't wait (sleep) for new messages
+ //
+ if ((OperationCode & OPERATION_MANDATORY_DEBUGGEE_BIT) == 0)
+ {
+ Sleep(DefaultSpeedOfReadingKernelMessages); // we're not trying to eat all of the CPU ;)
+ }
switch (OperationCode)
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/steppings.cpp b/hyperdbg/libhyperdbg/code/debugger/core/steppings.cpp
index 6f672666..b48aa019 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/steppings.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/steppings.cpp
@@ -98,11 +98,9 @@ SteppingRegularStepIn()
//
// It's stepping over user debugger
//
- UdSendStepPacketToDebuggee(g_ActiveProcessDebuggingState.ProcessDebuggingToken,
- g_ActiveProcessDebuggingState.ThreadId,
- RequestFormat);
-
- return TRUE;
+ return UdSendStepPacketToDebuggee(g_ActiveProcessDebuggingState.ProcessDebuggingToken,
+ g_ActiveProcessDebuggingState.ThreadId,
+ RequestFormat);
}
else
{
@@ -137,11 +135,9 @@ SteppingStepOver()
//
// It's stepping over user debugger
//
- UdSendStepPacketToDebuggee(g_ActiveProcessDebuggingState.ProcessDebuggingToken,
- g_ActiveProcessDebuggingState.ThreadId,
- RequestFormat);
-
- return TRUE;
+ return UdSendStepPacketToDebuggee(g_ActiveProcessDebuggingState.ProcessDebuggingToken,
+ g_ActiveProcessDebuggingState.ThreadId,
+ RequestFormat);
}
else
{
@@ -184,11 +180,9 @@ SteppingStepOverForGu(BOOLEAN LastInstruction)
//
// It's stepping over user debugger
//
- UdSendStepPacketToDebuggee(g_ActiveProcessDebuggingState.ProcessDebuggingToken,
- g_ActiveProcessDebuggingState.ThreadId,
- RequestFormat);
-
- return TRUE;
+ return UdSendStepPacketToDebuggee(g_ActiveProcessDebuggingState.ProcessDebuggingToken,
+ g_ActiveProcessDebuggingState.ThreadId,
+ RequestFormat);
}
else
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
index 27804982..5894890f 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
@@ -1239,9 +1239,9 @@ UdSendScriptBufferToProcess(UINT64 ProcessDetailToken,
* @param TargetThreadId
* @param StepType
*
- * @return VOID
+ * @return BOOLEAN
*/
-VOID
+BOOLEAN
UdSendStepPacketToDebuggee(UINT64 ProcessDetailToken,
UINT32 TargetThreadId,
DEBUGGER_REMOTE_STEPPING_REQUEST StepType)
@@ -1291,7 +1291,14 @@ UdSendStepPacketToDebuggee(UINT64 ProcessDetailToken,
// Wait until the result of user-input received
//
DbgWaitForUserResponse(DEBUGGER_SYNCRONIZATION_OBJECT_USER_DEBUGGER_IS_DEBUGGER_RUNNING);
+
+ return TRUE;
}
+
+ //
+ // An error happened
+ //
+ return FALSE;
}
/**
diff --git a/hyperdbg/libhyperdbg/header/ud.h b/hyperdbg/libhyperdbg/header/ud.h
index cf31f1d8..dc4f38cd 100644
--- a/hyperdbg/libhyperdbg/header/ud.h
+++ b/hyperdbg/libhyperdbg/header/ud.h
@@ -51,9 +51,6 @@ UdRemoveActiveDebuggingProcess();
VOID
UdHandleUserDebuggerPausing(PDEBUGGEE_UD_PAUSED_PACKET PausePacket);
-VOID
-UdSendStepPacketToDebuggee(UINT64 ThreadDetailToken, UINT32 TargetThreadId, DEBUGGER_REMOTE_STEPPING_REQUEST StepType);
-
VOID
UdSetActiveDebuggingProcess(UINT64 DebuggingId,
UINT64 Rip,
@@ -63,6 +60,11 @@ UdSetActiveDebuggingProcess(UINT64 DebuggingId,
BOOLEAN IsPaused,
BYTE InstructionBytesOnRip[]);
+BOOLEAN
+UdSendStepPacketToDebuggee(UINT64 ThreadDetailToken,
+ UINT32 TargetThreadId,
+ DEBUGGER_REMOTE_STEPPING_REQUEST StepType);
+
BOOLEAN
UdSetActiveDebuggingThreadByPidOrTid(UINT32 TargetPidOrTid, BOOLEAN IsTid);
From 228ecd91f13d3bc329c95aad22090b2b3b11236c Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 6 Sep 2025 19:25:26 +0200
Subject: [PATCH 055/323] added support for the print and the printf functions
in the user debugger
---
CHANGELOG.md | 1 +
.../hyperkd/code/debugger/user-level/Ud.c | 12 ++++++--
hyperdbg/include/SDK/headers/Constants.h | 28 ++++++++-----------
hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 9 ++++++
hyperdbg/script-eval/code/Functions.c | 5 +---
5 files changed, 31 insertions(+), 24 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index aee3bb6d..a37de41d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,7 @@ New release of the HyperDbg Debugger.
- Added support for the '.formats' command in the user debugger ([link](https://docs.hyperdbg.org/commands/meta-commands/.formats))
- Added support for interpreting parameters based on script engine expressions in the user debugger
- Exported SDK API for evaluating expressions based on the context of the kernel debugger or the user debugger
+- Added a new mechanism for showing the 'printf' and the 'print' function messages in the user debugger ([link](https://docs.hyperdbg.org/commands/scripting-language/functions/exports/printf))([link](https://docs.hyperdbg.org/commands/scripting-language/functions/exports/print))
### Changed
- Non-volatile XMM registers are no longer saved/restored on VM-exit handler ([link](https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions?view=msvc-170))
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
index ed50f048..f3e5015b 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
@@ -414,8 +414,9 @@ UdReadRegisters(PROCESSOR_DEBUGGING_STATE * DbgState,
VOID
UdRunScript(PROCESSOR_DEBUGGING_STATE * DbgState)
{
- PDEBUGGER_UD_COMMAND_PACKET ActionRequest;
- DEBUGGEE_SCRIPT_PACKET * ScriptPacket;
+ PDEBUGGER_UD_COMMAND_PACKET ActionRequest;
+ DEBUGGEE_SCRIPT_PACKET * ScriptPacket;
+ DEBUGGER_TRIGGERED_EVENT_DETAILS EventTriggerDetail = {0};
//
// Recover the action request buffer and optional storage buffer
@@ -427,13 +428,18 @@ UdRunScript(PROCESSOR_DEBUGGING_STATE * DbgState)
// *** Here, we should execute script buffer and put them in the optional storage buffer ***
//
+ //
+ // Set a tag to the script so it shows the message is from script engine
+ //
+ EventTriggerDetail.Tag = OPERATION_LOG_MESSAGE_MANDATORY;
+
//
// Run the script in the target process (thread)
//
if (DebuggerPerformRunScript(DbgState,
NULL,
ScriptPacket,
- &g_EventTriggerDetail))
+ &EventTriggerDetail))
{
//
// Check if we need to format the output or not
diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h
index 6d0b37ad..461412b6 100644
--- a/hyperdbg/include/SDK/headers/Constants.h
+++ b/hyperdbg/include/SDK/headers/Constants.h
@@ -369,23 +369,17 @@ const unsigned char BuildSignature[] = {
#define OPERATION_LOG_NON_IMMEDIATE_MESSAGE 4U
#define OPERATION_LOG_WITH_TAG 5U
-#define OPERATION_COMMAND_FROM_DEBUGGER_CLOSE_AND_UNLOAD_VMM \
- 6U | OPERATION_MANDATORY_DEBUGGEE_BIT
-#define OPERATION_DEBUGGEE_USER_INPUT 7U | OPERATION_MANDATORY_DEBUGGEE_BIT
-#define OPERATION_DEBUGGEE_REGISTER_EVENT 8U | OPERATION_MANDATORY_DEBUGGEE_BIT
-#define OPERATION_DEBUGGEE_ADD_ACTION_TO_EVENT \
- 9 | OPERATION_MANDATORY_DEBUGGEE_BIT
-#define OPERATION_DEBUGGEE_CLEAR_EVENTS 10U | OPERATION_MANDATORY_DEBUGGEE_BIT
-#define OPERATION_DEBUGGEE_CLEAR_EVENTS_WITHOUT_NOTIFYING_DEBUGGER 11U | OPERATION_MANDATORY_DEBUGGEE_BIT
-#define OPERATION_HYPERVISOR_DRIVER_IS_SUCCESSFULLY_LOADED \
- 12U | OPERATION_MANDATORY_DEBUGGEE_BIT
-#define OPERATION_HYPERVISOR_DRIVER_END_OF_IRPS \
- 13U | OPERATION_MANDATORY_DEBUGGEE_BIT
-#define OPERATION_COMMAND_FROM_DEBUGGER_RELOAD_SYMBOL \
- 14U | OPERATION_MANDATORY_DEBUGGEE_BIT
-
-#define OPERATION_NOTIFICATION_FROM_USER_DEBUGGER_PAUSE \
- 15U | OPERATION_MANDATORY_DEBUGGEE_BIT
+#define OPERATION_LOG_MESSAGE_MANDATORY 6U | OPERATION_MANDATORY_DEBUGGEE_BIT
+#define OPERATION_COMMAND_FROM_DEBUGGER_CLOSE_AND_UNLOAD_VMM 7U | OPERATION_MANDATORY_DEBUGGEE_BIT
+#define OPERATION_DEBUGGEE_USER_INPUT 8U | OPERATION_MANDATORY_DEBUGGEE_BIT
+#define OPERATION_DEBUGGEE_REGISTER_EVENT 9U | OPERATION_MANDATORY_DEBUGGEE_BIT
+#define OPERATION_DEBUGGEE_ADD_ACTION_TO_EVENT 10U | OPERATION_MANDATORY_DEBUGGEE_BIT
+#define OPERATION_DEBUGGEE_CLEAR_EVENTS 11U | OPERATION_MANDATORY_DEBUGGEE_BIT
+#define OPERATION_DEBUGGEE_CLEAR_EVENTS_WITHOUT_NOTIFYING_DEBUGGER 12U | OPERATION_MANDATORY_DEBUGGEE_BIT
+#define OPERATION_HYPERVISOR_DRIVER_IS_SUCCESSFULLY_LOADED 13U | OPERATION_MANDATORY_DEBUGGEE_BIT
+#define OPERATION_HYPERVISOR_DRIVER_END_OF_IRPS 14U | OPERATION_MANDATORY_DEBUGGEE_BIT
+#define OPERATION_COMMAND_FROM_DEBUGGER_RELOAD_SYMBOL 15U | OPERATION_MANDATORY_DEBUGGEE_BIT
+#define OPERATION_NOTIFICATION_FROM_USER_DEBUGGER_PAUSE 16U | OPERATION_MANDATORY_DEBUGGEE_BIT
//////////////////////////////////////////////////
// Breakpoints & Debug Breakpoints //
diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
index 9f4fe2c0..c41505eb 100644
--- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
+++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
@@ -299,6 +299,13 @@ ReadIrpBasedBuffer()
ShowMessages("%s", OutputBuffer + sizeof(UINT32));
break;
+
+ case OPERATION_LOG_MESSAGE_MANDATORY:
+
+ ShowMessages("%s", OutputBuffer + sizeof(UINT32));
+
+ break;
+
case OPERATION_LOG_INFO_MESSAGE:
if (g_BreakPrintingOutput)
@@ -313,6 +320,7 @@ ReadIrpBasedBuffer()
ShowMessages("%s", OutputBuffer + sizeof(UINT32));
break;
+
case OPERATION_LOG_ERROR_MESSAGE:
if (g_BreakPrintingOutput)
{
@@ -326,6 +334,7 @@ ReadIrpBasedBuffer()
ShowMessages("%s", OutputBuffer + sizeof(UINT32));
break;
+
case OPERATION_LOG_WARNING_MESSAGE:
if (g_BreakPrintingOutput)
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index ccece698..66f3d057 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -1602,10 +1602,7 @@ ScriptEngineFunctionPrintf(PGUEST_REGS GuestRegs,
CHAR PercentageChar = Format[Position];
- /*
- printf("position = %d is %c%c \n", Position, PercentageChar,
- IndicatorChar1);
- */
+ // printf("position = %d is %c%c \n", Position, PercentageChar, IndicatorChar1);
if (CurrentProcessedPositionFromStartOfFormat != Position)
{
From e837a4526bc3f87423a5d9c8e7d66014bd59f195 Mon Sep 17 00:00:00 2001
From: unknown
Date: Sat, 6 Sep 2025 23:11:08 +0200
Subject: [PATCH 056/323] perform upausing threads before changing MBEC bits
---
.../hyperkd/code/debugger/user-level/Attaching.c | 10 +++++-----
hyperdbg/hyperkd/code/debugger/user-level/Ud.c | 16 ++--------------
hyperdbg/hyperkd/header/debugger/core/State.h | 7 ++++---
3 files changed, 11 insertions(+), 22 deletions(-)
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c b/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c
index a02bec49..1cfddafe 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c
@@ -724,6 +724,11 @@ AttachingConfigureInterceptingThreads(UINT64 ProcessDebuggingToken, BOOLEAN Enab
}
else
{
+ //
+ // Unpause the threads of the target process
+ //
+ ThreadHolderUnpauseAllThreadsInProcess(ProcessDebuggingDetail);
+
//
// Remove the process from the watching list
//
@@ -1099,11 +1104,6 @@ AttachingContinueProcess(PDEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS ContinueReque
//
if (AttachingConfigureInterceptingThreads(ContinueRequest->Token, FALSE))
{
- //
- // Unpause the threads of the target process
- //
- ThreadHolderUnpauseAllThreadsInProcess(ProcessDebuggingDetails);
-
//
// The continuing operation was successful
//
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
index f3e5015b..a58a9866 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
@@ -321,13 +321,7 @@ UdStepInstructions(PROCESSOR_DEBUGGING_STATE * DbgState,
//
// Continue the debuggee process
//
- if (AttachingConfigureInterceptingThreads(ProcessDebuggingDetail->Token, FALSE))
- {
- //
- // Unpause the threads of the target process
- //
- ThreadHolderUnpauseAllThreadsInProcess(ProcessDebuggingDetail);
- }
+ AttachingConfigureInterceptingThreads(ProcessDebuggingDetail->Token, FALSE);
break;
@@ -344,13 +338,7 @@ UdStepInstructions(PROCESSOR_DEBUGGING_STATE * DbgState,
//
// Continue the debuggee process
//
- if (AttachingConfigureInterceptingThreads(ProcessDebuggingDetail->Token, FALSE))
- {
- //
- // Unpause the threads of the target process
- //
- ThreadHolderUnpauseAllThreadsInProcess(ProcessDebuggingDetail);
- }
+ AttachingConfigureInterceptingThreads(ProcessDebuggingDetail->Token, FALSE);
break;
diff --git a/hyperdbg/hyperkd/header/debugger/core/State.h b/hyperdbg/hyperkd/header/debugger/core/State.h
index c5da64bf..6cfa919a 100644
--- a/hyperdbg/hyperkd/header/debugger/core/State.h
+++ b/hyperdbg/hyperkd/header/debugger/core/State.h
@@ -168,16 +168,17 @@ typedef struct _PROCESSOR_DEBUGGING_STATE
UINT32 CoreId;
BOOLEAN ShortCircuitingEvent;
BOOLEAN IgnoreDisasmInNextPacket;
+ BOOLEAN BreakStarterCore;
+ BOOLEAN Test; // Used for testing purposes
+ BOOLEAN DoNotNmiNotifyOtherCoresByThisCore;
+ BOOLEAN TracingMode; // Indicate that the target processor is on the tracing mode or not
PROCESSOR_DEBUGGING_MSR_READ_OR_WRITE MsrState;
DATE_TIME_HOLDER DateTimeHolder;
PDEBUGGEE_BP_DESCRIPTOR SoftwareBreakpointState;
DEBUGGEE_INSTRUMENTATION_STEP_IN_TRACE InstrumentationStepInTrace;
- BOOLEAN DoNotNmiNotifyOtherCoresByThisCore;
- BOOLEAN TracingMode; // Indicate that the target processor is on the tracing mode or not
DEBUGGEE_PROCESS_OR_THREAD_TRACING_DETAILS ThreadOrProcessTracingDetails;
KD_NMI_STATE NmiState;
DEBUGGEE_HALTED_CORE_TASK HaltedCoreTask;
- BOOLEAN BreakStarterCore;
UINT16 InstructionLengthHint;
UINT64 HardwareDebugRegisterForStepping;
UINT64 * ScriptEngineCoreSpecificStackBuffer;
From 2ec5747539b8d7e911cd565b54a0aabd2b131b80 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 7 Sep 2025 00:17:37 +0200
Subject: [PATCH 057/323] remove the requirement for the r in the user debugger
---
CHANGELOG.md | 2 +-
hyperdbg/include/config/Configuration.h | 2 +-
.../debugger/commands/debugging-commands/r.cpp | 18 ------------------
3 files changed, 2 insertions(+), 20 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a37de41d..cd26b42e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## [0.16.0.0] - 2025-XX-XX
+## [0.16.0.0] - 2025-09-08
New release of the HyperDbg Debugger.
### Added
diff --git a/hyperdbg/include/config/Configuration.h b/hyperdbg/include/config/Configuration.h
index fc84cd44..e0e4dec3 100644
--- a/hyperdbg/include/config/Configuration.h
+++ b/hyperdbg/include/config/Configuration.h
@@ -72,7 +72,7 @@
/**
* @brief Activates the user-mode debugger
*/
-#define ActivateUserModeDebugger TRUE
+#define ActivateUserModeDebugger FALSE
/**
* @brief Activates the hyperevade project
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp
index da225f35..ca0aaa73 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/r.cpp
@@ -455,24 +455,6 @@ CommandR(vector CommandTokens, string Command)
std::vector Tmp;
std::string SetRegisterValue;
-//
-// Disable user-mode debugger in this version
-//
-#if ActivateUserModeDebugger == FALSE
-
- if (!g_IsSerialConnectedToRemoteDebugger)
- {
- ShowMessages("the user-mode debugger in VMI Mode is still in the beta version and not stable. "
- "we decided to exclude it from this release and release it in future versions. "
- "if you want to test the user-mode debugger in VMI Mode, you should build "
- "HyperDbg with special instructions. But starting processes is fully supported "
- "in the Debugger Mode.\n"
- "(it's not recommended to use it in VMI Mode yet!)\n");
- return;
- }
-
-#endif // !ActivateUserModeDebugger
-
if (CommandTokens.size() == 1)
{
//
From 3577876cac93118ba84acff0af754b68aded2a8b Mon Sep 17 00:00:00 2001
From: xmaple555
Date: Tue, 14 Oct 2025 00:09:58 +0800
Subject: [PATCH 058/323] fix dd_pa in scrpt-engine
---
hyperdbg/script-engine/code/scanner.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hyperdbg/script-engine/code/scanner.c b/hyperdbg/script-engine/code/scanner.c
index e1e92549..630a6e5a 100644
--- a/hyperdbg/script-engine/code/scanner.c
+++ b/hyperdbg/script-engine/code/scanner.c
@@ -708,7 +708,7 @@ GetToken(char * c, char * str)
AppendByte(Token, *c);
*c = sgetc(str);
- if (IsHex(*c) || *c == '`')
+ if (IsHex(*c) || *c == '`'|| *c == '_')
{
// Nothing
}
From 4233ade7816c0ecec5fdde83adc4e03ad54e944d Mon Sep 17 00:00:00 2001
From: xmaple555
Date: Wed, 15 Oct 2025 08:01:17 +0800
Subject: [PATCH 059/323] update pointer variable type in script engine
---
hyperdbg/script-engine/code/common.c | 21 +-
hyperdbg/script-engine/code/parse-table.c | 1365 +++++++++--------
hyperdbg/script-engine/code/scanner.c | 15 +-
hyperdbg/script-engine/code/script-engine.c | 531 ++++++-
hyperdbg/script-engine/header/common.h | 3 +
hyperdbg/script-engine/header/parse-table.h | 2 +-
hyperdbg/script-engine/header/script-engine.h | 26 +-
hyperdbg/script-engine/header/type.h | 9 +-
hyperdbg/script-engine/python/Grammar.txt | 1 +
9 files changed, 1212 insertions(+), 761 deletions(-)
diff --git a/hyperdbg/script-engine/code/common.c b/hyperdbg/script-engine/code/common.c
index 0bb71e7a..c100fda7 100644
--- a/hyperdbg/script-engine/code/common.c
+++ b/hyperdbg/script-engine/code/common.c
@@ -52,7 +52,7 @@ NewUnknownToken()
Token->Type = UNKNOWN;
Token->Len = 0;
Token->MaxLen = TOKEN_VALUE_MAX_LEN;
- Token->VariableType = 0;
+ Token->VariableType = (unsigned long long)VARIABLE_TYPE_LDOUBLE;
return Token;
}
@@ -81,7 +81,7 @@ NewToken(SCRIPT_ENGINE_TOKEN_TYPE Type, char * Value)
Token->Len = Len;
Token->MaxLen = Len;
Token->Value = (char *)calloc(Token->MaxLen + 1, sizeof(char));
- Token->VariableType = 0;
+ Token->VariableType = (unsigned long long)VARIABLE_TYPE_LDOUBLE;
if (Token->Value == NULL)
{
@@ -513,6 +513,23 @@ Top(PSCRIPT_ENGINE_TOKEN_LIST TokenList)
return *ReadAddr;
}
+/**
+ * @brief
+ *
+ * @param TokenList Index
+ * @return Token
+ */
+PSCRIPT_ENGINE_TOKEN
+TopIndexed(PSCRIPT_ENGINE_TOKEN_LIST TokenList, int Index)
+{
+
+ uintptr_t Head = (uintptr_t)TokenList->Head;
+ uintptr_t Pointer = (uintptr_t)TokenList->Pointer - 1 - Index;
+ PSCRIPT_ENGINE_TOKEN* ReadAddr = (PSCRIPT_ENGINE_TOKEN*)(Head + Pointer * sizeof(PSCRIPT_ENGINE_TOKEN));
+
+ return *ReadAddr;
+}
+
/**
* @brief Checks whether input char belongs to hexadecimal digit-set or not
*
diff --git a/hyperdbg/script-engine/code/parse-table.c b/hyperdbg/script-engine/code/parse-table.c
index d8210e29..91b9792e 100644
--- a/hyperdbg/script-engine/code/parse-table.c
+++ b/hyperdbg/script-engine/code/parse-table.c
@@ -33,6 +33,7 @@ const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "VARIABLE_TYPE1"},
{NON_TERMINAL, "VARIABLE_TYPE2"},
{NON_TERMINAL, "VARIABLE_TYPE2"},
+ {NON_TERMINAL, "VARIABLE_TYPE2"},
{NON_TERMINAL, "VARIABLE_TYPE3"},
{NON_TERMINAL, "VARIABLE_TYPE4"},
{NON_TERMINAL, "VARIABLE_TYPE4"},
@@ -281,6 +282,7 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@RETURN_OF_USER_DEFINED_FUNCTION_WITH_VALUE"}},
{{SEMANTIC_RULE, "@PUSH"},{SCRIPT_VARIABLE_TYPE, "_script_variable_type"}},
{{NON_TERMINAL, "VARIABLE_TYPE1"},{NON_TERMINAL, "VARIABLE_TYPE2"}},
+ {{SPECIAL_TOKEN, "*"},{SEMANTIC_RULE, "@DECLARE_POINTER_TYPE"}},
{{EPSILON, "eps"}},
{{NON_TERMINAL, "VARIABLE_TYPE1"},{NON_TERMINAL, "VARIABLE_TYPE2"},{NON_TERMINAL, "L_VALUE"},{NON_TERMINAL, "VARIABLE_TYPE4"}},
{{SPECIAL_TOKEN, "="},{NON_TERMINAL, "EXPRESSION"},{NON_TERMINAL, "MULTIPLE_ASSIGNMENT"},{SPECIAL_TOKEN, ";"}},
@@ -530,6 +532,7 @@ const unsigned int RhsSize[RULES_COUNT]=
2,
2,
2,
+2,
1,
4,
4,
@@ -748,229 +751,229 @@ const unsigned int RhsSize[RULES_COUNT]=
};
const char* NoneTerminalMap[NONETERMINAL_COUNT]=
{
-"END_OF_IF",
-"E0'",
-"RETURN",
-"WstringNumber",
-"L_VALUE",
-"E5",
-"E2",
-"VARIABLE_TYPE2",
-"EXPRESSION",
-"VA3",
-"MULTIPLE_ASSIGNMENT",
-"E4'",
-"DO_WHILE_STATEMENT",
-"S",
-"WSTRING",
-"FOR_STATEMENT",
-"VARIABLE_TYPE4",
-"E1'",
-"STATEMENT",
-"CALL_FUNC_STATEMENT",
-"VA2",
-"INC_DEC'",
-"ELSE_STATEMENT",
-"E2'",
-"E1",
-"STATEMENT2",
-"ASSIGNMENT_STATEMENT'",
-"E3'",
-"STRING",
-"VARIABLE_TYPE6",
-"MULTIPLE_ASSIGNMENT2",
-"BOOLEAN_EXPRESSION",
-"E12",
-"S2",
"StringNumber",
-"E3",
-"ASSIGNMENT_STATEMENT",
-"ELSIF_STATEMENT",
-"VARIABLE_TYPE5",
-"ELSIF_STATEMENT'",
-"VARIABLE_TYPE1",
+"INC_DEC'",
+"RETURN",
+"VARIABLE_TYPE2",
+"ASSIGNMENT_STATEMENT'",
+"E2'",
+"VA2",
+"WstringNumber",
+"S2",
+"S",
+"EXPRESSION",
"VARIABLE_TYPE3",
-"E4",
-"E5'",
-"INC_DEC",
+"E12",
+"E0'",
+"E2",
+"E4'",
+"STRING",
+"E3'",
+"VARIABLE_TYPE6",
+"FOR_STATEMENT",
+"WSTRING",
+"DO_WHILE_STATEMENT",
+"END_OF_IF",
+"VARIABLE_TYPE4",
+"ELSIF_STATEMENT",
+"E1",
"SIMPLE_ASSIGNMENT",
-"IF_STATEMENT",
+"BOOLEAN_EXPRESSION",
+"E4",
+"INC_DEC",
+"STATEMENT",
+"ELSIF_STATEMENT'",
+"E3",
+"VA",
+"MULTIPLE_ASSIGNMENT",
+"CALL_FUNC_STATEMENT",
+"L_VALUE",
+"ASSIGNMENT_STATEMENT",
"WHILE_STATEMENT",
-"VA"
+"VARIABLE_TYPE1",
+"MULTIPLE_ASSIGNMENT2",
+"E1'",
+"E5",
+"VA3",
+"STATEMENT2",
+"ELSE_STATEMENT",
+"E5'",
+"IF_STATEMENT",
+"VARIABLE_TYPE5"
};
const char* TerminalMap[TERMINAL_COUNT]=
{
-"memcmp",
-"_register",
-"_function_parameter_id",
-"<<=",
-"db",
-"dw",
-"continue",
-"disassemble_len",
-"do",
-"strncmp",
-"--",
-"formats",
-"interlocked_increment",
-"strlen",
-"interlocked_exchange",
-"_hex",
-"event_sc",
-"|=",
-"test_statement",
-"^",
-"disassemble_len32",
-"hi_pa",
-"dq_pa",
-"flush",
-"else",
-"event_trace_step_in",
-"/=",
-"~",
-"low_pa",
-"dd_pa",
-"rdtsc",
-"++",
-"_decimal",
-"break",
-"%=",
-"hi",
-"eb_pa",
-"ed",
-"disassemble_len64",
-"memcpy",
-";",
-"event_inject_error_code",
-"wcscmp",
-"^=",
-"eb",
-"poi",
-"{",
-">>=",
-"not",
-"low",
-"_wstring",
-"-=",
-"_pseudo_register",
-"+",
-"poi_pa",
-"event_disable",
"print",
-"+=",
-"*=",
-"dq",
-"&=",
-"interlocked_compare_exchange",
-"_binary",
-"event_enable",
-"wcslen",
-"_local_id",
-"strcmp",
-",",
-"spinlock_lock_custom_wait",
-"reference",
-"microsleep",
-"return",
-"elsif",
-"eq",
-"_function_id",
-"/",
-"interlocked_decrement",
-"interlocked_exchange_add",
-"ed_pa",
-"event_trace_step_out",
-"if",
-"eq_pa",
-"_script_variable_type",
-"db_pa",
-"$",
-">>",
-"event_clear",
-"event_inject",
-"physical_to_virtual",
-"spinlock_unlock",
-"memcpy_pa",
-"spinlock_lock",
-"event_trace_instrumentation_step",
-"*",
-"&",
-"while",
-"-",
-"}",
-"=",
-"rdtscp",
-"wcsncmp",
-"for",
-"%",
-"_octal",
-"_string",
-"_global_id",
-"virtual_to_physical",
-"<<",
-"dd",
-"event_trace_step",
-"dw_pa",
-"|",
-"neg",
-"printf",
-")",
-"event_trace_instrumentation_step_in",
"pause",
+"*",
+"microsleep",
+"_hex",
+"wcslen",
+"event_sc",
+"interlocked_exchange",
+"poi_pa",
+"_string",
+"interlocked_decrement",
+"dd",
+"/=",
+"(",
+"dd_pa",
+"virtual_to_physical",
+"strcmp",
+"event_trace_instrumentation_step",
+"if",
+"*=",
+"elsif",
+"~",
+"^=",
+",",
+"continue",
+"poi",
+"low_pa",
+"ed_pa",
+"disassemble_len",
+"event_disable",
+">>",
+"_decimal",
+"-",
+"%=",
+"_pseudo_register",
+"event_inject_error_code",
+"++",
+"memcpy_pa",
+"eq_pa",
+"_octal",
+"else",
+"event_trace_step",
+"event_trace_instrumentation_step_in",
"check_address",
-"("
+"physical_to_virtual",
+"dw_pa",
+"eb",
+"_register",
+";",
+"_function_id",
+"event_enable",
+"do",
+"}",
+"formats",
+"not",
+"|",
+"dw",
+"disassemble_len64",
+"wcsncmp",
+"+",
+")",
+"_script_variable_type",
+"_global_id",
+"rdtscp",
+"interlocked_exchange_add",
+"-=",
+"%",
+"event_inject",
+"_binary",
+"=",
+"eq",
+"event_clear",
+"flush",
+"hi_pa",
+"$",
+"neg",
+"_wstring",
+"spinlock_unlock",
+"interlocked_compare_exchange",
+"disassemble_len32",
+"--",
+"interlocked_increment",
+"for",
+"+=",
+"|=",
+"event_trace_step_out",
+"rdtsc",
+"_function_parameter_id",
+"strncmp",
+"reference",
+"low",
+"memcpy",
+"dq_pa",
+"spinlock_lock",
+"_local_id",
+"dq",
+"wcscmp",
+"/",
+">>=",
+"^",
+"event_trace_step_in",
+"db",
+"<<=",
+"&=",
+"{",
+"<<",
+"eb_pa",
+"break",
+"while",
+"db_pa",
+"memcmp",
+"ed",
+"spinlock_lock_custom_wait",
+"hi",
+"return",
+"strlen",
+"printf",
+"&",
+"test_statement"
};
const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]=
{
- {127 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,2147483648 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,2147483648 ,2147483648 ,127 ,127 ,127 ,2147483648 ,2147483648 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,127 ,127 ,2147483648 ,2147483648 ,127 ,2147483648 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,2147483648 ,127 ,2147483648 ,127 ,2147483648 ,127 ,127 ,127 ,2147483648 ,2147483648 ,2147483648 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {28 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,27 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 },
- {244 ,244 ,244 ,2147483648 ,244 ,244 ,2147483648 ,244 ,2147483648 ,244 ,2147483648 ,2147483648 ,244 ,244 ,244 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,244 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,244 ,244 ,244 ,2147483648 ,244 ,2147483648 ,2147483648 ,244 ,244 ,244 ,244 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,244 ,244 ,2147483648 ,2147483648 ,244 ,244 ,245 ,2147483648 ,244 ,244 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,244 ,244 ,2147483648 ,244 ,244 ,244 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,244 ,244 ,2147483648 ,244 ,244 ,244 ,2147483648 ,2147483648 ,244 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,244 ,2147483648 ,244 ,2147483648 ,2147483648 ,244 ,244 ,2147483648 ,2147483648 ,244 ,2147483648 ,244 ,244 ,2147483648 ,244 ,2147483648 ,244 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,244 },
- {2147483648 ,236 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {171 ,171 ,171 ,2147483648 ,171 ,171 ,2147483648 ,171 ,2147483648 ,171 ,2147483648 ,2147483648 ,171 ,171 ,171 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,171 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,171 ,171 ,171 ,2147483648 ,171 ,2147483648 ,2147483648 ,171 ,171 ,171 ,171 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,171 ,171 ,2147483648 ,2147483648 ,171 ,171 ,2147483648 ,2147483648 ,171 ,171 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,171 ,171 ,2147483648 ,171 ,171 ,171 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,171 ,171 ,2147483648 ,171 ,171 ,171 ,2147483648 ,2147483648 ,171 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,171 ,2147483648 ,171 ,2147483648 ,2147483648 ,171 ,171 ,2147483648 ,2147483648 ,171 ,2147483648 ,171 ,171 ,2147483648 ,171 ,2147483648 ,171 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,171 },
- {160 ,160 ,160 ,2147483648 ,160 ,160 ,2147483648 ,160 ,2147483648 ,160 ,2147483648 ,2147483648 ,160 ,160 ,160 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,160 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,160 ,160 ,160 ,2147483648 ,160 ,2147483648 ,2147483648 ,160 ,160 ,160 ,160 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,160 ,160 ,2147483648 ,2147483648 ,160 ,160 ,2147483648 ,2147483648 ,160 ,160 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,160 ,160 ,2147483648 ,160 ,160 ,160 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,160 ,160 ,2147483648 ,160 ,160 ,160 ,2147483648 ,2147483648 ,160 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,160 ,2147483648 ,160 ,2147483648 ,2147483648 ,160 ,160 ,2147483648 ,2147483648 ,160 ,2147483648 ,160 ,160 ,2147483648 ,160 ,2147483648 ,160 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,160 },
- {2147483648 ,31 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {154 ,154 ,154 ,2147483648 ,154 ,154 ,2147483648 ,154 ,2147483648 ,154 ,2147483648 ,2147483648 ,154 ,154 ,154 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,154 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,154 ,154 ,154 ,2147483648 ,154 ,2147483648 ,2147483648 ,154 ,154 ,154 ,154 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,154 ,154 ,2147483648 ,2147483648 ,154 ,154 ,2147483648 ,2147483648 ,154 ,154 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,154 ,154 ,2147483648 ,154 ,154 ,154 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,154 ,154 ,2147483648 ,154 ,154 ,154 ,2147483648 ,2147483648 ,154 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,154 ,2147483648 ,154 ,2147483648 ,2147483648 ,154 ,154 ,2147483648 ,2147483648 ,154 ,2147483648 ,154 ,154 ,2147483648 ,154 ,2147483648 ,154 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,154 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,169 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,1 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,2 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {9 ,7 ,7 ,2147483648 ,9 ,9 ,11 ,9 ,5 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,10 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,7 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,8 ,2147483648 ,9 ,9 ,9 ,9 ,3 ,9 ,12 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,4 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,6 ,2147483648 ,2147483648 ,2147483648 ,7 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 },
- {111 ,2147483648 ,2147483648 ,2147483648 ,76 ,78 ,2147483648 ,85 ,2147483648 ,112 ,2147483648 ,54 ,88 ,109 ,103 ,2147483648 ,61 ,2147483648 ,58 ,2147483648 ,86 ,94 ,99 ,65 ,2147483648 ,67 ,2147483648 ,2147483648 ,95 ,97 ,71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,105 ,100 ,87 ,116 ,2147483648 ,115 ,114 ,2147483648 ,101 ,75 ,2147483648 ,2147483648 ,83 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,56 ,53 ,2147483648 ,2147483648 ,79 ,2147483648 ,108 ,2147483648 ,55 ,113 ,2147483648 ,110 ,2147483648 ,73 ,90 ,62 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,89 ,104 ,106 ,68 ,2147483648 ,107 ,2147483648 ,96 ,2147483648 ,2147483648 ,57 ,74 ,91 ,60 ,117 ,59 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,77 ,66 ,98 ,2147483648 ,80 ,63 ,2147483648 ,70 ,64 ,84 ,2147483648 },
- {239 ,239 ,239 ,2147483648 ,239 ,239 ,2147483648 ,239 ,2147483648 ,239 ,2147483648 ,2147483648 ,239 ,239 ,239 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,239 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,239 ,239 ,239 ,2147483648 ,239 ,2147483648 ,2147483648 ,239 ,239 ,239 ,239 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,239 ,239 ,2147483648 ,2147483648 ,239 ,239 ,2147483648 ,2147483648 ,239 ,239 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,239 ,239 ,2147483648 ,239 ,239 ,239 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,239 ,239 ,2147483648 ,239 ,239 ,239 ,2147483648 ,2147483648 ,239 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,239 ,2147483648 ,239 ,2147483648 ,2147483648 ,239 ,239 ,2147483648 ,2147483648 ,239 ,2147483648 ,239 ,239 ,2147483648 ,239 ,2147483648 ,239 ,2147483648 ,239 ,2147483648 ,238 ,2147483648 ,2147483648 ,239 ,239 },
- {2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,140 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {126 ,126 ,126 ,2147483648 ,126 ,126 ,126 ,126 ,126 ,126 ,2147483648 ,126 ,126 ,126 ,126 ,2147483648 ,126 ,2147483648 ,126 ,2147483648 ,126 ,126 ,126 ,126 ,125 ,126 ,2147483648 ,2147483648 ,126 ,126 ,126 ,2147483648 ,2147483648 ,126 ,2147483648 ,126 ,126 ,126 ,126 ,126 ,2147483648 ,126 ,126 ,2147483648 ,126 ,126 ,126 ,2147483648 ,126 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,126 ,126 ,2147483648 ,2147483648 ,126 ,2147483648 ,126 ,2147483648 ,126 ,126 ,126 ,126 ,2147483648 ,126 ,126 ,126 ,126 ,2147483648 ,126 ,126 ,2147483648 ,126 ,126 ,126 ,126 ,126 ,126 ,126 ,126 ,126 ,2147483648 ,126 ,126 ,126 ,126 ,126 ,126 ,126 ,2147483648 ,2147483648 ,126 ,2147483648 ,126 ,2147483648 ,126 ,126 ,126 ,2147483648 ,2147483648 ,2147483648 ,126 ,126 ,2147483648 ,126 ,126 ,126 ,2147483648 ,126 ,126 ,2147483648 ,126 ,126 ,126 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {157 ,157 ,157 ,2147483648 ,157 ,157 ,2147483648 ,157 ,2147483648 ,157 ,2147483648 ,2147483648 ,157 ,157 ,157 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,157 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,157 ,157 ,157 ,2147483648 ,157 ,2147483648 ,2147483648 ,157 ,157 ,157 ,157 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,157 ,157 ,2147483648 ,2147483648 ,157 ,157 ,2147483648 ,2147483648 ,157 ,157 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,157 ,157 ,2147483648 ,157 ,157 ,157 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,157 ,157 ,2147483648 ,157 ,157 ,157 ,2147483648 ,2147483648 ,157 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,157 ,2147483648 ,157 ,2147483648 ,2147483648 ,157 ,157 ,2147483648 ,2147483648 ,157 ,2147483648 ,157 ,157 ,2147483648 ,157 ,2147483648 ,157 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,157 },
- {22 ,20 ,20 ,2147483648 ,22 ,22 ,24 ,22 ,18 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,2147483648 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,2147483648 ,2147483648 ,23 ,2147483648 ,22 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,2147483648 ,22 ,22 ,2147483648 ,2147483648 ,22 ,22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,22 ,22 ,22 ,2147483648 ,2147483648 ,22 ,2147483648 ,22 ,2147483648 ,22 ,22 ,20 ,22 ,2147483648 ,22 ,22 ,22 ,26 ,2147483648 ,22 ,21 ,2147483648 ,22 ,22 ,22 ,22 ,16 ,22 ,25 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,22 ,22 ,22 ,22 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,22 ,22 ,19 ,2147483648 ,2147483648 ,2147483648 ,20 ,22 ,2147483648 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,2147483648 ,22 ,22 ,22 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,45 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {214 ,220 ,220 ,2147483648 ,179 ,181 ,2147483648 ,188 ,2147483648 ,215 ,2147483648 ,2147483648 ,191 ,212 ,206 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,197 ,202 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,198 ,200 ,176 ,2147483648 ,223 ,2147483648 ,2147483648 ,184 ,208 ,203 ,190 ,2147483648 ,2147483648 ,2147483648 ,217 ,2147483648 ,204 ,178 ,2147483648 ,2147483648 ,186 ,185 ,2147483648 ,2147483648 ,226 ,228 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,211 ,225 ,2147483648 ,216 ,220 ,213 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,205 ,221 ,2147483648 ,192 ,207 ,209 ,2147483648 ,2147483648 ,210 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,231 ,2147483648 ,227 ,2147483648 ,2147483648 ,177 ,218 ,2147483648 ,2147483648 ,224 ,2147483648 ,220 ,195 ,2147483648 ,180 ,2147483648 ,201 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,219 },
- {13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,14 ,2147483648 ,13 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,13 ,13 ,13 ,2147483648 ,2147483648 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 },
- {242 ,242 ,242 ,2147483648 ,242 ,242 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 ,2147483648 ,242 ,242 ,242 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,242 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,242 ,242 ,242 ,2147483648 ,242 ,2147483648 ,2147483648 ,242 ,242 ,242 ,242 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,242 ,242 ,2147483648 ,2147483648 ,242 ,242 ,2147483648 ,2147483648 ,242 ,242 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,242 ,242 ,2147483648 ,242 ,242 ,242 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,242 ,242 ,2147483648 ,242 ,242 ,242 ,2147483648 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,242 ,2147483648 ,242 ,2147483648 ,2147483648 ,242 ,242 ,2147483648 ,2147483648 ,242 ,243 ,242 ,242 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,242 },
- {163 ,163 ,163 ,2147483648 ,163 ,163 ,2147483648 ,163 ,2147483648 ,163 ,2147483648 ,2147483648 ,163 ,163 ,163 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,163 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,163 ,163 ,163 ,2147483648 ,163 ,2147483648 ,2147483648 ,163 ,163 ,163 ,163 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,163 ,163 ,2147483648 ,2147483648 ,163 ,163 ,2147483648 ,2147483648 ,163 ,163 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,163 ,163 ,2147483648 ,163 ,163 ,163 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,163 ,163 ,2147483648 ,163 ,163 ,163 ,2147483648 ,2147483648 ,163 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,163 ,2147483648 ,163 ,2147483648 ,2147483648 ,163 ,163 ,2147483648 ,2147483648 ,163 ,2147483648 ,163 ,163 ,2147483648 ,163 ,2147483648 ,163 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,163 },
- {2147483648 ,39 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {123 ,123 ,123 ,2147483648 ,123 ,123 ,123 ,123 ,123 ,123 ,2147483648 ,123 ,123 ,123 ,123 ,2147483648 ,123 ,2147483648 ,123 ,2147483648 ,123 ,123 ,123 ,123 ,123 ,123 ,2147483648 ,2147483648 ,123 ,123 ,123 ,2147483648 ,2147483648 ,123 ,2147483648 ,123 ,123 ,123 ,123 ,123 ,2147483648 ,123 ,123 ,2147483648 ,123 ,123 ,123 ,2147483648 ,123 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,123 ,123 ,2147483648 ,2147483648 ,123 ,2147483648 ,123 ,2147483648 ,123 ,123 ,123 ,123 ,2147483648 ,123 ,123 ,123 ,123 ,122 ,123 ,123 ,2147483648 ,123 ,123 ,123 ,123 ,123 ,123 ,123 ,123 ,123 ,2147483648 ,123 ,123 ,123 ,123 ,123 ,123 ,123 ,2147483648 ,2147483648 ,123 ,2147483648 ,123 ,2147483648 ,123 ,123 ,123 ,2147483648 ,2147483648 ,2147483648 ,123 ,123 ,2147483648 ,123 ,123 ,123 ,2147483648 ,123 ,123 ,2147483648 ,123 ,123 ,123 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {124 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,2147483648 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,2147483648 ,124 ,124 ,124 ,2147483648 ,2147483648 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,124 ,124 ,2147483648 ,2147483648 ,124 ,2147483648 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,2147483648 ,124 ,2147483648 ,124 ,2147483648 ,124 ,124 ,124 ,2147483648 ,2147483648 ,2147483648 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {167 ,167 ,167 ,2147483648 ,167 ,167 ,2147483648 ,167 ,2147483648 ,167 ,2147483648 ,2147483648 ,167 ,167 ,167 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,167 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,167 ,167 ,167 ,2147483648 ,167 ,2147483648 ,2147483648 ,167 ,167 ,167 ,167 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,167 ,167 ,2147483648 ,2147483648 ,167 ,167 ,2147483648 ,2147483648 ,167 ,167 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,167 ,167 ,2147483648 ,167 ,167 ,167 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,167 ,167 ,2147483648 ,167 ,167 ,167 ,2147483648 ,2147483648 ,167 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,167 ,2147483648 ,167 ,2147483648 ,2147483648 ,167 ,167 ,2147483648 ,2147483648 ,167 ,2147483648 ,167 ,167 ,2147483648 ,167 ,2147483648 ,167 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,167 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,175 ,2147483648 ,175 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,134 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,132 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
+ {2147483648 ,2147483648 ,243 ,2147483648 ,243 ,243 ,2147483648 ,243 ,243 ,244 ,243 ,243 ,2147483648 ,243 ,243 ,243 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,243 ,243 ,243 ,2147483648 ,2147483648 ,243 ,243 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,243 ,243 ,243 ,243 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,243 ,243 ,243 ,243 ,2147483648 ,2147483648 ,243 ,243 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,243 ,2147483648 ,2147483648 ,243 ,2147483648 ,243 ,2147483648 ,2147483648 ,243 ,243 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,243 ,243 ,243 ,243 ,2147483648 ,243 ,2147483648 ,243 ,243 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,243 ,243 ,243 ,2147483648 ,243 ,2147483648 ,243 ,2147483648 ,243 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,139 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,144 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,28 ,27 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,28 ,2147483648 ,28 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,28 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 },
+ {2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,44 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,49 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 },
+ {2147483648 ,2147483648 ,240 ,2147483648 ,240 ,240 ,2147483648 ,240 ,240 ,2147483648 ,240 ,240 ,2147483648 ,240 ,240 ,240 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,240 ,240 ,240 ,240 ,2147483648 ,2147483648 ,240 ,240 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,240 ,240 ,2147483648 ,2147483648 ,2147483648 ,240 ,240 ,240 ,240 ,240 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,240 ,240 ,240 ,240 ,239 ,2147483648 ,240 ,240 ,240 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,240 ,2147483648 ,2147483648 ,240 ,2147483648 ,240 ,2147483648 ,2147483648 ,240 ,240 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,240 ,240 ,240 ,240 ,2147483648 ,240 ,2147483648 ,240 ,240 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,240 ,240 ,240 ,2147483648 ,240 ,2147483648 ,240 ,2147483648 ,240 ,2147483648 },
+ {2147483648 ,2147483648 ,245 ,2147483648 ,245 ,245 ,2147483648 ,245 ,245 ,2147483648 ,245 ,245 ,2147483648 ,245 ,245 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,245 ,245 ,2147483648 ,2147483648 ,245 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,245 ,245 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,245 ,245 ,245 ,2147483648 ,2147483648 ,245 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,246 ,2147483648 ,245 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,245 ,245 ,245 ,2147483648 ,245 ,2147483648 ,245 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,245 ,245 ,245 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 },
+ {13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,15 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,2147483648 ,13 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 },
+ {0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,1 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 },
+ {2147483648 ,2147483648 ,155 ,2147483648 ,155 ,155 ,2147483648 ,155 ,155 ,2147483648 ,155 ,155 ,2147483648 ,155 ,155 ,155 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,155 ,155 ,155 ,155 ,2147483648 ,2147483648 ,155 ,155 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,155 ,155 ,2147483648 ,2147483648 ,2147483648 ,155 ,155 ,155 ,155 ,155 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,155 ,155 ,155 ,155 ,2147483648 ,2147483648 ,155 ,155 ,155 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,155 ,2147483648 ,2147483648 ,155 ,2147483648 ,155 ,2147483648 ,2147483648 ,155 ,155 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,155 ,155 ,155 ,155 ,2147483648 ,155 ,2147483648 ,155 ,155 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,155 ,155 ,155 ,2147483648 ,155 ,2147483648 ,155 ,2147483648 ,155 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,231 ,2147483648 ,223 ,217 ,2147483648 ,207 ,197 ,2147483648 ,193 ,181 ,2147483648 ,220 ,201 ,196 ,214 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,179 ,199 ,210 ,189 ,2147483648 ,2147483648 ,224 ,228 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,211 ,225 ,2147483648 ,2147483648 ,2147483648 ,188 ,195 ,202 ,205 ,221 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,182 ,191 ,219 ,229 ,2147483648 ,2147483648 ,221 ,178 ,208 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,206 ,2147483648 ,2147483648 ,198 ,2147483648 ,184 ,2147483648 ,2147483648 ,212 ,190 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,221 ,216 ,194 ,186 ,2147483648 ,203 ,2147483648 ,221 ,183 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,209 ,2147483648 ,2147483648 ,200 ,215 ,204 ,2147483648 ,185 ,2147483648 ,213 ,2147483648 ,232 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,161 ,2147483648 ,161 ,161 ,2147483648 ,161 ,161 ,2147483648 ,161 ,161 ,2147483648 ,161 ,161 ,161 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,161 ,161 ,161 ,161 ,2147483648 ,2147483648 ,161 ,161 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,161 ,161 ,2147483648 ,2147483648 ,2147483648 ,161 ,161 ,161 ,161 ,161 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,161 ,161 ,161 ,161 ,2147483648 ,2147483648 ,161 ,161 ,161 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,161 ,2147483648 ,2147483648 ,161 ,2147483648 ,161 ,2147483648 ,2147483648 ,161 ,161 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,161 ,161 ,161 ,161 ,2147483648 ,161 ,2147483648 ,161 ,161 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,161 ,161 ,161 ,2147483648 ,161 ,2147483648 ,161 ,2147483648 ,161 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,169 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {128 ,128 ,2147483648 ,128 ,2147483648 ,128 ,128 ,128 ,128 ,2147483648 ,128 ,128 ,2147483648 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,128 ,128 ,2147483648 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,128 ,128 ,128 ,2147483648 ,2147483648 ,128 ,128 ,128 ,128 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,128 ,128 ,128 ,2147483648 ,128 ,128 ,2147483648 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,2147483648 ,2147483648 ,128 ,128 ,2147483648 ,2147483648 ,128 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,128 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {124 ,124 ,2147483648 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,2147483648 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,2147483648 ,2147483648 ,124 ,124 ,124 ,124 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,2147483648 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,2147483648 ,2147483648 ,124 ,124 ,2147483648 ,2147483648 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,124 },
+ {2147483648 ,2147483648 ,158 ,2147483648 ,158 ,158 ,2147483648 ,158 ,158 ,2147483648 ,158 ,158 ,2147483648 ,158 ,158 ,158 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,158 ,158 ,158 ,158 ,2147483648 ,2147483648 ,158 ,158 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,158 ,158 ,2147483648 ,2147483648 ,2147483648 ,158 ,158 ,158 ,158 ,158 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,158 ,158 ,158 ,158 ,2147483648 ,2147483648 ,158 ,158 ,158 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,158 ,2147483648 ,2147483648 ,158 ,2147483648 ,158 ,2147483648 ,2147483648 ,158 ,158 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,158 ,158 ,158 ,158 ,2147483648 ,158 ,2147483648 ,158 ,158 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,158 ,158 ,158 ,2147483648 ,158 ,2147483648 ,158 ,2147483648 ,158 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,132 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,168 ,2147483648 ,168 ,168 ,2147483648 ,168 ,168 ,2147483648 ,168 ,168 ,2147483648 ,168 ,168 ,168 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,168 ,168 ,168 ,168 ,2147483648 ,2147483648 ,168 ,168 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,168 ,168 ,2147483648 ,2147483648 ,2147483648 ,168 ,168 ,168 ,168 ,168 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,168 ,168 ,168 ,168 ,2147483648 ,2147483648 ,168 ,168 ,168 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,168 ,2147483648 ,2147483648 ,168 ,2147483648 ,168 ,2147483648 ,2147483648 ,168 ,168 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,168 ,168 ,168 ,168 ,2147483648 ,168 ,2147483648 ,168 ,168 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,168 ,168 ,168 ,2147483648 ,168 ,2147483648 ,168 ,2147483648 ,168 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,8 ,9 ,5 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,12 ,7 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,6 ,2147483648 ,2147483648 ,9 ,9 ,7 ,9 ,9 ,9 ,9 ,9 ,9 ,7 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,10 ,4 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 },
+ {125 ,125 ,2147483648 ,125 ,2147483648 ,125 ,125 ,125 ,125 ,2147483648 ,125 ,125 ,2147483648 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,125 ,125 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,125 ,125 ,125 ,2147483648 ,2147483648 ,125 ,125 ,125 ,125 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,125 ,125 ,125 ,2147483648 ,125 ,125 ,2147483648 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,2147483648 ,2147483648 ,125 ,125 ,2147483648 ,2147483648 ,125 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,125 },
+ {2147483648 ,2147483648 ,164 ,2147483648 ,164 ,164 ,2147483648 ,164 ,164 ,2147483648 ,164 ,164 ,2147483648 ,164 ,164 ,164 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,164 ,164 ,164 ,164 ,2147483648 ,2147483648 ,164 ,164 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,164 ,164 ,2147483648 ,2147483648 ,2147483648 ,164 ,164 ,164 ,164 ,164 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,164 ,164 ,164 ,164 ,2147483648 ,2147483648 ,164 ,164 ,164 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,164 ,2147483648 ,2147483648 ,164 ,2147483648 ,164 ,2147483648 ,2147483648 ,164 ,164 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,164 ,164 ,164 ,164 ,2147483648 ,164 ,2147483648 ,164 ,164 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,164 ,164 ,164 ,2147483648 ,164 ,2147483648 ,164 ,2147483648 ,164 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {54 ,65 ,2147483648 ,63 ,2147483648 ,114 ,62 ,104 ,94 ,2147483648 ,90 ,78 ,2147483648 ,2147483648 ,98 ,93 ,111 ,70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,96 ,107 ,86 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,118 ,108 ,2147483648 ,2147483648 ,67 ,71 ,85 ,92 ,99 ,102 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,55 ,84 ,2147483648 ,79 ,88 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,73 ,105 ,2147483648 ,2147483648 ,75 ,2147483648 ,2147483648 ,103 ,58 ,66 ,95 ,2147483648 ,81 ,2147483648 ,61 ,109 ,87 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,69 ,72 ,2147483648 ,113 ,91 ,83 ,117 ,100 ,60 ,2147483648 ,80 ,115 ,2147483648 ,2147483648 ,2147483648 ,68 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,97 ,112 ,101 ,74 ,82 ,2147483648 ,110 ,64 ,2147483648 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,172 ,2147483648 ,172 ,172 ,2147483648 ,172 ,172 ,2147483648 ,172 ,172 ,2147483648 ,172 ,172 ,172 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,172 ,172 ,172 ,172 ,2147483648 ,2147483648 ,172 ,172 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,172 ,172 ,2147483648 ,2147483648 ,2147483648 ,172 ,172 ,172 ,172 ,172 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,172 ,172 ,172 ,172 ,2147483648 ,2147483648 ,172 ,172 ,172 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,172 ,2147483648 ,2147483648 ,172 ,2147483648 ,172 ,2147483648 ,2147483648 ,172 ,172 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,172 ,172 ,172 ,172 ,2147483648 ,172 ,2147483648 ,172 ,172 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,172 ,172 ,172 ,2147483648 ,172 ,2147483648 ,172 ,2147483648 ,172 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {22 ,22 ,2147483648 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,22 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,24 ,22 ,22 ,22 ,22 ,22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,22 ,2147483648 ,22 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,22 ,22 ,22 ,20 ,2147483648 ,21 ,22 ,18 ,2147483648 ,22 ,22 ,2147483648 ,22 ,22 ,22 ,2147483648 ,2147483648 ,25 ,20 ,22 ,22 ,2147483648 ,2147483648 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,2147483648 ,22 ,22 ,22 ,2147483648 ,22 ,19 ,2147483648 ,2147483648 ,22 ,22 ,20 ,22 ,22 ,22 ,22 ,22 ,22 ,20 ,22 ,22 ,2147483648 ,2147483648 ,2147483648 ,22 ,22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,22 ,23 ,17 ,22 ,22 ,22 ,22 ,22 ,26 ,22 ,22 ,2147483648 ,22 },
+ {127 ,127 ,2147483648 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,2147483648 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,127 ,127 ,2147483648 ,126 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,2147483648 ,2147483648 ,127 ,127 ,127 ,127 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,2147483648 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,2147483648 ,2147483648 ,127 ,127 ,2147483648 ,2147483648 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,127 },
+ {2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
};
const char* KeywordList[]= {
"print",
@@ -1844,111 +1847,111 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
};
const char* LalrNoneTerminalMap[NONETERMINAL_COUNT]=
{
-"EXP",
+"StringNumber",
+"VA2",
+"E13",
+"E10",
"WstringNumber",
+"S",
+"B3",
+"CMP",
+"E12",
+"STRING",
+"WSTRING",
+"B2",
+"B1",
+"E4",
+"B6",
+"EXP",
+"BE",
+"E3",
"E5",
"VA3",
-"B2",
-"CMP",
-"BE",
-"S",
-"WSTRING",
"B5",
-"VA2",
-"E10",
-"STRING",
-"E12",
-"B4",
-"B1",
-"E13",
-"B6",
-"StringNumber",
-"E3",
-"B3",
-"E4"
+"B4"
};
const char* LalrTerminalMap[TERMINAL_COUNT]=
{
">>",
-"low_pa",
-"dd_pa",
-"_string",
-"memcmp",
-"physical_to_virtual",
-"_register",
-"_function_parameter_id",
-"db",
-"dw",
-"&&",
-"dq",
-"<",
-"_decimal",
-"disassemble_len",
-"hi",
-"eb_pa",
-"*",
-"interlocked_compare_exchange",
-"_binary",
-"&",
-"wcslen",
-"ed",
-"_local_id",
-"disassemble_len64",
-"strcmp",
"strncmp",
-">",
-"-",
-",",
-"wcscmp",
-"reference",
-"eb",
"==",
-"poi",
-"_wstring",
-"wcsncmp",
-"%",
-"interlocked_increment",
-"strlen",
-"eq",
-"_global_id",
-"virtual_to_physical",
-"interlocked_exchange",
-"not",
-"_hex",
-"_octal",
-"<<",
-"||",
-"/",
-"_function_id",
+"_decimal",
+"reference",
+">",
+"*",
+"-",
"low",
-">=",
-"interlocked_decrement",
-"dd",
-"dw_pa",
-"check_address",
-"|",
-"interlocked_exchange_add",
-"neg",
-"^",
-"disassemble_len32",
-"hi_pa",
-")",
-"+",
-"_pseudo_register",
+"_hex",
+"_global_id",
+"wcslen",
+"wcsncmp",
"<=",
"dq_pa",
+"_function_parameter_id",
+"interlocked_exchange",
+"_local_id",
+"dq",
+"interlocked_exchange_add",
+"_pseudo_register",
"poi_pa",
-"ed_pa",
+"_string",
+"interlocked_decrement",
+"/",
+"%",
+"^",
+"wcscmp",
+"dd",
"eq_pa",
-"!=",
-"db_pa",
+"db",
+"(",
+"_octal",
+"dd_pa",
+"_binary",
+"eq",
+">=",
+"virtual_to_physical",
+"strcmp",
+"hi_pa",
+"<<",
+"<",
+"eb_pa",
+"check_address",
"$",
+"db_pa",
+"neg",
+"_wstring",
+"physical_to_virtual",
+"dw_pa",
+"eb",
+"_register",
+"memcmp",
"~",
-"("
+"ed",
+"_function_id",
+"not",
+",",
+"interlocked_compare_exchange",
+"|",
+"!=",
+"poi",
+"hi",
+"disassemble_len32",
+"strlen",
+"low_pa",
+"dw",
+"||",
+"interlocked_increment",
+"disassemble_len64",
+"ed_pa",
+"&",
+"&&",
+"+",
+"disassemble_len",
+")"
};
const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{
- {10 ,2147483648 ,13 ,2147483648 ,4 ,9 ,2 ,1 ,2147483648 ,7 ,2147483648 ,14 ,2147483648 ,15 ,6 ,3 ,16 ,8 ,2147483648 ,11 ,5 ,12 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,1 ,5 ,9 ,15 ,2147483648 ,2147483648 ,4 ,3 ,12 ,8 ,10 ,2 ,11 ,13 ,2147483648 ,7 ,6 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -1969,9 +1972,11 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,5 ,9 ,15 ,2147483648 ,2147483648 ,4 ,3 ,12 ,8 ,10 ,97 ,11 ,13 ,2147483648 ,7 ,6 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -1985,7 +1990,6 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -1993,18 +1997,17 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {10 ,2147483648 ,13 ,2147483648 ,4 ,9 ,117 ,2147483648 ,2147483648 ,7 ,2147483648 ,14 ,2147483648 ,15 ,6 ,3 ,16 ,8 ,2147483648 ,11 ,5 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2012,7 +2015,7 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2022,72 +2025,72 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {10 ,2147483648 ,13 ,2147483648 ,140 ,9 ,2147483648 ,2147483648 ,2147483648 ,7 ,2147483648 ,14 ,2147483648 ,15 ,6 ,2147483648 ,16 ,8 ,2147483648 ,11 ,5 ,12 },
- {10 ,2147483648 ,13 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,7 ,2147483648 ,14 ,2147483648 ,15 ,6 ,2147483648 ,16 ,8 ,2147483648 ,11 ,141 ,12 },
- {10 ,2147483648 ,13 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,7 ,2147483648 ,14 ,2147483648 ,15 ,142 ,2147483648 ,16 ,8 ,2147483648 ,11 ,2147483648 ,12 },
- {10 ,2147483648 ,13 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,8 ,2147483648 ,11 ,2147483648 ,12 },
- {10 ,2147483648 ,13 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,144 ,2147483648 ,11 ,2147483648 ,12 },
- {145 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {146 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {147 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {148 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {149 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {150 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 },
- {2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 },
- {2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {158 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {160 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {161 ,163 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {165 ,166 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {167 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,5 ,9 ,15 ,2147483648 ,2147483648 ,140 ,2147483648 ,12 ,8 ,10 ,2147483648 ,11 ,13 ,2147483648 ,7 ,6 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,141 ,9 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,8 ,10 ,2147483648 ,11 ,13 ,2147483648 ,7 ,6 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,9 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,8 ,10 ,2147483648 ,11 ,13 ,2147483648 ,7 ,142 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,9 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,8 ,10 ,2147483648 ,11 ,13 ,2147483648 ,143 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,9 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,144 ,10 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,145 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,146 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,147 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,148 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,149 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,150 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,159 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,158 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,160 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,163 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,162 ,2147483648 ,2147483648 ,12 ,2147483648 ,161 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,166 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,162 ,2147483648 ,2147483648 ,12 ,2147483648 ,165 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {168 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {169 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {170 ,171 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {172 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {173 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {174 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {175 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {176 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {177 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {178 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {179 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {180 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {181 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {182 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {183 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {184 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {185 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {186 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,187 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,188 ,11 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {191 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {186 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,187 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,192 ,11 ,2147483648 ,12 },
- {193 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,168 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,169 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,170 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,171 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,172 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,173 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,174 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,175 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {178 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,176 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,180 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,181 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,182 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,183 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,184 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,186 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,162 ,2147483648 ,2147483648 ,12 ,2147483648 ,185 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,187 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,188 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,189 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,190 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,191 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,192 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,193 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {194 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,176 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,195 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,196 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {194 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {195 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {196 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {186 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,187 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,197 ,11 ,2147483648 ,12 },
- {198 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {199 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {200 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {201 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {202 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,197 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,198 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,199 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,200 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,201 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {203 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {204 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {205 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {206 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {207 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {208 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {209 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,187 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,210 ,11 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,202 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,203 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {204 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,176 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,205 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,206 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {208 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,207 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,209 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,210 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2106,7 +2109,7 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,211 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,211 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2160,53 +2163,53 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {258 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,258 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,259 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,260 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,162 ,2147483648 ,2147483648 ,12 ,2147483648 ,161 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {165 ,259 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {260 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {261 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {165 ,262 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {261 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,176 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {263 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,262 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {264 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,263 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,264 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,265 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,162 ,2147483648 ,2147483648 ,12 ,2147483648 ,161 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,266 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {265 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {186 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,187 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,266 ,11 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {186 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,187 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,267 ,11 ,2147483648 ,12 },
- {268 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {269 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,267 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {268 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,176 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {186 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,187 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,270 ,11 ,2147483648 ,12 },
- {271 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,269 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {272 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
- {273 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,270 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {271 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,176 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,272 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,273 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2223,20 +2226,20 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {290 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,290 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,291 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {291 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,292 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {292 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,293 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {293 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,11 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2249,304 +2252,304 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
};
const int LalrActionTable[LALR_STATE_COUNT][LALR_TERMINAL_COUNT]=
{
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,-13 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 },
- {85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,86 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 },
- {-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,88 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,87 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 },
- {-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,89 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 },
- {-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 },
- {-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,2147483648 ,60 ,24 ,2147483648 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,2147483648 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,2147483648 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,2147483648 ,45 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 },
- {-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 },
- {-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,2147483648 ,60 ,24 ,2147483648 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,2147483648 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,2147483648 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,2147483648 ,45 },
- {-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 },
- {-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 },
- {-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,2147483648 ,60 ,24 ,2147483648 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,2147483648 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,2147483648 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,2147483648 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,2147483648 ,60 ,24 ,2147483648 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,2147483648 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,2147483648 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,2147483648 ,45 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 },
- {-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 },
- {-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,2147483648 ,60 ,24 ,2147483648 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,2147483648 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,2147483648 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,2147483648 ,45 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 },
- {-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 },
- {-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,-94 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,164 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,164 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,164 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,189 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,189 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 },
- {-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,189 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,189 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 },
- {-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,88 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,87 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 },
- {-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,88 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,87 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 },
- {-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,89 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 },
- {-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,89 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 },
- {-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 },
- {-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 },
- {-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,213 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,214 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,215 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,216 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,217 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 },
- {-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 },
- {-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 },
- {-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,164 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 },
- {-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,164 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 },
- {-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 },
- {-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 },
- {-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 },
- {-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 },
- {-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 },
- {-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 },
- {-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 },
- {-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,189 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,189 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,189 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 },
- {-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 },
- {-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 },
- {-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 },
- {-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 },
- {-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 },
- {-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 },
- {-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 },
- {-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,278 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,280 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,282 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,286 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,289 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 },
- {-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 },
- {-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 },
- {-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 },
- {-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 },
- {-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 },
- {-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 },
- {-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 },
- {2147483648 ,39 ,28 ,2147483648 ,49 ,36 ,23 ,41 ,67 ,27 ,2147483648 ,31 ,2147483648 ,47 ,34 ,22 ,55 ,52 ,60 ,24 ,51 ,18 ,33 ,69 ,53 ,44 ,57 ,2147483648 ,64 ,2147483648 ,26 ,68 ,58 ,2147483648 ,25 ,2147483648 ,19 ,2147483648 ,65 ,73 ,43 ,54 ,29 ,35 ,59 ,62 ,38 ,2147483648 ,2147483648 ,2147483648 ,48 ,17 ,2147483648 ,42 ,70 ,63 ,40 ,2147483648 ,20 ,66 ,2147483648 ,71 ,30 ,2147483648 ,37 ,72 ,2147483648 ,56 ,32 ,50 ,61 ,2147483648 ,46 ,2147483648 ,21 ,45 },
- {-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 },
- {-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 },
- {-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 },
- {-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 }
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,75 ,2147483648 ,2147483648 ,-4 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,78 ,-10 ,2147483648 ,2147483648 ,-10 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,-12 ,-12 ,2147483648 ,2147483648 ,-12 },
+ {2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,-13 ,-13 ,2147483648 ,2147483648 ,-13 },
+ {2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,-20 },
+ {85 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,86 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,-21 },
+ {-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,87 ,2147483648 ,-24 },
+ {-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,91 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,90 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,-27 },
+ {-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,-31 },
+ {-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,-32 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,-88 },
+ {-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,-85 },
+ {-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,-86 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,2147483648 ,2147483648 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,2147483648 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,2147483648 ,2147483648 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,2147483648 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,-91 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,-83 },
+ {-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-87 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,-89 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,2147483648 ,2147483648 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,2147483648 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,2147483648 ,2147483648 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,2147483648 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,-84 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,-90 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,2147483648 ,2147483648 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,2147483648 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,-94 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,164 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,164 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,-37 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 },
+ {-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,-34 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,164 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,-36 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,-33 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,-35 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,75 ,2147483648 ,2147483648 ,-3 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,78 ,-9 ,2147483648 ,2147483648 ,-9 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,-11 ,-11 ,2147483648 ,2147483648 ,-11 },
+ {2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,-16 },
+ {2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,-18 },
+ {2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,-14 },
+ {2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,-19 },
+ {2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,-15 },
+ {2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,-17 },
+ {-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,87 ,2147483648 ,-22 },
+ {-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,87 ,2147483648 ,-23 },
+ {-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,91 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,90 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,-25 },
+ {-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,91 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,90 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,-26 },
+ {-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,-28 },
+ {-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,-29 },
+ {-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,-30 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,213 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,214 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,215 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,216 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,217 },
+ {-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,-82 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,218 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,220 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,-92 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,164 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,-49 },
+ {-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,-79 },
+ {-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,-44 },
+ {-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,-57 },
+ {-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,-47 },
+ {-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,-53 },
+ {-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,-39 },
+ {-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,-58 },
+ {-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,-55 },
+ {-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,-43 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,-40 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,-46 },
+ {-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,-45 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,164 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,-51 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,-52 },
+ {-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,-42 },
+ {-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,-56 },
+ {-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,-62 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,-59 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,-63 },
+ {-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,-60 },
+ {-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,-38 },
+ {-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,-41 },
+ {-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,-61 },
+ {-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,-50 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,-54 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,-48 },
+ {-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,-75 },
+ {-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,-64 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,278 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,279 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,280 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,281 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,282 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,286 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,289 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 },
+ {-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,-73 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,-72 },
+ {-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,-66 },
+ {-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,-70 },
+ {-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,-80 },
+ {-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,-71 },
+ {-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,-65 },
+ {-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,-76 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,-68 },
+ {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
+ {-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,-67 },
+ {-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,-69 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 },
+ {-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,-81 },
+ {-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,-77 },
+ {-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,-74 },
+ {-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,-78 }
};
const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{
diff --git a/hyperdbg/script-engine/code/scanner.c b/hyperdbg/script-engine/code/scanner.c
index 630a6e5a..0fee92ca 100644
--- a/hyperdbg/script-engine/code/scanner.c
+++ b/hyperdbg/script-engine/code/scanner.c
@@ -508,7 +508,8 @@ GetToken(char * c, char * str)
{
if (GetGlobalIdentifierVal(Token) != -1)
{
- Token->Type = GLOBAL_ID;
+ Token->Type = GLOBAL_ID;
+ Token->VariableType = GetGlobalIdentifierVariableType(Token);
}
else
{
@@ -708,7 +709,7 @@ GetToken(char * c, char * str)
AppendByte(Token, *c);
*c = sgetc(str);
- if (IsHex(*c) || *c == '`'|| *c == '_')
+ if (IsHex(*c) || *c == '`' || *c == '_')
{
// Nothing
}
@@ -779,7 +780,8 @@ GetToken(char * c, char * str)
}
else if (GetLocalIdentifierVal(Token) != -1)
{
- Token->Type = LOCAL_ID;
+ Token->Type = LOCAL_ID;
+ Token->VariableType = GetLocalIdentifierVariableType(Token);
}
else
{
@@ -841,12 +843,14 @@ GetToken(char * c, char * str)
}
else if (GetLocalIdentifierVal(Token) != -1)
{
- Token->Type = LOCAL_ID;
+ Token->Type = LOCAL_ID;
+ Token->VariableType = GetLocalIdentifierVariableType(Token);
}
else
{
Token->Type = LOCAL_UNRESOLVED_ID;
}
+ Token->VariableType;
}
}
}
@@ -914,7 +918,8 @@ GetToken(char * c, char * str)
}
else if (GetLocalIdentifierVal(Token) != -1)
{
- Token->Type = LOCAL_ID;
+ Token->Type = LOCAL_ID;
+ Token->VariableType = GetLocalIdentifierVariableType(Token);
}
else
{
diff --git a/hyperdbg/script-engine/code/script-engine.c b/hyperdbg/script-engine/code/script-engine.c
index edd0d5cf..245a6337 100644
--- a/hyperdbg/script-engine/code/script-engine.c
+++ b/hyperdbg/script-engine/code/script-engine.c
@@ -14,7 +14,7 @@
// #define _SCRIPT_ENGINE_LALR_DBG_EN
// #define _SCRIPT_ENGINE_LL1_DBG_EN
-// #define _SCRIPT_ENGINE_CODEGEN_DBG_EN
+#define _SCRIPT_ENGINE_CODEGEN_DBG_EN
//
// Global Variables
@@ -640,12 +640,13 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
PSCRIPT_ENGINE_TOKEN Op2 = NULL;
PSCRIPT_ENGINE_TOKEN Temp = NULL;
- PSYMBOL OperatorSymbol = NULL;
- PSYMBOL Op0Symbol = NULL;
- PSYMBOL Op1Symbol = NULL;
- PSYMBOL Op2Symbol = NULL;
- PSYMBOL TempSymbol = NULL;
- VARIABLE_TYPE * VariableType = NULL;
+ PSYMBOL OperatorSymbol = NULL;
+ PSYMBOL Op0Symbol = NULL;
+ PSYMBOL Op1Symbol = NULL;
+ PSYMBOL Op2Symbol = NULL;
+ PSYMBOL TempSymbol = NULL;
+ VARIABLE_TYPE * VariableType = NULL;
+ VARIABLE_TYPE * PointerVariableType = NULL;
//
// It is in user-defined function if CurrentFunctionSymbol is not null
@@ -1098,9 +1099,12 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
}
else if (!strcmp(Operator->Value, "@MULTIPLE_ASSIGNMENT"))
{
- PSYMBOL Symbol = NewSymbol();
- Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
- Symbol->Value = FUNC_MOV;
+ size_t Op1Capacity = 8;
+ size_t Op1Count = 0;
+ PSCRIPT_ENGINE_TOKEN * Op1Array = (PSCRIPT_ENGINE_TOKEN *)malloc(sizeof(PSCRIPT_ENGINE_TOKEN) * Op1Capacity);
+ PSYMBOL Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_MOV;
Op0 = Pop(MatchedStack);
Op0Symbol = ToSymbol(Op0, Error);
@@ -1108,6 +1112,14 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
for (int i = MatchedStack->Pointer; i > 0; i--)
{
Op1 = Top(MatchedStack);
+
+ if (Op1Count >= Op1Capacity)
+ {
+ Op1Capacity *= 2;
+ Op1Array = (PSCRIPT_ENGINE_TOKEN *)realloc(Op1Array, sizeof(PSCRIPT_ENGINE_TOKEN) * Op1Capacity);
+ }
+ Op1Array[Op1Count++] = Op1;
+
if (Op1->Type == TEMP || Op1->Type == HEX || Op1->Type == OCTAL || Op1->Type == BINARY || Op1->Type == PSEUDO_REGISTER)
{
*Error = SCRIPT_ENGINE_ERROR_SYNTAX;
@@ -1176,7 +1188,20 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
break;
}
- // Op1Symbol->VariableType = (unsigned long long)VariableType;
+ for (int i = 0; i < Op1Count; i++)
+ {
+ Op1 = Op1Array[i];
+ if (Op1->Type == LOCAL_UNRESOLVED_ID || Op1->Type == LOCAL_ID)
+ {
+ SetLocalIdentifierVariableType(Op1, (unsigned long long)VariableType);
+ }
+ else if (Op1->Type == GLOBAL_UNRESOLVED_ID || Op1->Type == GLOBAL_ID)
+ {
+ SetGlobalIdentifierVariableType(Op1, (unsigned long long)VariableType);
+ }
+ }
+
+ Op1 = 0;
}
}
@@ -1188,6 +1213,8 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
{
break;
}
+
+ free(Op1Array);
}
else if (!strcmp(Operator->Value, "@MOV"))
{
@@ -1217,8 +1244,18 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
if (MatchedStack->Pointer > 0)
{
- if (Top(MatchedStack)->Type == SCRIPT_VARIABLE_TYPE)
+ if (!strcmp(Top(MatchedStack)->Value, "@DECLARE_POINTER_TYPE") || Top(MatchedStack)->Type == SCRIPT_VARIABLE_TYPE)
{
+ if (!strcmp(Top(MatchedStack)->Value, "@DECLARE_POINTER_TYPE"))
+ {
+ PointerVariableType = calloc(1, sizeof(VARIABLE_TYPE));
+ PointerVariableType->Kind = TY_PTR;
+ PointerVariableType->Size = 8;
+ PointerVariableType->Align = 8;
+ PointerVariableType->IsUnsigned = TRUE;
+ Pop(MatchedStack);
+ }
+
VariableType = HandleType(MatchedStack);
if (VariableType->Kind == TY_UNKNOWN)
@@ -1227,7 +1264,20 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
break;
}
- // Op1Symbol->VariableType = (unsigned long long)VariableType;
+ if (PointerVariableType)
+ {
+ PointerVariableType->Base = VariableType;
+ VariableType = PointerVariableType;
+ }
+
+ if (Op1->Type == LOCAL_UNRESOLVED_ID || Op1->Type == LOCAL_ID)
+ {
+ SetLocalIdentifierVariableType(Op1, (unsigned long long)VariableType);
+ }
+ else if (Op1->Type == GLOBAL_UNRESOLVED_ID || Op1->Type == GLOBAL_ID)
+ {
+ SetGlobalIdentifierVariableType(Op1, (unsigned long long)VariableType);
+ }
}
}
@@ -1244,6 +1294,10 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
break;
}
}
+ else if (!strcmp(Operator->Value, "@DECLARE_POINTER_TYPE"))
+ {
+ Push(MatchedStack, CopyToken(Operator));
+ }
else if (IsType2Func(Operator))
{
PushSymbol(CodeBuffer, OperatorSymbol);
@@ -1530,68 +1584,344 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
}
else if (IsAssignmentOperator(Operator))
{
- PushSymbol(CodeBuffer, OperatorSymbol);
- Op0 = Pop(MatchedStack);
- Op0Symbol = ToSymbol(Op0, Error);
+ BOOL Handled = FALSE;
+ Op1 = TopIndexed(MatchedStack, 1);
- Op1 = Pop(MatchedStack);
- Op1Symbol = ToSymbol(Op1, Error);
-
- PushSymbol(CodeBuffer, Op0Symbol);
- PushSymbol(CodeBuffer, Op1Symbol);
- PushSymbol(CodeBuffer, Op1Symbol);
-
- //
- // Free the operand if it is a temp value
- //
- FreeTemp(Op0);
- if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ if (((VARIABLE_TYPE *)Op1->VariableType)->Kind == TY_PTR)
{
- break;
+ if (!strcmp(Operator->Value, "@ADD_ASSIGNMENT"))
+ {
+ PSYMBOL Symbol = NULL;
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_MUL;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = ((VARIABLE_TYPE *)Op1->VariableType)->Base->Size;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Op0 = Pop(MatchedStack);
+ Op0Symbol = ToSymbol(Op0, Error);
+ PushSymbol(CodeBuffer, Op0Symbol);
+
+ Temp = NewTemp(Error);
+ TempSymbol = ToSymbol(Temp, Error);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_ADD;
+ PushSymbol(CodeBuffer, Symbol);
+
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ Op1 = Pop(MatchedStack);
+ Op1Symbol = ToSymbol(Op1, Error);
+ PushSymbol(CodeBuffer, Op1Symbol);
+ PushSymbol(CodeBuffer, Op1Symbol);
+
+ FreeTemp(Op0);
+ if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ {
+ break;
+ }
+ }
+ else if (!strcmp(Operator->Value, "@SUB_ASSIGNMENT"))
+ {
+ PSYMBOL Symbol = NULL;
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_MUL;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = ((VARIABLE_TYPE *)Op1->VariableType)->Base->Size;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Op0 = Pop(MatchedStack);
+ Op0Symbol = ToSymbol(Op0, Error);
+ PushSymbol(CodeBuffer, Op0Symbol);
+
+ Temp = NewTemp(Error);
+ TempSymbol = ToSymbol(Temp, Error);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_SUB;
+ PushSymbol(CodeBuffer, Symbol);
+
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ Op1 = Pop(MatchedStack);
+ Op1Symbol = ToSymbol(Op1, Error);
+ PushSymbol(CodeBuffer, Op1Symbol);
+ PushSymbol(CodeBuffer, Op1Symbol);
+
+ FreeTemp(Op0);
+ if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ {
+ break;
+ }
+ }
+ else
+ {
+ *Error = SCRIPT_ENGINE_ERROR_SYNTAX;
+ Op0 = Pop(MatchedStack);
+ Op1 = Pop(MatchedStack);
+ }
+ Handled = TRUE;
+ }
+
+ if (!Handled)
+ {
+ PushSymbol(CodeBuffer, OperatorSymbol);
+ Op0 = Pop(MatchedStack);
+ Op0Symbol = ToSymbol(Op0, Error);
+
+ Op1 = Pop(MatchedStack);
+ Op1Symbol = ToSymbol(Op1, Error);
+
+ PushSymbol(CodeBuffer, Op0Symbol);
+ PushSymbol(CodeBuffer, Op1Symbol);
+ PushSymbol(CodeBuffer, Op1Symbol);
+
+ //
+ // Free the operand if it is a temp value
+ //
+ FreeTemp(Op0);
+ if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ {
+ break;
+ }
}
}
else if (IsTwoOperandOperator(Operator))
{
- PushSymbol(CodeBuffer, OperatorSymbol);
- Op0 = Pop(MatchedStack);
- Op0Symbol = ToSymbol(Op0, Error);
+ BOOL Handled = FALSE;
+ Op0 = TopIndexed(MatchedStack, 0);
+ Op1 = TopIndexed(MatchedStack, 1);
- Op1 = Pop(MatchedStack);
- Op1Symbol = ToSymbol(Op1, Error);
-
- Temp = NewTemp(Error);
- Push(MatchedStack, Temp);
- TempSymbol = ToSymbol(Temp, Error);
-
- PushSymbol(CodeBuffer, Op0Symbol);
- PushSymbol(CodeBuffer, Op1Symbol);
- PushSymbol(CodeBuffer, TempSymbol);
-
- //
- // Free the operand if it is a temp value
- //
- FreeTemp(Op0);
- FreeTemp(Op1);
- if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ if (!strcmp(Operator->Value, "@ADD") || !strcmp(Operator->Value, "@SUB"))
{
- break;
+ if (((VARIABLE_TYPE *)Op0->VariableType)->Kind == TY_PTR && ((VARIABLE_TYPE *)Op1->VariableType)->Kind == TY_PTR)
+ {
+ *Error = SCRIPT_ENGINE_ERROR_SYNTAX;
+ Op0 = Pop(MatchedStack);
+ Op1 = Pop(MatchedStack);
+ Handled = TRUE;
+ }
+ else if (((VARIABLE_TYPE *)Op0->VariableType)->Kind == TY_PTR && ((VARIABLE_TYPE *)Op1->VariableType)->Kind != TY_PTR)
+ {
+ if (!strcmp(Operator->Value, "@SUB"))
+ {
+ *Error = SCRIPT_ENGINE_ERROR_SYNTAX;
+ Op0 = Pop(MatchedStack);
+ Op1 = Pop(MatchedStack);
+ }
+ else
+ {
+ PSYMBOL Symbol = NULL;
+
+ Op0 = Pop(MatchedStack);
+ Op1 = Pop(MatchedStack);
+ Op0Symbol = ToSymbol(Op0, Error);
+ Op1Symbol = ToSymbol(Op1, Error);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_MUL;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = ((VARIABLE_TYPE *)Op0->VariableType)->Base->Size;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Op1Symbol = ToSymbol(Op1, Error);
+ PushSymbol(CodeBuffer, Op1Symbol);
+
+ Temp = NewTemp(Error);
+ TempSymbol = ToSymbol(Temp, Error);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ PushSymbol(CodeBuffer, OperatorSymbol);
+ Op0Symbol = ToSymbol(Op0, Error);
+ PushSymbol(CodeBuffer, Op0Symbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ Push(MatchedStack, Temp);
+
+ //
+ // Free the operand if it is a temp value
+ //
+ FreeTemp(Op0);
+ FreeTemp(Op1);
+ if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ {
+ break;
+ }
+ }
+ Handled = TRUE;
+ }
+ else if (((VARIABLE_TYPE *)Op0->VariableType)->Kind != TY_PTR && ((VARIABLE_TYPE *)Op1->VariableType)->Kind == TY_PTR)
+ {
+ PSYMBOL Symbol = NULL;
+
+ Op0 = Pop(MatchedStack);
+ Op1 = Pop(MatchedStack);
+ Op0Symbol = ToSymbol(Op0, Error);
+ Op1Symbol = ToSymbol(Op1, Error);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_MUL;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = ((VARIABLE_TYPE *)Op1->VariableType)->Base->Size;
+ PushSymbol(CodeBuffer, Symbol);
+
+ PushSymbol(CodeBuffer, Op0Symbol);
+
+ Temp = NewTemp(Error);
+ TempSymbol = ToSymbol(Temp, Error);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ PushSymbol(CodeBuffer, OperatorSymbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+ PushSymbol(CodeBuffer, Op1Symbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ Push(MatchedStack, Temp);
+
+ //
+ // Free the operand if it is a temp value
+ //
+ FreeTemp(Op0);
+ FreeTemp(Op1);
+ if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ {
+ break;
+ }
+
+ Handled = TRUE;
+ }
+ }
+
+ if (!Handled)
+ {
+ PushSymbol(CodeBuffer, OperatorSymbol);
+ Op0 = Pop(MatchedStack);
+ Op0Symbol = ToSymbol(Op0, Error);
+
+ Op1 = Pop(MatchedStack);
+ Op1Symbol = ToSymbol(Op1, Error);
+
+ Temp = NewTemp(Error);
+ Push(MatchedStack, Temp);
+ TempSymbol = ToSymbol(Temp, Error);
+
+ PushSymbol(CodeBuffer, Op0Symbol);
+ PushSymbol(CodeBuffer, Op1Symbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ //
+ // Free the operand if it is a temp value
+ //
+ FreeTemp(Op0);
+ FreeTemp(Op1);
+ if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ {
+ break;
+ }
}
}
else if (IsOneOperandOperator(Operator))
{
- PushSymbol(CodeBuffer, OperatorSymbol);
- Op0 = Pop(MatchedStack);
- Op0Symbol = ToSymbol(Op0, Error);
+ BOOL Handled = FALSE;
+ Op0 = Top(MatchedStack);
- PushSymbol(CodeBuffer, Op0Symbol);
-
- //
- // Free the operand if it is a temp value
- //
- FreeTemp(Op0);
- if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ if (((VARIABLE_TYPE *)Op0->VariableType)->Kind == TY_PTR)
{
- break;
+ if (!strcmp(Operator->Value, "@INC"))
+ {
+ PSYMBOL Symbol = NULL;
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_ADD;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = ((VARIABLE_TYPE *)Op0->VariableType)->Base->Size;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Op0 = Pop(MatchedStack);
+ Op0Symbol = ToSymbol(Op0, Error);
+ PushSymbol(CodeBuffer, Op0Symbol);
+ PushSymbol(CodeBuffer, Op0Symbol);
+
+ FreeTemp(Op0);
+ if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ {
+ break;
+ }
+ Handled = TRUE;
+ }
+
+ else if (!strcmp(Operator->Value, "@DEC"))
+ {
+ PSYMBOL Symbol = NULL;
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_SUB;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = ((VARIABLE_TYPE *)Op0->VariableType)->Base->Size;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Op0 = Pop(MatchedStack);
+ Op0Symbol = ToSymbol(Op0, Error);
+ PushSymbol(CodeBuffer, Op0Symbol);
+ PushSymbol(CodeBuffer, Op0Symbol);
+
+ FreeTemp(Op0);
+ if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ {
+ break;
+ }
+ Handled = TRUE;
+ }
+ }
+
+ if (!Handled)
+ {
+ PushSymbol(CodeBuffer, OperatorSymbol);
+ Op0 = Pop(MatchedStack);
+ Op0Symbol = ToSymbol(Op0, Error);
+
+ PushSymbol(CodeBuffer, Op0Symbol);
+
+ //
+ // Free the operand if it is a temp value
+ //
+ FreeTemp(Op0);
+ if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ {
+ break;
+ }
}
}
else if (!strcmp(Operator->Value, "@VARGSTART"))
@@ -3366,6 +3696,45 @@ NewGlobalIdentifier(PSCRIPT_ENGINE_TOKEN Token)
return GlobalIdTable->Pointer - 1;
}
+/**
+ * @brief
+ *
+ * @param Token
+ */
+VOID
+SetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, unsigned long long VariableType)
+{
+ PSCRIPT_ENGINE_TOKEN CurrentToken;
+ for (uintptr_t i = 0; i < GlobalIdTable->Pointer; i++)
+ {
+ CurrentToken = *(GlobalIdTable->Head + i);
+ if (!strcmp(Token->Value, CurrentToken->Value))
+ {
+ CurrentToken->VariableType = VariableType;
+ }
+ }
+}
+
+/**
+ * @brief
+ *
+ * @param Token
+ */
+unsigned long long
+GetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token)
+{
+ PSCRIPT_ENGINE_TOKEN CurrentToken;
+ for (uintptr_t i = 0; i < GlobalIdTable->Pointer; i++)
+ {
+ CurrentToken = *(GlobalIdTable->Head + i);
+ if (!strcmp(Token->Value, CurrentToken->Value))
+ {
+ return CurrentToken->VariableType;
+ }
+ }
+ return 0;
+}
+
/**
* @brief Allocates a new local variable and returns the integer assigned to it
*
@@ -3381,6 +3750,46 @@ NewLocalIdentifier(PSCRIPT_ENGINE_TOKEN Token)
return ((PSCRIPT_ENGINE_TOKEN_LIST)CurrentUserDefinedFunction->IdTable)->Pointer - 1;
}
+/**
+ * @brief
+ *
+ * @param Token
+ */
+VOID
+SetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, unsigned long long VariableType)
+{
+ PSCRIPT_ENGINE_TOKEN CurrentToken;
+ for (uintptr_t i = 0; i < ((PSCRIPT_ENGINE_TOKEN_LIST)CurrentUserDefinedFunction->IdTable)->Pointer; i++)
+ {
+ CurrentToken = *(((PSCRIPT_ENGINE_TOKEN_LIST)CurrentUserDefinedFunction->IdTable)->Head + i);
+ if (!strcmp(Token->Value, CurrentToken->Value))
+ {
+ CurrentToken->VariableType = VariableType;
+ }
+ }
+}
+
+/**
+ * @brief
+ *
+ * @param Token
+ * @return unsigned long long
+ */
+unsigned long long
+GetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token)
+{
+ PSCRIPT_ENGINE_TOKEN CurrentToken;
+ for (uintptr_t i = 0; i < ((PSCRIPT_ENGINE_TOKEN_LIST)CurrentUserDefinedFunction->IdTable)->Pointer; i++)
+ {
+ CurrentToken = *(((PSCRIPT_ENGINE_TOKEN_LIST)CurrentUserDefinedFunction->IdTable)->Head + i);
+ if (!strcmp(Token->Value, CurrentToken->Value))
+ {
+ return CurrentToken->VariableType;
+ }
+ }
+ return 0;
+}
+
/**
* @brief
*
diff --git a/hyperdbg/script-engine/header/common.h b/hyperdbg/script-engine/header/common.h
index c67589f7..0478ce6e 100644
--- a/hyperdbg/script-engine/header/common.h
+++ b/hyperdbg/script-engine/header/common.h
@@ -137,6 +137,9 @@ Pop(PSCRIPT_ENGINE_TOKEN_LIST TokenList);
PSCRIPT_ENGINE_TOKEN
Top(PSCRIPT_ENGINE_TOKEN_LIST TokenList);
+PSCRIPT_ENGINE_TOKEN
+TopIndexed(PSCRIPT_ENGINE_TOKEN_LIST TokenList, int Index);
+
char
IsNoneTerminal(PSCRIPT_ENGINE_TOKEN Token);
diff --git a/hyperdbg/script-engine/header/parse-table.h b/hyperdbg/script-engine/header/parse-table.h
index 4d642a95..4ad41d99 100644
--- a/hyperdbg/script-engine/header/parse-table.h
+++ b/hyperdbg/script-engine/header/parse-table.h
@@ -1,7 +1,7 @@
#pragma once
#ifndef PARSE_TABLE_H
#define PARSE_TABLE_H
-#define RULES_COUNT 246
+#define RULES_COUNT 247
#define TERMINAL_COUNT 119
#define NONETERMINAL_COUNT 49
#define START_VARIABLE "S"
diff --git a/hyperdbg/script-engine/header/script-engine.h b/hyperdbg/script-engine/header/script-engine.h
index 52d654b9..22822bec 100644
--- a/hyperdbg/script-engine/header/script-engine.h
+++ b/hyperdbg/script-engine/header/script-engine.h
@@ -90,23 +90,29 @@ SemanticRuleToInt(char * str);
char *
HandleError(PSCRIPT_ENGINE_ERROR_TYPE Error, char * str);
+int
+NewGlobalIdentifier(PSCRIPT_ENGINE_TOKEN PTOKEN);
+
int
GetGlobalIdentifierVal(PSCRIPT_ENGINE_TOKEN PTOKEN);
-int
-GetLocalIdentifierVal(PSCRIPT_ENGINE_TOKEN PTOKEN);
+VOID
+SetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, unsigned long long VariableType);
-int
-NewGlobalIdentifier(PSCRIPT_ENGINE_TOKEN PTOKEN);
+unsigned long long
+GetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token);
int
NewLocalIdentifier(PSCRIPT_ENGINE_TOKEN PTOKEN);
int
-LalrGetRhsSize(int RuleId);
+GetLocalIdentifierVal(PSCRIPT_ENGINE_TOKEN PTOKEN);
-BOOL
-LalrIsOperandType(PSCRIPT_ENGINE_TOKEN PTOKEN);
+VOID
+SetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, unsigned long long VariableType);
+
+unsigned long long
+GetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token);
int
NewFunctionParameterIdentifier(PSCRIPT_ENGINE_TOKEN Token);
@@ -114,6 +120,12 @@ NewFunctionParameterIdentifier(PSCRIPT_ENGINE_TOKEN Token);
int
GetFunctionParameterIdentifier(PSCRIPT_ENGINE_TOKEN Token);
+int
+LalrGetRhsSize(int RuleId);
+
+BOOL
+LalrIsOperandType(PSCRIPT_ENGINE_TOKEN PTOKEN);
+
PUSER_DEFINED_FUNCTION_NODE
GetUserDefinedFunctionNode(PSCRIPT_ENGINE_TOKEN Token);
diff --git a/hyperdbg/script-engine/header/type.h b/hyperdbg/script-engine/header/type.h
index faa5b740..999fbbc2 100644
--- a/hyperdbg/script-engine/header/type.h
+++ b/hyperdbg/script-engine/header/type.h
@@ -26,10 +26,11 @@ typedef enum
typedef struct VARIABLE_TYPE
{
- VARIABLE_TYPE_KIND Kind;
- int Size; // sizeof() value
- int Align; // alignment
- BOOLEAN IsUnsigned;
+ VARIABLE_TYPE_KIND Kind;
+ int Size; // sizeof() value
+ int Align; // alignment
+ BOOLEAN IsUnsigned;
+ struct VARIABLE_TYPE * Base;
} VARIABLE_TYPE;
extern VARIABLE_TYPE * VARIABLE_TYPE_UNKNOWN;
diff --git a/hyperdbg/script-engine/python/Grammar.txt b/hyperdbg/script-engine/python/Grammar.txt
index 995ef14f..9cede47f 100644
--- a/hyperdbg/script-engine/python/Grammar.txt
+++ b/hyperdbg/script-engine/python/Grammar.txt
@@ -90,6 +90,7 @@ RETURN->EXPRESSION @RETURN_OF_USER_DEFINED_FUNCTION_WITH_VALUE
VARIABLE_TYPE1->@PUSH _script_variable_type
VARIABLE_TYPE2->VARIABLE_TYPE1 VARIABLE_TYPE2
+VARIABLE_TYPE2->* @DECLARE_POINTER_TYPE
VARIABLE_TYPE2->eps
VARIABLE_TYPE3->VARIABLE_TYPE1 VARIABLE_TYPE2 L_VALUE VARIABLE_TYPE4
From 8b4178d416b1f5401a47d44c66c69c2a84f77fcd Mon Sep 17 00:00:00 2001
From: xmaple555
Date: Tue, 21 Oct 2025 16:46:49 +0800
Subject: [PATCH 060/323] add array and pointer in script engine
---
.../hwdbg/script/script_definitions.scala | 2 +-
.../headers/ScriptEngineCommonDefinitions.h | 206 +--
hyperdbg/script-engine/code/common.c | 34 +-
hyperdbg/script-engine/code/parse-table.c | 1470 +++++++++--------
hyperdbg/script-engine/code/scanner.c | 10 +
hyperdbg/script-engine/code/script-engine.c | 638 ++++++-
hyperdbg/script-engine/code/type.c | 16 +
hyperdbg/script-engine/header/common.h | 2 +
hyperdbg/script-engine/header/parse-table.h | 10 +-
hyperdbg/script-engine/header/script-engine.h | 4 +-
hyperdbg/script-engine/header/type.h | 4 +
hyperdbg/script-engine/python/Grammar.txt | 66 +-
hyperdbg/script-engine/python/generator.py | 10 +-
hyperdbg/script-engine/python/lalr1_parser.py | 2 +-
hyperdbg/script-engine/python/ll1_parser.py | 2 +-
hyperdbg/script-eval/code/ScriptEngineEval.c | 12 +
16 files changed, 1654 insertions(+), 834 deletions(-)
diff --git a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
index 986aae7e..1ff8ce41 100644
--- a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
+++ b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
@@ -45,6 +45,6 @@ object ScriptConstantTypes {
object ScriptEvalFunc {
object ScriptOperators extends ChiselEnum {
- val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncDereference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
+ val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
}
}
\ No newline at end of file
diff --git a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
index 4c5536a7..c5711835 100644
--- a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
+++ b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
@@ -58,6 +58,10 @@ typedef struct ACTION_BUFFER {
#define SYMBOL_STACK_INDEX_TYPE 15
#define SYMBOL_STACK_BASE_INDEX_TYPE 16
#define SYMBOL_RETURN_VALUE_TYPE 17
+#define SYMBOL_REFERENCE_LOCAL_ID_TYPE 18
+#define SYMBOL_REFERENCE_TEMP_TYPE 19
+#define SYMBOL_DEREFERENCE_LOCAL_ID_TYPE 20
+#define SYMBOL_DEREFERENCE_TEMP_TYPE 21
static const char *const SymbolTypeNames[] = {
"SYMBOL_UNDEFINED",
@@ -77,7 +81,11 @@ static const char *const SymbolTypeNames[] = {
"SYMBOL_FUNCTION_PARAMETER_TYPE",
"SYMBOL_STACK_INDEX_TYPE",
"SYMBOL_STACK_BASE_INDEX_TYPE",
-"SYMBOL_RETURN_VALUE_TYPE"
+"SYMBOL_RETURN_VALUE_TYPE",
+"SYMBOL_REFERENCE_LOCAL_ID_TYPE",
+"SYMBOL_REFERENCE_TEMP_TYPE",
+"SYMBOL_DEREFERENCE_LOCAL_ID_TYPE",
+"SYMBOL_DEREFERENCE_TEMP_TYPE"
};
#define SYMBOL_MEM_VALID_CHECK_MASK (1 << 31)
@@ -90,111 +98,109 @@ static const char *const SymbolTypeNames[] = {
#define FUNC_INC 1
#define FUNC_DEC 2
#define FUNC_REFERENCE 3
-#define FUNC_DEREFERENCE 4
-#define FUNC_OR 5
-#define FUNC_XOR 6
-#define FUNC_AND 7
-#define FUNC_ASR 8
-#define FUNC_ASL 9
-#define FUNC_ADD 10
-#define FUNC_SUB 11
-#define FUNC_MUL 12
-#define FUNC_DIV 13
-#define FUNC_MOD 14
-#define FUNC_GT 15
-#define FUNC_LT 16
-#define FUNC_EGT 17
-#define FUNC_ELT 18
-#define FUNC_EQUAL 19
-#define FUNC_NEQ 20
-#define FUNC_JMP 21
-#define FUNC_JZ 22
-#define FUNC_JNZ 23
-#define FUNC_MOV 24
-#define FUNC_START_OF_DO_WHILE 25
-#define FUNC_START_OF_DO_WHILE_COMMANDS 26
-#define FUNC_END_OF_DO_WHILE 27
-#define FUNC_START_OF_FOR 28
-#define FUNC_FOR_INC_DEC 29
-#define FUNC_START_OF_FOR_OMMANDS 30
-#define FUNC_END_OF_IF 31
-#define FUNC_IGNORE_LVALUE 32
-#define FUNC_PUSH 33
-#define FUNC_POP 34
-#define FUNC_CALL 35
-#define FUNC_RET 36
-#define FUNC_PRINT 37
-#define FUNC_FORMATS 38
-#define FUNC_EVENT_ENABLE 39
-#define FUNC_EVENT_DISABLE 40
-#define FUNC_EVENT_CLEAR 41
-#define FUNC_TEST_STATEMENT 42
-#define FUNC_SPINLOCK_LOCK 43
-#define FUNC_SPINLOCK_UNLOCK 44
-#define FUNC_EVENT_SC 45
-#define FUNC_MICROSLEEP 46
-#define FUNC_PRINTF 47
-#define FUNC_PAUSE 48
-#define FUNC_FLUSH 49
-#define FUNC_EVENT_TRACE_STEP 50
-#define FUNC_EVENT_TRACE_STEP_IN 51
-#define FUNC_EVENT_TRACE_STEP_OUT 52
-#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP 53
-#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN 54
-#define FUNC_RDTSC 55
-#define FUNC_RDTSCP 56
-#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 57
-#define FUNC_EVENT_INJECT 58
-#define FUNC_POI 59
-#define FUNC_DB 60
-#define FUNC_DD 61
-#define FUNC_DW 62
-#define FUNC_DQ 63
-#define FUNC_NEG 64
-#define FUNC_HI 65
-#define FUNC_LOW 66
-#define FUNC_NOT 67
-#define FUNC_CHECK_ADDRESS 68
-#define FUNC_DISASSEMBLE_LEN 69
-#define FUNC_DISASSEMBLE_LEN32 70
-#define FUNC_DISASSEMBLE_LEN64 71
-#define FUNC_INTERLOCKED_INCREMENT 72
-#define FUNC_INTERLOCKED_DECREMENT 73
-#define FUNC_PHYSICAL_TO_VIRTUAL 74
-#define FUNC_VIRTUAL_TO_PHYSICAL 75
-#define FUNC_POI_PA 76
-#define FUNC_HI_PA 77
-#define FUNC_LOW_PA 78
-#define FUNC_DB_PA 79
-#define FUNC_DD_PA 80
-#define FUNC_DW_PA 81
-#define FUNC_DQ_PA 82
-#define FUNC_ED 83
-#define FUNC_EB 84
-#define FUNC_EQ 85
-#define FUNC_INTERLOCKED_EXCHANGE 86
-#define FUNC_INTERLOCKED_EXCHANGE_ADD 87
-#define FUNC_EB_PA 88
-#define FUNC_ED_PA 89
-#define FUNC_EQ_PA 90
-#define FUNC_INTERLOCKED_COMPARE_EXCHANGE 91
-#define FUNC_STRLEN 92
-#define FUNC_STRCMP 93
-#define FUNC_MEMCMP 94
-#define FUNC_STRNCMP 95
-#define FUNC_WCSLEN 96
-#define FUNC_WCSCMP 97
-#define FUNC_EVENT_INJECT_ERROR_CODE 98
-#define FUNC_MEMCPY 99
-#define FUNC_MEMCPY_PA 100
-#define FUNC_WCSNCMP 101
+#define FUNC_OR 4
+#define FUNC_XOR 5
+#define FUNC_AND 6
+#define FUNC_ASR 7
+#define FUNC_ASL 8
+#define FUNC_ADD 9
+#define FUNC_SUB 10
+#define FUNC_MUL 11
+#define FUNC_DIV 12
+#define FUNC_MOD 13
+#define FUNC_GT 14
+#define FUNC_LT 15
+#define FUNC_EGT 16
+#define FUNC_ELT 17
+#define FUNC_EQUAL 18
+#define FUNC_NEQ 19
+#define FUNC_JMP 20
+#define FUNC_JZ 21
+#define FUNC_JNZ 22
+#define FUNC_MOV 23
+#define FUNC_START_OF_DO_WHILE 24
+#define FUNC_START_OF_DO_WHILE_COMMANDS 25
+#define FUNC_END_OF_DO_WHILE 26
+#define FUNC_START_OF_FOR 27
+#define FUNC_FOR_INC_DEC 28
+#define FUNC_START_OF_FOR_OMMANDS 29
+#define FUNC_END_OF_IF 30
+#define FUNC_IGNORE_LVALUE 31
+#define FUNC_PUSH 32
+#define FUNC_POP 33
+#define FUNC_CALL 34
+#define FUNC_RET 35
+#define FUNC_PRINT 36
+#define FUNC_FORMATS 37
+#define FUNC_EVENT_ENABLE 38
+#define FUNC_EVENT_DISABLE 39
+#define FUNC_EVENT_CLEAR 40
+#define FUNC_TEST_STATEMENT 41
+#define FUNC_SPINLOCK_LOCK 42
+#define FUNC_SPINLOCK_UNLOCK 43
+#define FUNC_EVENT_SC 44
+#define FUNC_MICROSLEEP 45
+#define FUNC_PRINTF 46
+#define FUNC_PAUSE 47
+#define FUNC_FLUSH 48
+#define FUNC_EVENT_TRACE_STEP 49
+#define FUNC_EVENT_TRACE_STEP_IN 50
+#define FUNC_EVENT_TRACE_STEP_OUT 51
+#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP 52
+#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN 53
+#define FUNC_RDTSC 54
+#define FUNC_RDTSCP 55
+#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 56
+#define FUNC_EVENT_INJECT 57
+#define FUNC_POI 58
+#define FUNC_DB 59
+#define FUNC_DD 60
+#define FUNC_DW 61
+#define FUNC_DQ 62
+#define FUNC_NEG 63
+#define FUNC_HI 64
+#define FUNC_LOW 65
+#define FUNC_NOT 66
+#define FUNC_CHECK_ADDRESS 67
+#define FUNC_DISASSEMBLE_LEN 68
+#define FUNC_DISASSEMBLE_LEN32 69
+#define FUNC_DISASSEMBLE_LEN64 70
+#define FUNC_INTERLOCKED_INCREMENT 71
+#define FUNC_INTERLOCKED_DECREMENT 72
+#define FUNC_PHYSICAL_TO_VIRTUAL 73
+#define FUNC_VIRTUAL_TO_PHYSICAL 74
+#define FUNC_POI_PA 75
+#define FUNC_HI_PA 76
+#define FUNC_LOW_PA 77
+#define FUNC_DB_PA 78
+#define FUNC_DD_PA 79
+#define FUNC_DW_PA 80
+#define FUNC_DQ_PA 81
+#define FUNC_ED 82
+#define FUNC_EB 83
+#define FUNC_EQ 84
+#define FUNC_INTERLOCKED_EXCHANGE 85
+#define FUNC_INTERLOCKED_EXCHANGE_ADD 86
+#define FUNC_EB_PA 87
+#define FUNC_ED_PA 88
+#define FUNC_EQ_PA 89
+#define FUNC_INTERLOCKED_COMPARE_EXCHANGE 90
+#define FUNC_STRLEN 91
+#define FUNC_STRCMP 92
+#define FUNC_MEMCMP 93
+#define FUNC_STRNCMP 94
+#define FUNC_WCSLEN 95
+#define FUNC_WCSCMP 96
+#define FUNC_EVENT_INJECT_ERROR_CODE 97
+#define FUNC_MEMCPY 98
+#define FUNC_MEMCPY_PA 99
+#define FUNC_WCSNCMP 100
static const char *const FunctionNames[] = {
"FUNC_UNDEFINED",
"FUNC_INC",
"FUNC_DEC",
"FUNC_REFERENCE",
-"FUNC_DEREFERENCE",
"FUNC_OR",
"FUNC_XOR",
"FUNC_AND",
diff --git a/hyperdbg/script-engine/code/common.c b/hyperdbg/script-engine/code/common.c
index c100fda7..5e4b554e 100644
--- a/hyperdbg/script-engine/code/common.c
+++ b/hyperdbg/script-engine/code/common.c
@@ -49,10 +49,11 @@ NewUnknownToken()
// Init fields
//
strcpy(Token->Value, "");
- Token->Type = UNKNOWN;
- Token->Len = 0;
- Token->MaxLen = TOKEN_VALUE_MAX_LEN;
- Token->VariableType = (unsigned long long)VARIABLE_TYPE_LDOUBLE;
+ Token->Type = UNKNOWN;
+ Token->Len = 0;
+ Token->MaxLen = TOKEN_VALUE_MAX_LEN;
+ Token->VariableType = (unsigned long long)VARIABLE_TYPE_LONG;
+ Token->VariableMemoryIdx = 0;
return Token;
}
@@ -76,12 +77,13 @@ NewToken(SCRIPT_ENGINE_TOKEN_TYPE Type, char * Value)
//
// Init fields
//
- unsigned int Len = (unsigned int)strlen(Value);
- Token->Type = Type;
- Token->Len = Len;
- Token->MaxLen = Len;
- Token->Value = (char *)calloc(Token->MaxLen + 1, sizeof(char));
- Token->VariableType = (unsigned long long)VARIABLE_TYPE_LDOUBLE;
+ unsigned int Len = (unsigned int)strlen(Value);
+ Token->Type = Type;
+ Token->Len = Len;
+ Token->MaxLen = Len;
+ Token->Value = (char *)calloc(Token->MaxLen + 1, sizeof(char));
+ Token->VariableType = (unsigned long long)VARIABLE_TYPE_LONG;
+ Token->VariableMemoryIdx = 0;
if (Token->Value == NULL)
{
@@ -212,6 +214,9 @@ PrintToken(PSCRIPT_ENGINE_TOKEN Token)
case FUNCTION_PARAMETER_ID:
printf(" FUNCTION_PARAMETER_ID>\n");
break;
+ case DEFERENCE_TEMP:
+ printf(" DEFERENCE_TEMP>\n");
+ break;
default:
printf(" ERROR>\n");
break;
@@ -522,10 +527,9 @@ Top(PSCRIPT_ENGINE_TOKEN_LIST TokenList)
PSCRIPT_ENGINE_TOKEN
TopIndexed(PSCRIPT_ENGINE_TOKEN_LIST TokenList, int Index)
{
-
- uintptr_t Head = (uintptr_t)TokenList->Head;
- uintptr_t Pointer = (uintptr_t)TokenList->Pointer - 1 - Index;
- PSCRIPT_ENGINE_TOKEN* ReadAddr = (PSCRIPT_ENGINE_TOKEN*)(Head + Pointer * sizeof(PSCRIPT_ENGINE_TOKEN));
+ uintptr_t Head = (uintptr_t)TokenList->Head;
+ uintptr_t Pointer = (uintptr_t)TokenList->Pointer - 1 - Index;
+ PSCRIPT_ENGINE_TOKEN * ReadAddr = (PSCRIPT_ENGINE_TOKEN *)(Head + Pointer * sizeof(PSCRIPT_ENGINE_TOKEN));
return *ReadAddr;
}
@@ -673,7 +677,7 @@ void
FreeTemp(PSCRIPT_ENGINE_TOKEN Temp)
{
int id = (int)DecimalToInt(Temp->Value);
- if (Temp->Type == TEMP)
+ if (Temp->Type == TEMP|| Temp->Type == DEFERENCE_TEMP)
{
CurrentUserDefinedFunction->TempMap[id] = 0;
}
diff --git a/hyperdbg/script-engine/code/parse-table.c b/hyperdbg/script-engine/code/parse-table.c
index 91b9792e..bdcec46d 100644
--- a/hyperdbg/script-engine/code/parse-table.c
+++ b/hyperdbg/script-engine/code/parse-table.c
@@ -37,11 +37,29 @@ const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "VARIABLE_TYPE3"},
{NON_TERMINAL, "VARIABLE_TYPE4"},
{NON_TERMINAL, "VARIABLE_TYPE4"},
+ {NON_TERMINAL, "ARRAY_DIMS"},
+ {NON_TERMINAL, "ARRAY_DIMS2"},
+ {NON_TERMINAL, "ARRAY_DIMS2"},
+ {NON_TERMINAL, "ARRAY_INIT"},
+ {NON_TERMINAL, "INIT_LIST"},
+ {NON_TERMINAL, "INIT_ITEM"},
+ {NON_TERMINAL, "INIT_ITEM"},
+ {NON_TERMINAL, "INIT_LIST_TAIL"},
+ {NON_TERMINAL, "INIT_LIST_TAIL"},
+ {NON_TERMINAL, "INIT_LIST_CONT"},
+ {NON_TERMINAL, "INIT_LIST_CONT"},
+ {NON_TERMINAL, "VARIABLE_TYPE4"},
{NON_TERMINAL, "VARIABLE_TYPE5"},
{NON_TERMINAL, "VARIABLE_TYPE5"},
{NON_TERMINAL, "VARIABLE_TYPE6"},
{NON_TERMINAL, "VARIABLE_TYPE6"},
{NON_TERMINAL, "ASSIGNMENT_STATEMENT"},
+ {NON_TERMINAL, "ASSIGNMENT_STATEMENT"},
+ {NON_TERMINAL, "ARRAY_DIMS_WRITE_OPT"},
+ {NON_TERMINAL, "ARRAY_DIMS_WRITE_OPT"},
+ {NON_TERMINAL, "ARRAY_DIMS_WRITE"},
+ {NON_TERMINAL, "ARRAY_DIMS_WRITE2"},
+ {NON_TERMINAL, "ARRAY_DIMS_WRITE2"},
{NON_TERMINAL, "ASSIGNMENT_STATEMENT'"},
{NON_TERMINAL, "ASSIGNMENT_STATEMENT'"},
{NON_TERMINAL, "ASSIGNMENT_STATEMENT'"},
@@ -224,9 +242,15 @@ const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
- {NON_TERMINAL, "E12"},
- {NON_TERMINAL, "E12"},
- {NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "ARRAY_DIMS_READ_OPT"},
+ {NON_TERMINAL, "ARRAY_DIMS_READ_OPT"},
+ {NON_TERMINAL, "ARRAY_DIMS_READ"},
+ {NON_TERMINAL, "ARRAY_DIMS_READ2"},
+ {NON_TERMINAL, "ARRAY_DIMS_READ2"},
+ {NON_TERMINAL, "CONST_NUMBER"},
+ {NON_TERMINAL, "CONST_NUMBER"},
+ {NON_TERMINAL, "CONST_NUMBER"},
+ {NON_TERMINAL, "CONST_NUMBER"},
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
@@ -286,12 +310,30 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{EPSILON, "eps"}},
{{NON_TERMINAL, "VARIABLE_TYPE1"},{NON_TERMINAL, "VARIABLE_TYPE2"},{NON_TERMINAL, "L_VALUE"},{NON_TERMINAL, "VARIABLE_TYPE4"}},
{{SPECIAL_TOKEN, "="},{NON_TERMINAL, "EXPRESSION"},{NON_TERMINAL, "MULTIPLE_ASSIGNMENT"},{SPECIAL_TOKEN, ";"}},
+ {{SEMANTIC_RULE, "@ARRAY_L_VALUE"},{NON_TERMINAL, "ARRAY_DIMS"},{SPECIAL_TOKEN, "="},{NON_TERMINAL, "ARRAY_INIT"},{SEMANTIC_RULE, "@ARRAY_DECLARITION"},{SPECIAL_TOKEN, ";"}},
+ {{SPECIAL_TOKEN, "["},{NON_TERMINAL, "CONST_NUMBER"},{SEMANTIC_RULE, "@ARRAY_DIM_NUMBER"},{SPECIAL_TOKEN, "]"},{NON_TERMINAL, "ARRAY_DIMS2"}},
+ {{NON_TERMINAL, "ARRAY_DIMS"}},
+ {{EPSILON, "eps"}},
+ {{SPECIAL_TOKEN, "{"},{NON_TERMINAL, "INIT_LIST"},{SPECIAL_TOKEN, "}"},{SEMANTIC_RULE, "@ARRAY_LEFT_BRACKET"}},
+ {{NON_TERMINAL, "INIT_ITEM"},{NON_TERMINAL, "INIT_LIST_TAIL"}},
+ {{NON_TERMINAL, "ARRAY_INIT"}},
+ {{NON_TERMINAL, "EXPRESSION"}},
+ {{SPECIAL_TOKEN, ","},{NON_TERMINAL, "INIT_LIST_CONT"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "INIT_ITEM"},{NON_TERMINAL, "INIT_LIST_TAIL"}},
+ {{EPSILON, "eps"}},
{{SEMANTIC_RULE, "@START_OF_USER_DEFINED_FUNCTION"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "VARIABLE_TYPE5"},{SPECIAL_TOKEN, ")"},{SPECIAL_TOKEN, "{"},{NON_TERMINAL, "S2"},{SEMANTIC_RULE, "@END_OF_USER_DEFINED_FUNCTION"},{SPECIAL_TOKEN, "}"}},
{{EPSILON, "eps"}},
{{NON_TERMINAL, "VARIABLE_TYPE1"},{NON_TERMINAL, "VARIABLE_TYPE2"},{NON_TERMINAL, "L_VALUE"},{SEMANTIC_RULE, "@FUNCTION_PARAMETER"},{NON_TERMINAL, "VARIABLE_TYPE6"}},
{{SPECIAL_TOKEN, ","},{NON_TERMINAL, "VARIABLE_TYPE1"},{NON_TERMINAL, "VARIABLE_TYPE2"},{NON_TERMINAL, "L_VALUE"},{SEMANTIC_RULE, "@FUNCTION_PARAMETER"},{NON_TERMINAL, "VARIABLE_TYPE6"}},
{{EPSILON, "eps"}},
- {{NON_TERMINAL, "L_VALUE"},{NON_TERMINAL, "ASSIGNMENT_STATEMENT'"}},
+ {{SPECIAL_TOKEN, "*"},{NON_TERMINAL, "L_VALUE"},{SPECIAL_TOKEN, "="},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DEREFERENCE"}},
+ {{NON_TERMINAL, "L_VALUE"},{NON_TERMINAL, "ARRAY_DIMS_WRITE_OPT"},{NON_TERMINAL, "ASSIGNMENT_STATEMENT'"}},
+ {{NON_TERMINAL, "ARRAY_DIMS_WRITE"}},
+ {{EPSILON, "eps"}},
+ {{SPECIAL_TOKEN, "["},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@ARRAY_DIM_NUMBER"},{SPECIAL_TOKEN, "]"},{NON_TERMINAL, "ARRAY_DIMS_WRITE2"}},
+ {{NON_TERMINAL, "ARRAY_DIMS_WRITE"}},
+ {{EPSILON, "eps"},{SEMANTIC_RULE, "@ARRAY_INDEX_WRITE"}},
{{SPECIAL_TOKEN, "++"},{SEMANTIC_RULE, "@INC"}},
{{SPECIAL_TOKEN, "--"},{SEMANTIC_RULE, "@DEC"}},
{{SPECIAL_TOKEN, "="},{NON_TERMINAL, "EXPRESSION"},{NON_TERMINAL, "MULTIPLE_ASSIGNMENT"}},
@@ -472,12 +514,18 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "wcscmp"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "WstringNumber"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "WstringNumber"},{SEMANTIC_RULE, "@WCSCMP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "wcsncmp"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "WstringNumber"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "WstringNumber"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@WCSNCMP"},{SPECIAL_TOKEN, ")"}},
{{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ")"}},
- {{NON_TERMINAL, "L_VALUE"}},
+ {{NON_TERMINAL, "L_VALUE"},{NON_TERMINAL, "ARRAY_DIMS_READ_OPT"}},
{{SEMANTIC_RULE, "@PUSH"},{FUNCTION_ID, "_function_id"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "VA2"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@END_OF_CALLING_USER_DEFINED_FUNCTION_WITH_RETURNING_VALUE"}},
+ {{NON_TERMINAL, "ARRAY_DIMS_READ"}},
+ {{EPSILON, "eps"}},
+ {{SPECIAL_TOKEN, "["},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@ARRAY_DIM_NUMBER"},{SPECIAL_TOKEN, "]"},{NON_TERMINAL, "ARRAY_DIMS_READ2"}},
+ {{NON_TERMINAL, "ARRAY_DIMS_READ"}},
+ {{EPSILON, "eps"},{SEMANTIC_RULE, "@ARRAY_INDEX_READ"}},
{{SEMANTIC_RULE, "@PUSH"},{HEX, "_hex"}},
{{SEMANTIC_RULE, "@PUSH"},{DECIMAL, "_decimal"}},
{{SEMANTIC_RULE, "@PUSH"},{OCTAL, "_octal"}},
{{SEMANTIC_RULE, "@PUSH"},{BINARY, "_binary"}},
+ {{NON_TERMINAL, "CONST_NUMBER"}},
{{SEMANTIC_RULE, "@PUSH"},{PSEUDO_REGISTER, "_pseudo_register"}},
{{SPECIAL_TOKEN, "-"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@NEG"}},
{{SPECIAL_TOKEN, "+"},{NON_TERMINAL, "E12"}},
@@ -536,11 +584,29 @@ const unsigned int RhsSize[RULES_COUNT]=
1,
4,
4,
+6,
+5,
+1,
+1,
+4,
+2,
+1,
+1,
+2,
+1,
+2,
+1,
8,
1,
5,
6,
1,
+5,
+3,
+1,
+1,
+5,
+1,
2,
2,
2,
@@ -722,13 +788,19 @@ const unsigned int RhsSize[RULES_COUNT]=
7,
9,
3,
-1,
+2,
6,
+1,
+1,
+5,
+1,
2,
2,
2,
2,
2,
+1,
+2,
3,
2,
3,
@@ -751,229 +823,259 @@ const unsigned int RhsSize[RULES_COUNT]=
};
const char* NoneTerminalMap[NONETERMINAL_COUNT]=
{
-"StringNumber",
-"INC_DEC'",
-"RETURN",
-"VARIABLE_TYPE2",
-"ASSIGNMENT_STATEMENT'",
-"E2'",
-"VA2",
-"WstringNumber",
-"S2",
-"S",
-"EXPRESSION",
-"VARIABLE_TYPE3",
-"E12",
-"E0'",
-"E2",
-"E4'",
-"STRING",
-"E3'",
-"VARIABLE_TYPE6",
-"FOR_STATEMENT",
-"WSTRING",
-"DO_WHILE_STATEMENT",
-"END_OF_IF",
-"VARIABLE_TYPE4",
+"INIT_ITEM",
+"ARRAY_DIMS_WRITE",
"ELSIF_STATEMENT",
-"E1",
-"SIMPLE_ASSIGNMENT",
-"BOOLEAN_EXPRESSION",
-"E4",
-"INC_DEC",
-"STATEMENT",
-"ELSIF_STATEMENT'",
+"EXPRESSION",
+"E2'",
"E3",
-"VA",
-"MULTIPLE_ASSIGNMENT",
-"CALL_FUNC_STATEMENT",
-"L_VALUE",
-"ASSIGNMENT_STATEMENT",
-"WHILE_STATEMENT",
-"VARIABLE_TYPE1",
+"INIT_LIST_CONT",
+"VARIABLE_TYPE4",
+"VA3",
+"WstringNumber",
+"VARIABLE_TYPE3",
"MULTIPLE_ASSIGNMENT2",
+"ARRAY_DIMS_READ2",
+"STRING",
+"CALL_FUNC_STATEMENT",
+"E2",
+"VARIABLE_TYPE6",
+"ARRAY_DIMS_READ_OPT",
+"E3'",
"E1'",
"E5",
-"VA3",
-"STATEMENT2",
-"ELSE_STATEMENT",
+"DO_WHILE_STATEMENT",
+"ARRAY_INIT",
+"INIT_LIST_TAIL",
+"STATEMENT",
+"L_VALUE",
+"E0'",
+"VARIABLE_TYPE1",
+"ARRAY_DIMS_WRITE2",
+"ELSIF_STATEMENT'",
+"END_OF_IF",
+"E4'",
+"S2",
+"INIT_LIST",
+"ARRAY_DIMS2",
+"CONST_NUMBER",
+"ARRAY_DIMS",
+"ARRAY_DIMS_READ",
"E5'",
+"BOOLEAN_EXPRESSION",
+"INC_DEC'",
+"ASSIGNMENT_STATEMENT",
+"E1",
+"ASSIGNMENT_STATEMENT'",
+"FOR_STATEMENT",
+"WSTRING",
+"INC_DEC",
+"StringNumber",
+"VA",
+"WHILE_STATEMENT",
+"RETURN",
+"VARIABLE_TYPE2",
+"MULTIPLE_ASSIGNMENT",
"IF_STATEMENT",
-"VARIABLE_TYPE5"
+"VA2",
+"S",
+"ELSE_STATEMENT",
+"E12",
+"ARRAY_DIMS_WRITE_OPT",
+"STATEMENT2",
+"SIMPLE_ASSIGNMENT",
+"VARIABLE_TYPE5",
+"E4"
};
const char* TerminalMap[TERMINAL_COUNT]=
{
-"print",
-"pause",
-"*",
-"microsleep",
-"_hex",
-"wcslen",
-"event_sc",
-"interlocked_exchange",
-"poi_pa",
-"_string",
-"interlocked_decrement",
-"dd",
-"/=",
-"(",
-"dd_pa",
-"virtual_to_physical",
-"strcmp",
-"event_trace_instrumentation_step",
-"if",
-"*=",
-"elsif",
-"~",
-"^=",
-",",
"continue",
-"poi",
-"low_pa",
-"ed_pa",
-"disassemble_len",
-"event_disable",
-">>",
-"_decimal",
-"-",
-"%=",
-"_pseudo_register",
-"event_inject_error_code",
-"++",
-"memcpy_pa",
-"eq_pa",
-"_octal",
-"else",
-"event_trace_step",
-"event_trace_instrumentation_step_in",
-"check_address",
-"physical_to_virtual",
-"dw_pa",
-"eb",
-"_register",
-";",
-"_function_id",
-"event_enable",
-"do",
-"}",
-"formats",
-"not",
-"|",
-"dw",
-"disassemble_len64",
"wcsncmp",
-"+",
-")",
-"_script_variable_type",
-"_global_id",
-"rdtscp",
-"interlocked_exchange_add",
-"-=",
-"%",
-"event_inject",
-"_binary",
-"=",
-"eq",
-"event_clear",
-"flush",
-"hi_pa",
-"$",
-"neg",
-"_wstring",
-"spinlock_unlock",
-"interlocked_compare_exchange",
-"disassemble_len32",
-"--",
-"interlocked_increment",
-"for",
-"+=",
-"|=",
-"event_trace_step_out",
-"rdtsc",
-"_function_parameter_id",
-"strncmp",
-"reference",
-"low",
-"memcpy",
-"dq_pa",
-"spinlock_lock",
-"_local_id",
-"dq",
-"wcscmp",
-"/",
-">>=",
-"^",
-"event_trace_step_in",
-"db",
-"<<=",
-"&=",
-"{",
-"<<",
-"eb_pa",
-"break",
-"while",
-"db_pa",
-"memcmp",
-"ed",
-"spinlock_lock_custom_wait",
+"check_address",
+"strcmp",
"hi",
-"return",
-"strlen",
-"printf",
+"_function_id",
+"event_trace_instrumentation_step",
+"ed_pa",
+"*",
"&",
-"test_statement"
+"^=",
+"]",
+"&=",
+"print",
+"^",
+"low_pa",
+"microsleep",
+"dd_pa",
+"low",
+"do",
+"wcslen",
+"else",
+"++",
+"dw_pa",
+"event_enable",
+"test_statement",
+"db_pa",
+"event_sc",
+"flush",
+"/",
+"event_trace_instrumentation_step_in",
+"$",
+"~",
+"event_trace_step_in",
+"*=",
+"_string",
+"_function_parameter_id",
+"poi",
+"hi_pa",
+"ed",
+"_register",
+"%=",
+"disassemble_len32",
+"interlocked_increment",
+"-=",
+"event_trace_step_out",
+"_local_id",
+"_hex",
+"while",
+"interlocked_exchange_add",
+"_decimal",
+"eq",
+"(",
+"strncmp",
+"=",
+"disassemble_len64",
+"interlocked_decrement",
+";",
+"printf",
+"interlocked_compare_exchange",
+"%",
+"wcscmp",
+"db",
+"rdtscp",
+"neg",
+"virtual_to_physical",
+"dq",
+"|=",
+"dw",
+"return",
+"poi_pa",
+"if",
+"rdtsc",
+"break",
+"_pseudo_register",
+"-",
+"memcpy_pa",
+"{",
+"+=",
+"reference",
+"spinlock_unlock",
+"for",
+"not",
+"strlen",
+"<<",
+"}",
+"_wstring",
+"disassemble_len",
+"event_clear",
+"pause",
+"event_inject_error_code",
+"eb_pa",
+"eb",
+"memcmp",
+"formats",
+"spinlock_lock_custom_wait",
+"dq_pa",
+"<<=",
+"memcpy",
+">>=",
+"eq_pa",
+"_binary",
+"/=",
+"_octal",
+"+",
+"_script_variable_type",
+",",
+"spinlock_lock",
+"event_trace_step",
+"event_inject",
+"event_disable",
+"[",
+"_global_id",
+"--",
+"dd",
+")",
+"interlocked_exchange",
+">>",
+"elsif",
+"|",
+"physical_to_virtual"
};
const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]=
{
- {2147483648 ,2147483648 ,243 ,2147483648 ,243 ,243 ,2147483648 ,243 ,243 ,244 ,243 ,243 ,2147483648 ,243 ,243 ,243 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,243 ,243 ,243 ,2147483648 ,2147483648 ,243 ,243 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,243 ,243 ,243 ,243 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,243 ,243 ,243 ,243 ,2147483648 ,2147483648 ,243 ,243 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,243 ,2147483648 ,2147483648 ,243 ,2147483648 ,243 ,2147483648 ,2147483648 ,243 ,243 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,243 ,243 ,243 ,243 ,2147483648 ,243 ,2147483648 ,243 ,243 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,243 ,243 ,243 ,2147483648 ,243 ,2147483648 ,243 ,2147483648 ,243 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,139 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,144 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,28 ,27 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,28 ,2147483648 ,28 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,28 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 },
- {2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,44 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,49 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 },
- {2147483648 ,2147483648 ,240 ,2147483648 ,240 ,240 ,2147483648 ,240 ,240 ,2147483648 ,240 ,240 ,2147483648 ,240 ,240 ,240 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,240 ,240 ,240 ,240 ,2147483648 ,2147483648 ,240 ,240 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,240 ,240 ,2147483648 ,2147483648 ,2147483648 ,240 ,240 ,240 ,240 ,240 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,240 ,240 ,240 ,240 ,239 ,2147483648 ,240 ,240 ,240 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,240 ,2147483648 ,2147483648 ,240 ,2147483648 ,240 ,2147483648 ,2147483648 ,240 ,240 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,240 ,240 ,240 ,240 ,2147483648 ,240 ,2147483648 ,240 ,240 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,240 ,240 ,240 ,2147483648 ,240 ,2147483648 ,240 ,2147483648 ,240 ,2147483648 },
- {2147483648 ,2147483648 ,245 ,2147483648 ,245 ,245 ,2147483648 ,245 ,245 ,2147483648 ,245 ,245 ,2147483648 ,245 ,245 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,245 ,245 ,2147483648 ,2147483648 ,245 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,245 ,245 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,245 ,245 ,245 ,2147483648 ,2147483648 ,245 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,246 ,2147483648 ,245 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,245 ,245 ,245 ,2147483648 ,245 ,2147483648 ,245 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,245 ,245 ,245 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 },
- {13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,15 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,2147483648 ,13 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 },
- {0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,1 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 },
- {2147483648 ,2147483648 ,155 ,2147483648 ,155 ,155 ,2147483648 ,155 ,155 ,2147483648 ,155 ,155 ,2147483648 ,155 ,155 ,155 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,155 ,155 ,155 ,155 ,2147483648 ,2147483648 ,155 ,155 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,155 ,155 ,2147483648 ,2147483648 ,2147483648 ,155 ,155 ,155 ,155 ,155 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,155 ,155 ,155 ,155 ,2147483648 ,2147483648 ,155 ,155 ,155 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,155 ,2147483648 ,2147483648 ,155 ,2147483648 ,155 ,2147483648 ,2147483648 ,155 ,155 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,155 ,155 ,155 ,155 ,2147483648 ,155 ,2147483648 ,155 ,155 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,155 ,155 ,155 ,2147483648 ,155 ,2147483648 ,155 ,2147483648 ,155 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,231 ,2147483648 ,223 ,217 ,2147483648 ,207 ,197 ,2147483648 ,193 ,181 ,2147483648 ,220 ,201 ,196 ,214 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,179 ,199 ,210 ,189 ,2147483648 ,2147483648 ,224 ,228 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,211 ,225 ,2147483648 ,2147483648 ,2147483648 ,188 ,195 ,202 ,205 ,221 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,182 ,191 ,219 ,229 ,2147483648 ,2147483648 ,221 ,178 ,208 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,206 ,2147483648 ,2147483648 ,198 ,2147483648 ,184 ,2147483648 ,2147483648 ,212 ,190 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,221 ,216 ,194 ,186 ,2147483648 ,203 ,2147483648 ,221 ,183 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,209 ,2147483648 ,2147483648 ,200 ,215 ,204 ,2147483648 ,185 ,2147483648 ,213 ,2147483648 ,232 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,161 ,2147483648 ,161 ,161 ,2147483648 ,161 ,161 ,2147483648 ,161 ,161 ,2147483648 ,161 ,161 ,161 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,161 ,161 ,161 ,161 ,2147483648 ,2147483648 ,161 ,161 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,161 ,161 ,2147483648 ,2147483648 ,2147483648 ,161 ,161 ,161 ,161 ,161 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,161 ,161 ,161 ,161 ,2147483648 ,2147483648 ,161 ,161 ,161 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,161 ,2147483648 ,2147483648 ,161 ,2147483648 ,161 ,2147483648 ,2147483648 ,161 ,161 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,161 ,161 ,161 ,161 ,2147483648 ,161 ,2147483648 ,161 ,161 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,161 ,161 ,161 ,2147483648 ,161 ,2147483648 ,161 ,2147483648 ,161 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,169 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {128 ,128 ,2147483648 ,128 ,2147483648 ,128 ,128 ,128 ,128 ,2147483648 ,128 ,128 ,2147483648 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,128 ,128 ,2147483648 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,128 ,128 ,128 ,2147483648 ,2147483648 ,128 ,128 ,128 ,128 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,128 ,128 ,128 ,2147483648 ,128 ,128 ,2147483648 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,2147483648 ,2147483648 ,128 ,128 ,2147483648 ,2147483648 ,128 ,2147483648 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,128 ,2147483648 ,128 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {124 ,124 ,2147483648 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,2147483648 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,2147483648 ,2147483648 ,124 ,124 ,124 ,124 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,124 ,2147483648 ,124 ,124 ,2147483648 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,2147483648 ,2147483648 ,124 ,124 ,2147483648 ,2147483648 ,124 ,2147483648 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,124 ,2147483648 ,124 },
- {2147483648 ,2147483648 ,158 ,2147483648 ,158 ,158 ,2147483648 ,158 ,158 ,2147483648 ,158 ,158 ,2147483648 ,158 ,158 ,158 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,158 ,158 ,158 ,158 ,2147483648 ,2147483648 ,158 ,158 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,158 ,158 ,2147483648 ,2147483648 ,2147483648 ,158 ,158 ,158 ,158 ,158 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,158 ,158 ,158 ,158 ,2147483648 ,2147483648 ,158 ,158 ,158 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,158 ,2147483648 ,2147483648 ,158 ,2147483648 ,158 ,2147483648 ,2147483648 ,158 ,158 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,158 ,158 ,158 ,158 ,2147483648 ,158 ,2147483648 ,158 ,158 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,158 ,158 ,158 ,2147483648 ,158 ,2147483648 ,158 ,2147483648 ,158 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,132 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,168 ,2147483648 ,168 ,168 ,2147483648 ,168 ,168 ,2147483648 ,168 ,168 ,2147483648 ,168 ,168 ,168 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,168 ,168 ,168 ,168 ,2147483648 ,2147483648 ,168 ,168 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,168 ,168 ,2147483648 ,2147483648 ,2147483648 ,168 ,168 ,168 ,168 ,168 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,168 ,168 ,168 ,168 ,2147483648 ,2147483648 ,168 ,168 ,168 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,168 ,2147483648 ,2147483648 ,168 ,2147483648 ,168 ,2147483648 ,2147483648 ,168 ,168 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,168 ,168 ,168 ,168 ,2147483648 ,168 ,2147483648 ,168 ,168 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,168 ,168 ,168 ,2147483648 ,168 ,2147483648 ,168 ,2147483648 ,168 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,8 ,9 ,5 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,12 ,7 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,6 ,2147483648 ,2147483648 ,9 ,9 ,7 ,9 ,9 ,9 ,9 ,9 ,9 ,7 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,10 ,4 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 },
- {125 ,125 ,2147483648 ,125 ,2147483648 ,125 ,125 ,125 ,125 ,2147483648 ,125 ,125 ,2147483648 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,125 ,125 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,125 ,125 ,125 ,2147483648 ,2147483648 ,125 ,125 ,125 ,125 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,125 ,125 ,125 ,2147483648 ,125 ,125 ,2147483648 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,2147483648 ,2147483648 ,125 ,125 ,2147483648 ,2147483648 ,125 ,2147483648 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,2147483648 ,125 },
- {2147483648 ,2147483648 ,164 ,2147483648 ,164 ,164 ,2147483648 ,164 ,164 ,2147483648 ,164 ,164 ,2147483648 ,164 ,164 ,164 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,164 ,164 ,164 ,164 ,2147483648 ,2147483648 ,164 ,164 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,164 ,164 ,2147483648 ,2147483648 ,2147483648 ,164 ,164 ,164 ,164 ,164 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,164 ,164 ,164 ,164 ,2147483648 ,2147483648 ,164 ,164 ,164 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,164 ,2147483648 ,2147483648 ,164 ,2147483648 ,164 ,2147483648 ,2147483648 ,164 ,164 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,164 ,164 ,164 ,164 ,2147483648 ,164 ,2147483648 ,164 ,164 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,164 ,164 ,164 ,2147483648 ,164 ,2147483648 ,164 ,2147483648 ,164 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {54 ,65 ,2147483648 ,63 ,2147483648 ,114 ,62 ,104 ,94 ,2147483648 ,90 ,78 ,2147483648 ,2147483648 ,98 ,93 ,111 ,70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,96 ,107 ,86 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,118 ,108 ,2147483648 ,2147483648 ,67 ,71 ,85 ,92 ,99 ,102 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,55 ,84 ,2147483648 ,79 ,88 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,73 ,105 ,2147483648 ,2147483648 ,75 ,2147483648 ,2147483648 ,103 ,58 ,66 ,95 ,2147483648 ,81 ,2147483648 ,61 ,109 ,87 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,69 ,72 ,2147483648 ,113 ,91 ,83 ,117 ,100 ,60 ,2147483648 ,80 ,115 ,2147483648 ,2147483648 ,2147483648 ,68 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,97 ,112 ,101 ,74 ,82 ,2147483648 ,110 ,64 ,2147483648 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,172 ,2147483648 ,172 ,172 ,2147483648 ,172 ,172 ,2147483648 ,172 ,172 ,2147483648 ,172 ,172 ,172 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,172 ,172 ,172 ,172 ,2147483648 ,2147483648 ,172 ,172 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,172 ,172 ,2147483648 ,2147483648 ,2147483648 ,172 ,172 ,172 ,172 ,172 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,172 ,172 ,172 ,172 ,2147483648 ,2147483648 ,172 ,172 ,172 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,172 ,2147483648 ,2147483648 ,172 ,2147483648 ,172 ,2147483648 ,2147483648 ,172 ,172 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,172 ,172 ,172 ,172 ,2147483648 ,172 ,2147483648 ,172 ,172 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,172 ,172 ,172 ,2147483648 ,172 ,2147483648 ,172 ,2147483648 ,172 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {22 ,22 ,2147483648 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,22 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,24 ,22 ,22 ,22 ,22 ,22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,22 ,2147483648 ,22 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,22 ,22 ,22 ,20 ,2147483648 ,21 ,22 ,18 ,2147483648 ,22 ,22 ,2147483648 ,22 ,22 ,22 ,2147483648 ,2147483648 ,25 ,20 ,22 ,22 ,2147483648 ,2147483648 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,2147483648 ,22 ,22 ,22 ,2147483648 ,22 ,19 ,2147483648 ,2147483648 ,22 ,22 ,20 ,22 ,22 ,22 ,22 ,22 ,22 ,20 ,22 ,22 ,2147483648 ,2147483648 ,2147483648 ,22 ,22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,22 ,23 ,17 ,22 ,22 ,22 ,22 ,22 ,26 ,22 ,22 ,2147483648 ,22 },
- {127 ,127 ,2147483648 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,2147483648 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,127 ,127 ,2147483648 ,126 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,2147483648 ,2147483648 ,127 ,127 ,127 ,127 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,127 ,2147483648 ,127 ,127 ,2147483648 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,2147483648 ,2147483648 ,127 ,127 ,2147483648 ,2147483648 ,127 ,2147483648 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,127 ,2147483648 ,127 },
- {2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
+ {2147483648 ,42 ,42 ,42 ,42 ,42 ,2147483648 ,42 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,42 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,42 ,42 ,42 ,42 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,42 ,42 ,42 ,42 ,42 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,42 ,42 ,42 ,42 ,42 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,42 ,42 ,2147483648 ,41 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,42 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {142 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,2147483648 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,2147483648 ,142 ,2147483648 ,141 ,2147483648 ,142 },
+ {2147483648 ,173 ,173 ,173 ,173 ,173 ,2147483648 ,173 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,173 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,173 ,173 ,173 ,173 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,173 ,173 ,173 ,173 ,173 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,173 ,173 ,173 ,173 ,173 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,173 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,181 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 },
+ {2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 },
+ {2147483648 ,45 ,45 ,45 ,45 ,45 ,2147483648 ,45 ,45 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,45 ,45 ,45 ,45 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,45 ,45 ,45 ,45 ,45 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,45 ,45 ,45 ,45 ,45 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,45 ,45 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,46 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,45 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,47 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,270 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,137 ,103 ,129 ,100 ,2147483648 ,88 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,2147483648 ,114 ,81 ,116 ,101 ,2147483648 ,132 ,2147483648 ,2147483648 ,117 ,74 ,77 ,115 ,80 ,84 ,2147483648 ,89 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,94 ,113 ,119 ,2147483648 ,2147483648 ,105 ,107 ,2147483648 ,87 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,121 ,2147483648 ,131 ,2147483648 ,106 ,108 ,2147483648 ,82 ,127 ,2147483648 ,133 ,95 ,91 ,99 ,111 ,98 ,2147483648 ,97 ,2147483648 ,112 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,109 ,79 ,2147483648 ,102 ,128 ,2147483648 ,2147483648 ,2147483648 ,104 ,76 ,83 ,134 ,124 ,120 ,130 ,73 ,92 ,118 ,2147483648 ,135 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,85 ,93 ,75 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,110 },
+ {2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,242 ,2147483648 ,242 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,183 ,2147483648 ,185 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 },
+ {2147483648 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,9 ,9 ,9 ,9 ,8 ,9 ,9 ,7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,5 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,7 ,9 ,9 ,9 ,7 ,2147483648 ,9 ,9 ,2147483648 ,9 ,7 ,2147483648 ,4 ,9 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,3 ,9 ,10 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,6 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,7 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,58 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,143 },
+ {146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 },
+ {13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,14 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,15 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,40 ,40 ,40 ,40 ,40 ,2147483648 ,40 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,40 ,40 ,40 ,40 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,40 ,40 ,40 ,40 ,40 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,40 ,40 ,40 ,40 ,40 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,40 ,40 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,40 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,163 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,68 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,267 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,268 ,267 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,28 ,28 ,28 ,28 ,28 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,28 ,28 ,28 ,2147483648 ,28 ,28 ,27 ,2147483648 ,28 ,2147483648 ,28 ,28 ,28 ,28 ,28 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,264 ,264 ,264 ,264 ,264 ,2147483648 ,264 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,264 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,264 ,264 ,264 ,264 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,264 ,264 ,264 ,264 ,264 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,264 ,264 ,264 ,264 ,264 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,264 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,263 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 },
+ {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,1 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 },
+ {145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,144 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 },
+ {2147483648 ,237 ,206 ,232 ,203 ,240 ,2147483648 ,228 ,255 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,217 ,2147483648 ,219 ,204 ,2147483648 ,235 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,239 ,197 ,216 ,222 ,239 ,2147483648 ,208 ,210 ,2147483648 ,2147483648 ,239 ,250 ,2147483648 ,226 ,250 ,224 ,238 ,234 ,2147483648 ,209 ,211 ,2147483648 ,2147483648 ,230 ,2147483648 ,236 ,198 ,196 ,202 ,214 ,201 ,2147483648 ,200 ,2147483648 ,215 ,2147483648 ,195 ,2147483648 ,251 ,252 ,2147483648 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,205 ,231 ,2147483648 ,2147483648 ,2147483648 ,207 ,2147483648 ,2147483648 ,2147483648 ,227 ,223 ,233 ,2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,229 ,250 ,2147483648 ,250 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,199 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,213 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,55 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {24 ,22 ,22 ,22 ,22 ,21 ,22 ,22 ,20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,18 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,2147483648 ,2147483648 ,22 ,2147483648 ,2147483648 ,20 ,22 ,22 ,22 ,20 ,2147483648 ,22 ,22 ,2147483648 ,22 ,20 ,2147483648 ,17 ,22 ,2147483648 ,22 ,2147483648 ,22 ,2147483648 ,22 ,22 ,2147483648 ,22 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,26 ,22 ,16 ,22 ,23 ,2147483648 ,2147483648 ,22 ,2147483648 ,2147483648 ,22 ,22 ,19 ,22 ,22 ,2147483648 ,2147483648 ,2147483648 ,22 ,22 ,22 ,22 ,22 ,22 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,2147483648 ,22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,25 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,20 ,2147483648 ,22 ,2147483648 ,22 ,2147483648 ,2147483648 ,2147483648 ,22 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 }
};
const char* KeywordList[]= {
"print",
@@ -1107,8 +1209,7 @@ const char* OperatorsTwoOperandList[]= {
const char* OperatorsOneOperandList[]= {
"@INC",
"@DEC",
-"@REFERENCE",
-"@DEREFERENCE"
+"@REFERENCE"
};
const char* AssignmentOperatorList[]= {
"@ADD_ASSIGNMENT",
@@ -1222,7 +1323,6 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@INC", FUNC_INC},
{"@DEC", FUNC_DEC},
{"@REFERENCE", FUNC_REFERENCE},
-{"@DEREFERENCE", FUNC_DEREFERENCE},
{"@OR", FUNC_OR},
{"@XOR", FUNC_XOR},
{"@AND", FUNC_AND},
@@ -1847,111 +1947,111 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
};
const char* LalrNoneTerminalMap[NONETERMINAL_COUNT]=
{
+"E3",
+"VA3",
+"WstringNumber",
+"B3",
+"EXP",
+"B5",
+"B1",
+"CMP",
+"E13",
+"E5",
+"E10",
+"E4",
+"B4",
+"B6",
+"BE",
+"WSTRING",
"StringNumber",
"VA2",
-"E13",
-"E10",
-"WstringNumber",
"S",
-"B3",
-"CMP",
-"E12",
-"STRING",
-"WSTRING",
"B2",
-"B1",
-"E4",
-"B6",
-"EXP",
-"BE",
-"E3",
-"E5",
-"VA3",
-"B5",
-"B4"
+"E12",
+"STRING"
};
const char* LalrTerminalMap[TERMINAL_COUNT]=
{
-">>",
-"strncmp",
-"==",
-"_decimal",
-"reference",
-">",
-"*",
-"-",
-"low",
-"_hex",
-"_global_id",
-"wcslen",
-"wcsncmp",
-"<=",
-"dq_pa",
-"_function_parameter_id",
-"interlocked_exchange",
-"_local_id",
-"dq",
-"interlocked_exchange_add",
-"_pseudo_register",
-"poi_pa",
-"_string",
-"interlocked_decrement",
-"/",
-"%",
-"^",
"wcscmp",
-"dd",
-"eq_pa",
"db",
-"(",
-"_octal",
-"dd_pa",
-"_binary",
-"eq",
-">=",
-"virtual_to_physical",
-"strcmp",
-"hi_pa",
-"<<",
-"<",
"eb_pa",
-"check_address",
-"$",
-"db_pa",
+"/",
"neg",
-"_wstring",
-"physical_to_virtual",
-"dw_pa",
-"eb",
-"_register",
-"memcmp",
+"$",
"~",
-"ed",
-"_function_id",
-"not",
-",",
-"interlocked_compare_exchange",
-"|",
-"!=",
+"virtual_to_physical",
+"dq",
+"check_address",
+"eb",
+"memcmp",
+"wcsncmp",
+"_string",
+"_function_parameter_id",
+"dw",
+"dq_pa",
+"&&",
"poi",
"hi",
+"hi_pa",
+"strcmp",
+"_function_id",
+"poi_pa",
+"_wstring",
+"eq_pa",
+"ed",
+"_binary",
+"_register",
"disassemble_len32",
-"strlen",
-"low_pa",
-"dw",
-"||",
-"interlocked_increment",
-"disassemble_len64",
+"_pseudo_register",
"ed_pa",
-"&",
-"&&",
+"interlocked_increment",
+"_octal",
"+",
+"*",
+"&",
+",",
+"-",
+"_local_id",
+"_hex",
+"^",
+"_global_id",
+"low_pa",
+"dd",
+"reference",
+"interlocked_exchange_add",
+"||",
+"!=",
+"dd_pa",
+")",
+"_decimal",
+">",
+"<",
+"low",
+"not",
+"eq",
+"interlocked_compare_exchange",
+"strlen",
+"interlocked_exchange",
+"<<",
+">=",
+"(",
+"==",
+">>",
+"wcslen",
+"disassemble_len64",
+"dw_pa",
+"strncmp",
"disassemble_len",
-")"
+"db_pa",
+"|",
+"<=",
+"interlocked_decrement",
+"physical_to_virtual",
+"%"
};
const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,1 ,5 ,9 ,15 ,2147483648 ,2147483648 ,4 ,3 ,12 ,8 ,10 ,2 ,11 ,13 ,2147483648 ,7 ,6 },
+ {11 ,2147483648 ,2147483648 ,5 ,10 ,7 ,3 ,9 ,16 ,13 ,14 ,12 ,6 ,8 ,2 ,2147483648 ,2147483648 ,2147483648 ,1 ,4 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -1973,10 +2073,8 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,5 ,9 ,15 ,2147483648 ,2147483648 ,4 ,3 ,12 ,8 ,10 ,97 ,11 ,13 ,2147483648 ,7 ,6 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -1997,27 +2095,29 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,5 ,10 ,7 ,3 ,9 ,16 ,13 ,14 ,12 ,6 ,8 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,4 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2025,72 +2125,72 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,5 ,9 ,15 ,2147483648 ,2147483648 ,140 ,2147483648 ,12 ,8 ,10 ,2147483648 ,11 ,13 ,2147483648 ,7 ,6 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,141 ,9 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,8 ,10 ,2147483648 ,11 ,13 ,2147483648 ,7 ,6 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,9 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,8 ,10 ,2147483648 ,11 ,13 ,2147483648 ,7 ,142 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,9 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,8 ,10 ,2147483648 ,11 ,13 ,2147483648 ,143 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,9 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,144 ,10 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,145 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,146 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,147 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,148 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,149 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,150 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,159 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,158 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,160 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,163 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,162 ,2147483648 ,2147483648 ,12 ,2147483648 ,161 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,166 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,162 ,2147483648 ,2147483648 ,12 ,2147483648 ,165 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,5 ,10 ,7 ,2147483648 ,9 ,16 ,13 ,14 ,12 ,6 ,8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,141 ,10 ,7 ,2147483648 ,9 ,16 ,13 ,14 ,12 ,6 ,8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,10 ,7 ,2147483648 ,9 ,16 ,13 ,14 ,12 ,142 ,8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,10 ,143 ,2147483648 ,9 ,16 ,13 ,14 ,12 ,2147483648 ,8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,9 ,16 ,13 ,14 ,12 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,153 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,154 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,184 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,168 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,169 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,170 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,171 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,172 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,173 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,174 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,175 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {178 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,176 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,180 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,181 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,182 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,183 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,184 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,186 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,162 ,2147483648 ,2147483648 ,12 ,2147483648 ,185 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,187 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,188 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,189 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,190 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,191 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,192 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,193 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {194 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,176 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,195 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,196 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,197 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,198 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,199 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,200 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,201 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,200 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,202 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,203 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,202 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,203 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {204 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,176 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,205 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,206 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {208 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,207 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,209 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,210 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,204 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,205 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,206 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,207 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,209 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,210 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2109,7 +2209,7 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,211 ,2147483648 ,2147483648 },
+ {2147483648 ,211 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2163,53 +2263,53 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,258 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,259 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,260 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,162 ,2147483648 ,2147483648 ,12 ,2147483648 ,161 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {261 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,176 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,262 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,263 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,264 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,265 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,162 ,2147483648 ,2147483648 ,12 ,2147483648 ,161 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,266 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,267 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {268 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,176 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,269 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,271 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,270 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {271 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,177 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,176 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,272 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,273 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,273 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 },
+ {2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2226,21 +2326,21 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,290 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,290 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,291 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,292 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,293 ,2147483648 ,11 ,13 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {11 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2252,304 +2352,304 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
};
const int LalrActionTable[LALR_STATE_COUNT][LALR_TERMINAL_COUNT]=
{
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,75 ,2147483648 ,2147483648 ,-4 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,78 ,-10 ,2147483648 ,2147483648 ,-10 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,-12 ,-12 ,2147483648 ,2147483648 ,-12 },
- {2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,-13 ,-13 ,2147483648 ,2147483648 ,-13 },
- {2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,-20 },
- {85 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,86 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,-21 },
- {-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,87 ,2147483648 ,-24 },
- {-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,91 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,90 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,-27 },
- {-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,-31 },
- {-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,-32 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,-88 },
- {-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,-85 },
- {-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,-86 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,2147483648 ,2147483648 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,2147483648 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,2147483648 ,2147483648 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,2147483648 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,-91 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,-83 },
- {-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-87 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,-89 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,2147483648 ,2147483648 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,2147483648 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,2147483648 ,2147483648 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,2147483648 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,-84 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,-90 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,2147483648 ,2147483648 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,2147483648 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,-94 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,164 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,164 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,-37 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 },
- {-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,-34 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,164 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,-36 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,-33 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,-35 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,75 ,2147483648 ,2147483648 ,-3 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,78 ,-9 ,2147483648 ,2147483648 ,-9 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,-11 ,-11 ,2147483648 ,2147483648 ,-11 },
- {2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,-16 },
- {2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,-18 },
- {2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,-14 },
- {2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,-19 },
- {2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,-15 },
- {2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,-17 },
- {-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,87 ,2147483648 ,-22 },
- {-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,87 ,2147483648 ,-23 },
- {-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,91 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,90 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,-25 },
- {-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,91 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,90 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,-26 },
- {-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,-28 },
- {-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,-29 },
- {-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,-30 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,213 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,214 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,215 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,216 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,217 },
- {-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,-82 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,218 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,220 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,-92 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,164 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,-49 },
- {-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,-79 },
- {-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,-44 },
- {-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,-57 },
- {-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,-47 },
- {-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,-53 },
- {-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,-39 },
- {-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,-58 },
- {-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,-55 },
- {-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,-43 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,-40 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,-46 },
- {-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,-45 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,164 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,-51 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,-52 },
- {-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,-42 },
- {-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,-56 },
- {-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,-62 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,-59 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,-63 },
- {-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,-60 },
- {-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,-38 },
- {-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,-41 },
- {-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,-61 },
- {-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,-50 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,179 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,-54 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,-48 },
- {-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,-75 },
- {-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,-64 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,278 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,279 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,280 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,281 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,282 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,286 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,289 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 },
- {-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,-73 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,-72 },
- {-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,-66 },
- {-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,-70 },
- {-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,-80 },
- {-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,-71 },
- {-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,-65 },
- {-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,-76 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,-68 },
- {2147483648 ,67 ,2147483648 ,18 ,33 ,2147483648 ,46 ,56 ,41 ,39 ,60 ,22 ,21 ,2147483648 ,71 ,20 ,66 ,19 ,49 ,73 ,28 ,32 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,44 ,36 ,17 ,31 ,24 ,43 ,51 ,63 ,69 ,2147483648 ,27 ,53 ,54 ,2147483648 ,2147483648 ,47 ,29 ,2147483648 ,62 ,34 ,2147483648 ,50 ,57 ,42 ,38 ,35 ,64 ,52 ,72 ,40 ,2147483648 ,55 ,2147483648 ,2147483648 ,59 ,26 ,45 ,70 ,58 ,61 ,2147483648 ,30 ,48 ,37 ,23 ,2147483648 ,25 ,65 ,2147483648 },
- {-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,-67 },
- {-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,-69 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 },
- {-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,-81 },
- {-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,-77 },
- {-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,-74 },
- {-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,-78 }
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,82 ,2147483648 ,-13 ,2147483648 ,83 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,79 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,-20 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,-21 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,-21 ,2147483648 ,-21 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,-24 ,-24 ,87 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,89 ,-27 ,-27 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,90 },
+ {2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 },
+ {2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,2147483648 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,2147483648 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,2147483648 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,2147483648 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,2147483648 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,-94 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,185 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,185 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,185 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,-17 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,-15 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,-16 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,-19 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,-14 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,-18 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,-23 ,-23 ,87 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,-22 ,-22 ,87 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,89 ,-26 ,-26 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,90 },
+ {2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,89 ,-25 ,-25 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,90 },
+ {2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 },
+ {2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 },
+ {2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,213 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,214 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,215 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,216 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,217 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 },
+ {2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 },
+ {2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 },
+ {2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 },
+ {2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 },
+ {2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 },
+ {2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 },
+ {2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 },
+ {2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 },
+ {2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 },
+ {2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 },
+ {2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 },
+ {2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 },
+ {2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 },
+ {2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 },
+ {2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 },
+ {2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 },
+ {2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,185 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 },
+ {2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 },
+ {2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 },
+ {2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,185 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,278 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,280 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,282 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,286 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,289 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 },
+ {2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 },
+ {2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 },
+ {2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 },
+ {2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 },
+ {2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 },
+ {2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 },
+ {2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 },
+ {2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 },
+ {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 },
+ {2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 },
+ {2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 },
+ {2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 }
};
const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{
diff --git a/hyperdbg/script-engine/code/scanner.c b/hyperdbg/script-engine/code/scanner.c
index 0fee92ca..db52bcf3 100644
--- a/hyperdbg/script-engine/code/scanner.c
+++ b/hyperdbg/script-engine/code/scanner.c
@@ -366,6 +366,16 @@ GetToken(char * c, char * str)
Token->Type = SPECIAL_TOKEN;
*c = sgetc(str);
return Token;
+ case '[':
+ strcpy(Token->Value, "[");
+ Token->Type = SPECIAL_TOKEN;
+ *c = sgetc(str);
+ return Token;
+ case ']':
+ strcpy(Token->Value, "]");
+ Token->Type = SPECIAL_TOKEN;
+ *c = sgetc(str);
+ return Token;
case '|':
*c = sgetc(str);
if (*c == '|')
diff --git a/hyperdbg/script-engine/code/script-engine.c b/hyperdbg/script-engine/code/script-engine.c
index 245a6337..b0b66633 100644
--- a/hyperdbg/script-engine/code/script-engine.c
+++ b/hyperdbg/script-engine/code/script-engine.c
@@ -14,7 +14,7 @@
// #define _SCRIPT_ENGINE_LALR_DBG_EN
// #define _SCRIPT_ENGINE_LL1_DBG_EN
-#define _SCRIPT_ENGINE_CODEGEN_DBG_EN
+// #define _SCRIPT_ENGINE_CODEGEN_DBG_EN
//
// Global Variables
@@ -561,6 +561,16 @@ ScriptEngineParse(char * str)
Symbol->Type = SYMBOL_TEMP_TYPE;
Symbol->Value += UserDefinedFunctionHead->MaxTempNumber;
}
+ else if (Symbol->Type == SYMBOL_REFERENCE_LOCAL_ID_TYPE)
+ {
+ Symbol->Type = SYMBOL_REFERENCE_TEMP_TYPE;
+ Symbol->Value += UserDefinedFunctionHead->MaxTempNumber;
+ }
+ else if (Symbol->Type == SYMBOL_DEREFERENCE_LOCAL_ID_TYPE)
+ {
+ Symbol->Type = SYMBOL_DEREFERENCE_TEMP_TYPE;
+ Symbol->Value += UserDefinedFunctionHead->MaxTempNumber;
+ }
else if (Symbol->Type == SYMBOL_VARIABLE_COUNT_TYPE)
{
UINT64 VariableCount = Symbol->Value;
@@ -572,6 +582,16 @@ ScriptEngineParse(char * str)
Symbol->Type = SYMBOL_TEMP_TYPE | (Symbol->Type & 0xffffffff00000000);
Symbol->Value += UserDefinedFunctionHead->MaxTempNumber;
}
+ else if ((Symbol->Type & 0x7fffffff) == SYMBOL_REFERENCE_LOCAL_ID_TYPE)
+ {
+ Symbol->Type = SYMBOL_REFERENCE_LOCAL_ID_TYPE | (Symbol->Type & 0xffffffff00000000);
+ Symbol->Value += UserDefinedFunctionHead->MaxTempNumber;
+ }
+ else if ((Symbol->Type & 0x7fffffff) == SYMBOL_DEREFERENCE_LOCAL_ID_TYPE)
+ {
+ Symbol->Type = SYMBOL_DEREFERENCE_LOCAL_ID_TYPE | (Symbol->Type & 0xffffffff00000000);
+ Symbol->Value += UserDefinedFunctionHead->MaxTempNumber;
+ }
}
i += VariableCount;
}
@@ -817,6 +837,7 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
Symbol->Type = SYMBOL_TEMP_TYPE;
Symbol->Value += CurrentUserDefinedFunction->MaxTempNumber;
}
+
else if (Symbol->Type == SYMBOL_VARIABLE_COUNT_TYPE)
{
UINT64 VariableCount = Symbol->Value;
@@ -1099,8 +1120,8 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
}
else if (!strcmp(Operator->Value, "@MULTIPLE_ASSIGNMENT"))
{
- size_t Op1Capacity = 8;
- size_t Op1Count = 0;
+ int Op1Capacity = 8;
+ int Op1Count = 0;
PSCRIPT_ENGINE_TOKEN * Op1Array = (PSCRIPT_ENGINE_TOKEN *)malloc(sizeof(PSCRIPT_ENGINE_TOKEN) * Op1Capacity);
PSYMBOL Symbol = NewSymbol();
Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
@@ -1145,7 +1166,7 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
Op1Symbol = NewSymbol();
free((void *)Op1Symbol->Value);
- Op1Symbol->Value = NewLocalIdentifier(Op1);
+ Op1Symbol->Value = NewLocalIdentifier(Op1, 8);
SetType(&Op1Symbol->Type, SYMBOL_LOCAL_ID_TYPE);
Pop(MatchedStack);
PushSymbol(CodeBuffer, Op1Symbol);
@@ -1216,6 +1237,141 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
free(Op1Array);
}
+ else if (!strcmp(Operator->Value, "@ARRAY_INDEX_READ") || !strcmp(Operator->Value, "@ARRAY_INDEX_WRITE"))
+ {
+ int ArrayCapacity = 8;
+ int TokenCount = 0;
+ PSCRIPT_ENGINE_TOKEN * TokenArray = (PSCRIPT_ENGINE_TOKEN *)malloc(sizeof(PSCRIPT_ENGINE_TOKEN) * ArrayCapacity);
+ PSCRIPT_ENGINE_TOKEN IdToken;
+ PSYMBOL IdSymbol;
+ int ElementOffset = 0;
+ PSYMBOL Symbol;
+ PSCRIPT_ENGINE_TOKEN OffsetToken;
+ PSYMBOL OffsetSymbol;
+
+ while (MatchedStack->Pointer)
+ {
+ if (TokenCount >= ArrayCapacity)
+ {
+ TokenCount *= 2;
+ TokenArray = (PSCRIPT_ENGINE_TOKEN *)realloc(TokenArray, sizeof(PSCRIPT_ENGINE_TOKEN) * ArrayCapacity);
+ }
+
+ Temp = Top(MatchedStack);
+ if (!strcmp(Top(MatchedStack)->Value, "@ARRAY_DIM_NUMBER"))
+ {
+ Pop(MatchedStack);
+ TokenArray[TokenCount] = Pop(MatchedStack);
+ TokenCount++;
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ IdToken = Pop(MatchedStack);
+ IdSymbol = ToSymbol(IdToken, Error);
+
+ if (IdToken->Type == LOCAL_UNRESOLVED_ID)
+ {
+ *Error = SCRIPT_ENGINE_ERROR_SYNTAX;
+ break;
+ }
+
+ for (int i = 0; i < TokenCount / 2; i++)
+ {
+ PSCRIPT_ENGINE_TOKEN tmp = TokenArray[i];
+ TokenArray[i] = TokenArray[TokenCount - i - 1];
+ TokenArray[TokenCount - i - 1] = tmp;
+ }
+
+ VariableType = (VARIABLE_TYPE *)IdToken->VariableType;
+ Temp = NewTemp();
+ TempSymbol = ToSymbol(Temp, Error);
+ OffsetToken = NewTemp();
+ OffsetSymbol = ToSymbol(OffsetToken, Error);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_MOV;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = 0;
+ PushSymbol(CodeBuffer, Symbol);
+
+ PushSymbol(CodeBuffer, OffsetSymbol);
+
+ for (int i = 0; i < TokenCount; i++)
+ {
+ if (!VariableType->Base)
+ {
+ *Error = SCRIPT_ENGINE_ERROR_SYNTAX;
+ break;
+ }
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_MUL;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = VariableType->Base->Size;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = ToSymbol(TokenArray[i], Error);
+ PushSymbol(CodeBuffer, Symbol);
+
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_ADD;
+ PushSymbol(CodeBuffer, Symbol);
+
+ PushSymbol(CodeBuffer, TempSymbol);
+ PushSymbol(CodeBuffer, OffsetSymbol);
+ PushSymbol(CodeBuffer, OffsetSymbol);
+
+ VariableType = VariableType->Base;
+ }
+
+ if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ {
+ break;
+ }
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_ADD;
+ PushSymbol(CodeBuffer, Symbol);
+
+ PushSymbol(CodeBuffer, IdSymbol);
+ PushSymbol(CodeBuffer, OffsetSymbol);
+ PushSymbol(CodeBuffer, OffsetSymbol);
+
+ if (!strcmp(Operator->Value, "@ARRAY_INDEX_READ"))
+ {
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_POI;
+ PushSymbol(CodeBuffer, Symbol);
+
+ PushSymbol(CodeBuffer, OffsetSymbol);
+ PushSymbol(CodeBuffer, OffsetSymbol);
+ }
+ else if (!strcmp(Operator->Value, "@ARRAY_INDEX_WRITE"))
+ {
+ OffsetToken->Type = DEFERENCE_TEMP;
+ }
+
+ Push(MatchedStack, OffsetToken);
+
+ FreeTemp(Temp);
+ }
else if (!strcmp(Operator->Value, "@MOV"))
{
PushSymbol(CodeBuffer, OperatorSymbol);
@@ -1234,7 +1390,7 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
{
Op1Symbol = NewSymbol();
free((void *)Op1Symbol->Value);
- Op1Symbol->Value = NewLocalIdentifier(Op1);
+ Op1Symbol->Value = NewLocalIdentifier(Op1, 8);
SetType(&Op1Symbol->Type, SYMBOL_LOCAL_ID_TYPE);
}
else
@@ -1298,6 +1454,306 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
{
Push(MatchedStack, CopyToken(Operator));
}
+ else if (!strcmp(Operator->Value, "@ARRAY_DIM_NUMBER") || !strcmp(Operator->Value, "@ARRAY_LEFT_BRACKET") || !strcmp(Operator->Value, "@ARRAY_L_VALUE"))
+ {
+ Push(MatchedStack, CopyToken(Operator));
+ }
+ else if (!strcmp(Operator->Value, "@DEREFERENCE"))
+ {
+ PSYMBOL Symbol;
+
+ Op0 = Pop(MatchedStack);
+ Op1 = Pop(MatchedStack);
+
+ if (Op1->Type == LOCAL_UNRESOLVED_ID)
+ {
+ *Error = SCRIPT_ENGINE_ERROR_SYNTAX;
+ break;
+ }
+
+ if (((VARIABLE_TYPE *)Op1->VariableType)->Size == 4)
+ {
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_ED;
+
+ Op0Symbol = ToSymbol(Op0, Error);
+ Op1Symbol = ToSymbol(Op1, Error);
+
+ Temp = NewTemp(Error);
+ TempSymbol = ToSymbol(Temp, Error);
+
+ PushSymbol(CodeBuffer, Symbol);
+ PushSymbol(CodeBuffer, Op0Symbol);
+ PushSymbol(CodeBuffer, Op1Symbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+ FreeTemp(Temp);
+ }
+ else if (((VARIABLE_TYPE *)Op1->VariableType)->Size == 8)
+ {
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_EQ;
+
+ Op0Symbol = ToSymbol(Op0, Error);
+ Op1Symbol = ToSymbol(Op1, Error);
+
+ Temp = NewTemp(Error);
+ TempSymbol = ToSymbol(Temp, Error);
+
+ PushSymbol(CodeBuffer, Symbol);
+ PushSymbol(CodeBuffer, Op0Symbol);
+ PushSymbol(CodeBuffer, Op1Symbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+ FreeTemp(Temp);
+ }
+
+ else if (((VARIABLE_TYPE *)Op1->VariableType)->Size == 1)
+ {
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_EB;
+
+ Op0Symbol = ToSymbol(Op0, Error);
+ Op1Symbol = ToSymbol(Op1, Error);
+
+ Temp = NewTemp(Error);
+ TempSymbol = ToSymbol(Temp, Error);
+
+ PushSymbol(CodeBuffer, Symbol);
+ PushSymbol(CodeBuffer, Op0Symbol);
+ PushSymbol(CodeBuffer, Op1Symbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+ FreeTemp(Temp);
+ }
+ }
+ else if (!strcmp(Operator->Value, "@ARRAY_DECLARITION"))
+ {
+ int TokenCapacity = 8;
+ int TokenCount = 0;
+ PSCRIPT_ENGINE_TOKEN * TokenArray = (PSCRIPT_ENGINE_TOKEN *)malloc(sizeof(PSCRIPT_ENGINE_TOKEN) * TokenCapacity);
+ PSCRIPT_ENGINE_TOKEN IdToken = NULL;
+ PSYMBOL IdSymbol = NewSymbol();
+ ;
+ VARIABLE_TYPE * VariableType2 = NULL;
+ int Last_ARRAY_DIM_NUMBER_Idx = 0;
+ int ArrayElementCount = 0;
+ PSYMBOL Symbol = NULL;
+ int BaseTypeSize = 0;
+
+ for (int i = MatchedStack->Pointer; i > 0; i--)
+ {
+ Temp = Pop(MatchedStack);
+ if (!strcmp(Temp->Value, "@ARRAY_L_VALUE"))
+ {
+ break;
+ }
+
+ if (TokenCount >= TokenCapacity)
+ {
+ TokenCapacity *= 2;
+ TokenArray = (PSCRIPT_ENGINE_TOKEN *)realloc(TokenArray, sizeof(PSCRIPT_ENGINE_TOKEN) * TokenCapacity);
+ }
+ TokenArray[TokenCount++] = Temp;
+ }
+
+ for (size_t i = 0; i < TokenCount / 2; i++)
+ {
+ PSCRIPT_ENGINE_TOKEN tmp = TokenArray[i];
+ TokenArray[i] = TokenArray[TokenCount - i - 1];
+ TokenArray[TokenCount - i - 1] = tmp;
+ }
+
+ IdToken = Pop(MatchedStack);
+
+ if (MatchedStack->Pointer > 0)
+ {
+ if (Top(MatchedStack)->Type == SCRIPT_VARIABLE_TYPE)
+ {
+ VariableType = HandleType(MatchedStack);
+
+ if (VariableType->Kind == TY_UNKNOWN)
+ {
+ *Error = SCRIPT_ENGINE_ERROR_UNDEFINED_VARIABLE_TYPE;
+ break;
+ }
+ }
+ }
+
+ if (!VariableType)
+ {
+ VariableType = VARIABLE_TYPE_LONG;
+ }
+
+ BaseTypeSize = VariableType->Size;
+
+ for (int i = TokenCount - 1; i >= 0; i--)
+ {
+ if (!strcmp(TokenArray[i]->Value, "@ARRAY_DIM_NUMBER"))
+ {
+ Last_ARRAY_DIM_NUMBER_Idx = i;
+ break;
+ }
+ }
+
+ for (int i = Last_ARRAY_DIM_NUMBER_Idx; i >= 0; i--)
+ {
+ if (!strcmp(TokenArray[i]->Value, "@ARRAY_DIM_NUMBER"))
+ {
+ VariableType2 = calloc(1, sizeof(VARIABLE_TYPE));
+ VariableType2->Kind = TY_ARRAY;
+ VariableType2->Size = VariableType->Size * atoi(TokenArray[i - 1]->Value);
+ VariableType2->Align = VariableType->Align;
+ VariableType2->Base = VariableType;
+ VariableType2->ArrayLen = atoi(TokenArray[i - 1]->Value);
+ VariableType = VariableType2;
+ i--;
+ }
+ }
+
+ if (IdToken->Type == LOCAL_UNRESOLVED_ID)
+ {
+ IdSymbol->Value = NewLocalIdentifier(IdToken, VariableType->Size);
+ SetType(&IdSymbol->Type, SYMBOL_REFERENCE_LOCAL_ID_TYPE);
+ SetLocalIdentifierVariableType(IdToken, (unsigned long long)VariableType);
+ }
+
+ for (int i = Last_ARRAY_DIM_NUMBER_Idx + 1; i < TokenCount; i++)
+ {
+ if (TokenArray[i]->Type != SEMANTIC_RULE)
+ {
+ if ((ArrayElementCount * BaseTypeSize) > VariableType->Size)
+ {
+ *Error = SCRIPT_ENGINE_ERROR_SYNTAX;
+ break;
+ }
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_MUL;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = BaseTypeSize;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = ArrayElementCount;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Temp = NewTemp();
+ TempSymbol = ToSymbol(Temp, Error);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_ADD;
+
+ PushSymbol(CodeBuffer, Symbol);
+ PushSymbol(CodeBuffer, IdSymbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+
+ if (BaseTypeSize == 4)
+ {
+ Symbol->Value = FUNC_ED;
+ }
+ else if (BaseTypeSize == 8)
+ {
+ Symbol->Value = FUNC_EQ;
+ }
+ else if (BaseTypeSize == 1)
+ {
+ Symbol->Value = FUNC_EB;
+ }
+
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = ToSymbol(TokenArray[i], Error);
+ PushSymbol(CodeBuffer, Symbol);
+
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ FreeTemp(Temp);
+
+ ArrayElementCount++;
+ }
+ }
+
+ if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ {
+ break;
+ }
+
+ while ((ArrayElementCount * BaseTypeSize) < VariableType->Size)
+ {
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_MUL;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = BaseTypeSize;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = ArrayElementCount;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Temp = NewTemp();
+ TempSymbol = ToSymbol(Temp, Error);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_ADD;
+
+ PushSymbol(CodeBuffer, Symbol);
+ PushSymbol(CodeBuffer, IdSymbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+
+ if (BaseTypeSize == 4)
+ {
+ Symbol->Value = FUNC_ED;
+ }
+ else if (BaseTypeSize == 8)
+ {
+ Symbol->Value = FUNC_EQ;
+ }
+ else if (BaseTypeSize == 1)
+ {
+ Symbol->Value = FUNC_EB;
+ }
+
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = 0;
+ PushSymbol(CodeBuffer, Symbol);
+
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ FreeTemp(Temp);
+
+ ArrayElementCount++;
+ }
+ }
else if (IsType2Func(Operator))
{
PushSymbol(CodeBuffer, OperatorSymbol);
@@ -1313,8 +1769,9 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
else if (IsType1Func(Operator))
{
PushSymbol(CodeBuffer, OperatorSymbol);
- Op0 = Pop(MatchedStack);
- Op0Symbol = ToSymbol(Op0, Error);
+ Op0 = Pop(MatchedStack);
+ VariableType = (VARIABLE_TYPE *)Op0->VariableType;
+ Op0Symbol = ToSymbol(Op0, Error);
Temp = NewTemp(Error);
Push(MatchedStack, Temp);
@@ -1814,6 +2271,126 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
Handled = TRUE;
}
+
+ else if (((VARIABLE_TYPE *)Op0->VariableType)->Kind == TY_ARRAY && ((VARIABLE_TYPE *)Op1->VariableType)->Kind == TY_ARRAY)
+ {
+ *Error = SCRIPT_ENGINE_ERROR_SYNTAX;
+ Op0 = Pop(MatchedStack);
+ Op1 = Pop(MatchedStack);
+ Handled = TRUE;
+ }
+ else if (((VARIABLE_TYPE *)Op0->VariableType)->Kind == TY_ARRAY && ((VARIABLE_TYPE *)Op1->VariableType)->Kind != TY_ARRAY)
+ {
+ if (!strcmp(Operator->Value, "@SUB"))
+ {
+ *Error = SCRIPT_ENGINE_ERROR_SYNTAX;
+ Op0 = Pop(MatchedStack);
+ Op1 = Pop(MatchedStack);
+ }
+ else
+ {
+ PSYMBOL Symbol = NULL;
+ int VariableBaseSize = 0;
+ VariableType = (VARIABLE_TYPE *)Op0->VariableType;
+ while (VariableType->Base)
+ {
+ VariableType = VariableType->Base;
+ }
+ VariableBaseSize = VariableType->Size;
+
+ Op0 = Pop(MatchedStack);
+ Op1 = Pop(MatchedStack);
+ Op0Symbol = ToSymbol(Op0, Error);
+ Op1Symbol = ToSymbol(Op1, Error);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_MUL;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = VariableBaseSize;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Op1Symbol = ToSymbol(Op1, Error);
+ PushSymbol(CodeBuffer, Op1Symbol);
+
+ Temp = NewTemp(Error);
+ TempSymbol = ToSymbol(Temp, Error);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ PushSymbol(CodeBuffer, OperatorSymbol);
+ Op0Symbol = ToSymbol(Op0, Error);
+ PushSymbol(CodeBuffer, Op0Symbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ Push(MatchedStack, Temp);
+
+ //
+ // Free the operand if it is a temp value
+ //
+ FreeTemp(Op0);
+ FreeTemp(Op1);
+ if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ {
+ break;
+ }
+ }
+ Handled = TRUE;
+ }
+ else if (((VARIABLE_TYPE *)Op0->VariableType)->Kind != TY_ARRAY && ((VARIABLE_TYPE *)Op1->VariableType)->Kind == TY_ARRAY)
+ {
+ PSYMBOL Symbol = NULL;
+ int VariableBaseSize = 0;
+ VariableType = (VARIABLE_TYPE *)Op1->VariableType;
+ while (VariableType->Base)
+ {
+ VariableType = VariableType->Base;
+ }
+ VariableBaseSize = VariableType->Size;
+
+ Op0 = Pop(MatchedStack);
+ Op1 = Pop(MatchedStack);
+ Op0Symbol = ToSymbol(Op0, Error);
+ Op1Symbol = ToSymbol(Op1, Error);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_SEMANTIC_RULE_TYPE;
+ Symbol->Value = FUNC_MUL;
+ PushSymbol(CodeBuffer, Symbol);
+
+ Symbol = NewSymbol();
+ Symbol->Type = SYMBOL_NUM_TYPE;
+ Symbol->Value = VariableBaseSize;
+ PushSymbol(CodeBuffer, Symbol);
+
+ PushSymbol(CodeBuffer, Op0Symbol);
+
+ Temp = NewTemp(Error);
+ TempSymbol = ToSymbol(Temp, Error);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ PushSymbol(CodeBuffer, OperatorSymbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+ PushSymbol(CodeBuffer, Op1Symbol);
+ PushSymbol(CodeBuffer, TempSymbol);
+
+ Push(MatchedStack, Temp);
+
+ //
+ // Free the operand if it is a temp value
+ //
+ FreeTemp(Op0);
+ FreeTemp(Op1);
+ if (*Error != SCRIPT_ENGINE_ERROR_FREE)
+ {
+ break;
+ }
+
+ Handled = TRUE;
+ }
}
if (!Handled)
@@ -1825,7 +2402,8 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
Op1 = Pop(MatchedStack);
Op1Symbol = ToSymbol(Op1, Error);
- Temp = NewTemp(Error);
+ Temp = NewTemp(Error);
+ Temp->VariableType = (unsigned long long)GetCommonVariableType((VARIABLE_TYPE *)Op0->VariableType, (VARIABLE_TYPE *)Op1->VariableType);
Push(MatchedStack, Temp);
TempSymbol = ToSymbol(Temp, Error);
@@ -3137,9 +3715,20 @@ ToSymbol(PSCRIPT_ENGINE_TOKEN Token, PSCRIPT_ENGINE_ERROR_TYPE Error)
return Symbol;
case LOCAL_ID:
+ {
Symbol->Value = GetLocalIdentifierVal(Token);
- SetType(&Symbol->Type, SYMBOL_LOCAL_ID_TYPE);
+
+ if (((VARIABLE_TYPE *)Token->VariableType)->Kind == TY_ARRAY)
+ {
+ SetType(&Symbol->Type, SYMBOL_REFERENCE_LOCAL_ID_TYPE);
+ }
+ else
+ {
+ SetType(&Symbol->Type, SYMBOL_LOCAL_ID_TYPE);
+ }
+
return Symbol;
+ }
case DECIMAL:
Symbol->Value = DecimalToInt(Token->Value);
@@ -3177,8 +3766,18 @@ ToSymbol(PSCRIPT_ENGINE_TOKEN Token, PSCRIPT_ENGINE_ERROR_TYPE Error)
return Symbol;
case TEMP:
+
Symbol->Value = DecimalToInt(Token->Value);
- SetType(&Symbol->Type, SYMBOL_TEMP_TYPE);
+
+ if (((VARIABLE_TYPE *)Token->VariableType)->Kind == TY_ARRAY)
+ {
+ SetType(&Symbol->Type, SYMBOL_REFERENCE_TEMP_TYPE);
+ }
+ else
+ {
+ SetType(&Symbol->Type, SYMBOL_TEMP_TYPE);
+ }
+
return Symbol;
case STRING:
@@ -3194,6 +3793,11 @@ ToSymbol(PSCRIPT_ENGINE_TOKEN Token, PSCRIPT_ENGINE_ERROR_TYPE Error)
SetType(&Symbol->Type, SYMBOL_FUNCTION_PARAMETER_ID_TYPE);
return Symbol;
+ case DEFERENCE_TEMP:
+ Symbol->Value = DecimalToInt(Token->Value);
+ SetType(&Symbol->Type, SYMBOL_DEREFERENCE_TEMP_TYPE);
+ return Symbol;
+
default:
*Error = SCRIPT_ENGINE_ERROR_UNRESOLVED_VARIABLE;
Symbol->Type = INVALID;
@@ -3676,7 +4280,7 @@ GetLocalIdentifierVal(PSCRIPT_ENGINE_TOKEN Token)
CurrentToken = *(((PSCRIPT_ENGINE_TOKEN_LIST)CurrentUserDefinedFunction->IdTable)->Head + i);
if (!strcmp(Token->Value, CurrentToken->Value))
{
- return (int)i;
+ return (int)CurrentToken->VariableMemoryIdx;
}
}
return -1;
@@ -3741,13 +4345,15 @@ GetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token)
* @param Token
* @return int
*/
-int
-NewLocalIdentifier(PSCRIPT_ENGINE_TOKEN Token)
+unsigned long long
+NewLocalIdentifier(PSCRIPT_ENGINE_TOKEN Token, unsigned int VariableSize)
{
- PSCRIPT_ENGINE_TOKEN CopiedToken = CopyToken(Token);
+ PSCRIPT_ENGINE_TOKEN CopiedToken = CopyToken(Token);
+ unsigned int VariableNumber = ((VariableSize + 8 - 1) & ~(8 - 1)) / 8;
+ CopiedToken->VariableMemoryIdx = CurrentUserDefinedFunction->LocalVariableNumber;
+ CurrentUserDefinedFunction->LocalVariableNumber += VariableNumber;
Push(((PSCRIPT_ENGINE_TOKEN_LIST)CurrentUserDefinedFunction->IdTable), CopiedToken);
- CurrentUserDefinedFunction->LocalVariableNumber++;
- return ((PSCRIPT_ENGINE_TOKEN_LIST)CurrentUserDefinedFunction->IdTable)->Pointer - 1;
+ return CopiedToken->VariableMemoryIdx;
}
/**
diff --git a/hyperdbg/script-engine/code/type.c b/hyperdbg/script-engine/code/type.c
index f0e7cee2..52378b37 100644
--- a/hyperdbg/script-engine/code/type.c
+++ b/hyperdbg/script-engine/code/type.c
@@ -163,3 +163,19 @@ HandleType(PSCRIPT_ENGINE_TOKEN_LIST PtokenStack)
}
return Result;
}
+
+VARIABLE_TYPE *
+GetCommonVariableType(VARIABLE_TYPE * Ty1, VARIABLE_TYPE * Ty2)
+{
+ //if (Ty1->Kind == TY_ARRAY)
+ //{
+ // return Ty1;
+ //}
+
+ //if (Ty2->Kind == TY_ARRAY)
+ //{
+ // return Ty2;
+ //}
+
+ return VARIABLE_TYPE_LONG;
+}
\ No newline at end of file
diff --git a/hyperdbg/script-engine/header/common.h b/hyperdbg/script-engine/header/common.h
index 0478ce6e..7164f531 100644
--- a/hyperdbg/script-engine/header/common.h
+++ b/hyperdbg/script-engine/header/common.h
@@ -60,6 +60,7 @@ typedef enum _SCRIPT_ENGINE_TOKEN_TYPE
FUNCTION_ID,
FUNCTION_PARAMETER_ID,
SCRIPT_VARIABLE_TYPE,
+ DEFERENCE_TEMP,
UNKNOWN
} SCRIPT_ENGINE_TOKEN_TYPE;
@@ -73,6 +74,7 @@ typedef struct _SCRIPT_ENGINE_TOKEN
unsigned int Len;
unsigned int MaxLen;
unsigned long long VariableType;
+ unsigned long long VariableMemoryIdx;
} SCRIPT_ENGINE_TOKEN, *PSCRIPT_ENGINE_TOKEN;
/**
diff --git a/hyperdbg/script-engine/header/parse-table.h b/hyperdbg/script-engine/header/parse-table.h
index 4ad41d99..1e9413db 100644
--- a/hyperdbg/script-engine/header/parse-table.h
+++ b/hyperdbg/script-engine/header/parse-table.h
@@ -1,19 +1,19 @@
#pragma once
#ifndef PARSE_TABLE_H
#define PARSE_TABLE_H
-#define RULES_COUNT 247
-#define TERMINAL_COUNT 119
-#define NONETERMINAL_COUNT 49
+#define RULES_COUNT 271
+#define TERMINAL_COUNT 121
+#define NONETERMINAL_COUNT 63
#define START_VARIABLE "S"
#define MAX_RHS_LEN 15
#define KEYWORD_LIST_LENGTH 109
-#define OPERATORS_ONE_OPERAND_LIST_LENGTH 4
+#define OPERATORS_ONE_OPERAND_LIST_LENGTH 3
#define OPERATORS_TWO_OPERAND_LIST_LENGTH 16
#define REGISTER_MAP_LIST_LENGTH 120
#define PSEUDO_REGISTER_MAP_LIST_LENGTH 16
#define SCRIPT_VARIABLE_TYPE_LIST_LENGTH 10
#define ASSIGNMENT_OPERATOR_LIST_LENGTH 10
-#define SEMANTIC_RULES_MAP_LIST_LENGTH 155
+#define SEMANTIC_RULES_MAP_LIST_LENGTH 154
#define THREEOPFUNC1_LENGTH 1
#define THREEOPFUNC2_LENGTH 3
#define TWOOPFUNC1_LENGTH 8
diff --git a/hyperdbg/script-engine/header/script-engine.h b/hyperdbg/script-engine/header/script-engine.h
index 22822bec..a7077df8 100644
--- a/hyperdbg/script-engine/header/script-engine.h
+++ b/hyperdbg/script-engine/header/script-engine.h
@@ -102,8 +102,8 @@ SetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, unsigned long long V
unsigned long long
GetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token);
-int
-NewLocalIdentifier(PSCRIPT_ENGINE_TOKEN PTOKEN);
+unsigned long long
+NewLocalIdentifier(PSCRIPT_ENGINE_TOKEN PTOKEN, unsigned int VariableSize);
int
GetLocalIdentifierVal(PSCRIPT_ENGINE_TOKEN PTOKEN);
diff --git a/hyperdbg/script-engine/header/type.h b/hyperdbg/script-engine/header/type.h
index 999fbbc2..d77e48ca 100644
--- a/hyperdbg/script-engine/header/type.h
+++ b/hyperdbg/script-engine/header/type.h
@@ -31,6 +31,7 @@ typedef struct VARIABLE_TYPE
int Align; // alignment
BOOLEAN IsUnsigned;
struct VARIABLE_TYPE * Base;
+ int ArrayLen;
} VARIABLE_TYPE;
extern VARIABLE_TYPE * VARIABLE_TYPE_UNKNOWN;
@@ -54,4 +55,7 @@ extern VARIABLE_TYPE * VARIABLE_TYPE_LDOUBLE;
VARIABLE_TYPE *
HandleType(PSCRIPT_ENGINE_TOKEN_LIST PtokenStack);
+
+VARIABLE_TYPE*
+GetCommonVariableType(VARIABLE_TYPE* Ty1, VARIABLE_TYPE* Ty2);
#endif
diff --git a/hyperdbg/script-engine/python/Grammar.txt b/hyperdbg/script-engine/python/Grammar.txt
index 9cede47f..180fab41 100644
--- a/hyperdbg/script-engine/python/Grammar.txt
+++ b/hyperdbg/script-engine/python/Grammar.txt
@@ -43,7 +43,7 @@
.VarArgFunc1->printf
.OperatorsTwoOperand->or xor and asr asl add sub mul div mod gt lt egt elt equal neq
-.OperatorsOneOperand->inc dec reference dereference
+.OperatorsOneOperand->inc dec reference
.AssignmentOperator->add_assignment sub_assignment mul_assignment div_assignment mod_assignment asl_assignment asr_assignment and_assignment xor_assignment or_assignment
@@ -83,6 +83,7 @@ STATEMENT2->break @BREAK ;
STATEMENT2->continue @CONTINUE ;
STATEMENT2->VARIABLE_TYPE1 VARIABLE_TYPE2 L_VALUE = EXPRESSION MULTIPLE_ASSIGNMENT ;
STATEMENT2->return RETURN ;
+
RETURN->eps @RETURN_OF_USER_DEFINED_FUNCTION_WITHOUT_VALUE
RETURN->EXPRESSION @RETURN_OF_USER_DEFINED_FUNCTION_WITH_VALUE
@@ -96,6 +97,29 @@ VARIABLE_TYPE2->eps
VARIABLE_TYPE3->VARIABLE_TYPE1 VARIABLE_TYPE2 L_VALUE VARIABLE_TYPE4
VARIABLE_TYPE4->= EXPRESSION MULTIPLE_ASSIGNMENT ;
+VARIABLE_TYPE4->@ARRAY_L_VALUE ARRAY_DIMS = ARRAY_INIT @ARRAY_DECLARITION ;
+
+ARRAY_DIMS->[ CONST_NUMBER @ARRAY_DIM_NUMBER ] ARRAY_DIMS2
+ARRAY_DIMS2->ARRAY_DIMS
+ARRAY_DIMS2->eps
+
+ARRAY_INIT->{ INIT_LIST } @ARRAY_LEFT_BRACKET
+
+INIT_LIST->INIT_ITEM INIT_LIST_TAIL
+
+INIT_ITEM->ARRAY_INIT
+INIT_ITEM->EXPRESSION
+
+INIT_LIST_TAIL->, INIT_LIST_CONT
+INIT_LIST_TAIL->eps
+
+INIT_LIST_CONT->INIT_ITEM INIT_LIST_TAIL
+INIT_LIST_CONT->eps
+
+
+
+
+
# define function
VARIABLE_TYPE4->@START_OF_USER_DEFINED_FUNCTION ( VARIABLE_TYPE5 ) { S2 @END_OF_USER_DEFINED_FUNCTION }
@@ -104,7 +128,19 @@ VARIABLE_TYPE5->VARIABLE_TYPE1 VARIABLE_TYPE2 L_VALUE @FUNCTION_PARAMETER VARIAB
VARIABLE_TYPE6->, VARIABLE_TYPE1 VARIABLE_TYPE2 L_VALUE @FUNCTION_PARAMETER VARIABLE_TYPE6
VARIABLE_TYPE6->eps
-ASSIGNMENT_STATEMENT->L_VALUE ASSIGNMENT_STATEMENT'
+ASSIGNMENT_STATEMENT->* L_VALUE = EXPRESSION @DEREFERENCE
+
+ASSIGNMENT_STATEMENT->L_VALUE ARRAY_DIMS_WRITE_OPT ASSIGNMENT_STATEMENT'
+
+ARRAY_DIMS_WRITE_OPT->ARRAY_DIMS_WRITE
+ARRAY_DIMS_WRITE_OPT->eps
+
+ARRAY_DIMS_WRITE->[ EXPRESSION @ARRAY_DIM_NUMBER ] ARRAY_DIMS_WRITE2
+ARRAY_DIMS_WRITE2->ARRAY_DIMS_WRITE
+ARRAY_DIMS_WRITE2->eps @ARRAY_INDEX_WRITE
+
+
+
ASSIGNMENT_STATEMENT'->++ @INC
ASSIGNMENT_STATEMENT'->-- @DEC
ASSIGNMENT_STATEMENT'->= EXPRESSION MULTIPLE_ASSIGNMENT
@@ -119,6 +155,10 @@ ASSIGNMENT_STATEMENT'->&= EXPRESSION @AND_ASSIGNMENT
ASSIGNMENT_STATEMENT'->^= EXPRESSION @XOR_ASSIGNMENT
ASSIGNMENT_STATEMENT'->|= EXPRESSION @OR_ASSIGNMENT
+
+
+
+
CALL_FUNC_STATEMENT->.OneOpFunc2 ( EXPRESSION @.OneOpFunc2 )
CALL_FUNC_STATEMENT->.VarArgFunc1 ( STRING @VARGSTART VA @.VarArgFunc1 )
CALL_FUNC_STATEMENT->.ZeroOpFunc1 ( @.ZeroOpFunc1 )
@@ -228,16 +268,28 @@ E12->.ThreeOpFunc4 ( WstringNumber , WstringNumber , EXPRESSION @.ThreeOpFunc4 )
E12->( EXPRESSION )
-E12->L_VALUE
+E12->L_VALUE ARRAY_DIMS_READ_OPT
E12->@PUSH _function_id ( VA2 ) @END_OF_CALLING_USER_DEFINED_FUNCTION_WITH_RETURNING_VALUE
+ARRAY_DIMS_READ_OPT->ARRAY_DIMS_READ
+ARRAY_DIMS_READ_OPT->eps
+
+ARRAY_DIMS_READ->[ EXPRESSION @ARRAY_DIM_NUMBER ] ARRAY_DIMS_READ2
+ARRAY_DIMS_READ2->ARRAY_DIMS_READ
+ARRAY_DIMS_READ2->eps @ARRAY_INDEX_READ
+
+
+
+
+
# numbers
-E12->@PUSH _hex
-E12->@PUSH _decimal
-E12->@PUSH _octal
-E12->@PUSH _binary
+CONST_NUMBER->@PUSH _hex
+CONST_NUMBER->@PUSH _decimal
+CONST_NUMBER->@PUSH _octal
+CONST_NUMBER->@PUSH _binary
+E12->CONST_NUMBER
E12->@PUSH _pseudo_register
diff --git a/hyperdbg/script-engine/python/generator.py b/hyperdbg/script-engine/python/generator.py
index 06efe45b..78b98e2c 100644
--- a/hyperdbg/script-engine/python/generator.py
+++ b/hyperdbg/script-engine/python/generator.py
@@ -165,6 +165,10 @@ typedef struct ACTION_BUFFER {
#define SYMBOL_STACK_INDEX_TYPE 15
#define SYMBOL_STACK_BASE_INDEX_TYPE 16
#define SYMBOL_RETURN_VALUE_TYPE 17
+#define SYMBOL_REFERENCE_LOCAL_ID_TYPE 18
+#define SYMBOL_REFERENCE_TEMP_TYPE 19
+#define SYMBOL_DEREFERENCE_LOCAL_ID_TYPE 20
+#define SYMBOL_DEREFERENCE_TEMP_TYPE 21
static const char *const SymbolTypeNames[] = {
"SYMBOL_UNDEFINED",
@@ -184,7 +188,11 @@ static const char *const SymbolTypeNames[] = {
"SYMBOL_FUNCTION_PARAMETER_TYPE",
"SYMBOL_STACK_INDEX_TYPE",
"SYMBOL_STACK_BASE_INDEX_TYPE",
-"SYMBOL_RETURN_VALUE_TYPE"
+"SYMBOL_RETURN_VALUE_TYPE",
+"SYMBOL_REFERENCE_LOCAL_ID_TYPE",
+"SYMBOL_REFERENCE_TEMP_TYPE",
+"SYMBOL_DEREFERENCE_LOCAL_ID_TYPE",
+"SYMBOL_DEREFERENCE_TEMP_TYPE"
};
#define SYMBOL_MEM_VALID_CHECK_MASK (1 << 31)
diff --git a/hyperdbg/script-engine/python/lalr1_parser.py b/hyperdbg/script-engine/python/lalr1_parser.py
index ef7c2cbc..74745376 100644
--- a/hyperdbg/script-engine/python/lalr1_parser.py
+++ b/hyperdbg/script-engine/python/lalr1_parser.py
@@ -44,7 +44,7 @@ class LALR1Parser:
# maximum of "Right Hand Side(Rhs)" length
self.MAXIMUM_RHS_LEN = 0
- self.SPECIAL_TOKENS = ['%', '+', '++', '-', '--', "*", "/", "=", "==", "!=", ",", ";", "(", ")", "{", "}", "|", "||", ">>", ">=", "<<", "<=", "&", "&&", "^"]
+ self.SPECIAL_TOKENS = ['%', '+', '++', '-', '--', "*", "/", "=", "==", "!=", ",", ";", "(", ")", "{", "}", "|", "||", ">>", ">=", "<<", "<=", "&", "&&", "^", "[", "]"]
diff --git a/hyperdbg/script-engine/python/ll1_parser.py b/hyperdbg/script-engine/python/ll1_parser.py
index 968b4e73..aa5b4415 100644
--- a/hyperdbg/script-engine/python/ll1_parser.py
+++ b/hyperdbg/script-engine/python/ll1_parser.py
@@ -49,7 +49,7 @@ class LL1Parser:
self.SPECIAL_TOKENS = ['%', '+', '~', '++', '-', '--', "*", "/", "=", "==", "!=", ",", ";", "(", ")", "{", "}", "|", "||", ">>", ">=", "<<", "<=", "&", "&&", "^",
- "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", "&=", "^=", "|=" ]
+ "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", "&=", "^=", "|=" , "[", "]"]
# INVALID rule indicator
self.INVALID = 0x80000000
diff --git a/hyperdbg/script-eval/code/ScriptEngineEval.c b/hyperdbg/script-eval/code/ScriptEngineEval.c
index 75e30fe6..dd3b39ce 100644
--- a/hyperdbg/script-eval/code/ScriptEngineEval.c
+++ b/hyperdbg/script-eval/code/ScriptEngineEval.c
@@ -150,6 +150,14 @@ GetValue(PGUEST_REGS GuestRegs,
else
return ScriptGeneralRegisters->StackBuffer[ScriptGeneralRegisters->StackBaseIndx + Symbol->Value];
+ case SYMBOL_REFERENCE_TEMP_TYPE:
+
+ return (UINT64)&ScriptGeneralRegisters->StackBuffer[ScriptGeneralRegisters->StackBaseIndx + Symbol->Value];
+
+ case SYMBOL_DEREFERENCE_TEMP_TYPE:
+
+ return *(UINT64 *)ScriptGeneralRegisters->StackBuffer[ScriptGeneralRegisters->StackBaseIndx + Symbol->Value];
+
case SYMBOL_FUNCTION_PARAMETER_ID_TYPE:
if (ReturnReference)
@@ -204,6 +212,10 @@ SetValue(PGUEST_REGS GuestRegs,
ScriptGeneralRegisters->StackBuffer[ScriptGeneralRegisters->StackBaseIndx + Symbol->Value] = Value;
return;
+ case SYMBOL_DEREFERENCE_TEMP_TYPE:
+ *(UINT64 *)ScriptGeneralRegisters->StackBuffer[ScriptGeneralRegisters->StackBaseIndx + Symbol->Value] = Value;
+ return;
+
case SYMBOL_FUNCTION_PARAMETER_ID_TYPE:
ScriptGeneralRegisters->StackBuffer[ScriptGeneralRegisters->StackBaseIndx - 3 - Symbol->Value] = Value;
return;
From 43b0245fa11b5c73ce4cd21d8b8787b86a05f89d Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 21 Oct 2025 12:56:21 +0200
Subject: [PATCH 061/323] fix script variable type
---
hyperdbg/script-engine/code/common.c | 6 ++---
hyperdbg/script-engine/code/scanner.c | 4 ++--
hyperdbg/script-engine/code/script-engine.c | 24 +++++++++----------
hyperdbg/script-engine/header/common.h | 8 ++++++-
hyperdbg/script-engine/header/pch.h | 2 +-
hyperdbg/script-engine/header/script-engine.h | 8 +++----
hyperdbg/script-engine/header/type.h | 5 ----
7 files changed, 29 insertions(+), 28 deletions(-)
diff --git a/hyperdbg/script-engine/code/common.c b/hyperdbg/script-engine/code/common.c
index 5e4b554e..249f6464 100644
--- a/hyperdbg/script-engine/code/common.c
+++ b/hyperdbg/script-engine/code/common.c
@@ -52,7 +52,7 @@ NewUnknownToken()
Token->Type = UNKNOWN;
Token->Len = 0;
Token->MaxLen = TOKEN_VALUE_MAX_LEN;
- Token->VariableType = (unsigned long long)VARIABLE_TYPE_LONG;
+ Token->VariableType = (VARIABLE_TYPE *)VARIABLE_TYPE_LONG;
Token->VariableMemoryIdx = 0;
return Token;
@@ -82,7 +82,7 @@ NewToken(SCRIPT_ENGINE_TOKEN_TYPE Type, char * Value)
Token->Len = Len;
Token->MaxLen = Len;
Token->Value = (char *)calloc(Token->MaxLen + 1, sizeof(char));
- Token->VariableType = (unsigned long long)VARIABLE_TYPE_LONG;
+ Token->VariableType = (VARIABLE_TYPE *)VARIABLE_TYPE_LONG;
Token->VariableMemoryIdx = 0;
if (Token->Value == NULL)
@@ -677,7 +677,7 @@ void
FreeTemp(PSCRIPT_ENGINE_TOKEN Temp)
{
int id = (int)DecimalToInt(Temp->Value);
- if (Temp->Type == TEMP|| Temp->Type == DEFERENCE_TEMP)
+ if (Temp->Type == TEMP || Temp->Type == DEFERENCE_TEMP)
{
CurrentUserDefinedFunction->TempMap[id] = 0;
}
diff --git a/hyperdbg/script-engine/code/scanner.c b/hyperdbg/script-engine/code/scanner.c
index db52bcf3..b01c173b 100644
--- a/hyperdbg/script-engine/code/scanner.c
+++ b/hyperdbg/script-engine/code/scanner.c
@@ -369,12 +369,12 @@ GetToken(char * c, char * str)
case '[':
strcpy(Token->Value, "[");
Token->Type = SPECIAL_TOKEN;
- *c = sgetc(str);
+ *c = sgetc(str);
return Token;
case ']':
strcpy(Token->Value, "]");
Token->Type = SPECIAL_TOKEN;
- *c = sgetc(str);
+ *c = sgetc(str);
return Token;
case '|':
*c = sgetc(str);
diff --git a/hyperdbg/script-engine/code/script-engine.c b/hyperdbg/script-engine/code/script-engine.c
index b0b66633..c20f1275 100644
--- a/hyperdbg/script-engine/code/script-engine.c
+++ b/hyperdbg/script-engine/code/script-engine.c
@@ -1214,11 +1214,11 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
Op1 = Op1Array[i];
if (Op1->Type == LOCAL_UNRESOLVED_ID || Op1->Type == LOCAL_ID)
{
- SetLocalIdentifierVariableType(Op1, (unsigned long long)VariableType);
+ SetLocalIdentifierVariableType(Op1, VariableType);
}
else if (Op1->Type == GLOBAL_UNRESOLVED_ID || Op1->Type == GLOBAL_ID)
{
- SetGlobalIdentifierVariableType(Op1, (unsigned long long)VariableType);
+ SetGlobalIdentifierVariableType(Op1, VariableType);
}
}
@@ -1428,11 +1428,11 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
if (Op1->Type == LOCAL_UNRESOLVED_ID || Op1->Type == LOCAL_ID)
{
- SetLocalIdentifierVariableType(Op1, (unsigned long long)VariableType);
+ SetLocalIdentifierVariableType(Op1, VariableType);
}
else if (Op1->Type == GLOBAL_UNRESOLVED_ID || Op1->Type == GLOBAL_ID)
{
- SetGlobalIdentifierVariableType(Op1, (unsigned long long)VariableType);
+ SetGlobalIdentifierVariableType(Op1, VariableType);
}
}
}
@@ -1615,7 +1615,7 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
{
IdSymbol->Value = NewLocalIdentifier(IdToken, VariableType->Size);
SetType(&IdSymbol->Type, SYMBOL_REFERENCE_LOCAL_ID_TYPE);
- SetLocalIdentifierVariableType(IdToken, (unsigned long long)VariableType);
+ SetLocalIdentifierVariableType(IdToken, VariableType);
}
for (int i = Last_ARRAY_DIM_NUMBER_Idx + 1; i < TokenCount; i++)
@@ -2403,7 +2403,7 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
Op1Symbol = ToSymbol(Op1, Error);
Temp = NewTemp(Error);
- Temp->VariableType = (unsigned long long)GetCommonVariableType((VARIABLE_TYPE *)Op0->VariableType, (VARIABLE_TYPE *)Op1->VariableType);
+ Temp->VariableType = (VARIABLE_TYPE *)GetCommonVariableType((VARIABLE_TYPE *)Op0->VariableType, (VARIABLE_TYPE *)Op1->VariableType);
Push(MatchedStack, Temp);
TempSymbol = ToSymbol(Temp, Error);
@@ -4306,7 +4306,7 @@ NewGlobalIdentifier(PSCRIPT_ENGINE_TOKEN Token)
* @param Token
*/
VOID
-SetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, unsigned long long VariableType)
+SetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, VARIABLE_TYPE * VariableType)
{
PSCRIPT_ENGINE_TOKEN CurrentToken;
for (uintptr_t i = 0; i < GlobalIdTable->Pointer; i++)
@@ -4314,7 +4314,7 @@ SetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, unsigned long long V
CurrentToken = *(GlobalIdTable->Head + i);
if (!strcmp(Token->Value, CurrentToken->Value))
{
- CurrentToken->VariableType = VariableType;
+ CurrentToken->VariableType = (VARIABLE_TYPE *)VariableType;
}
}
}
@@ -4324,7 +4324,7 @@ SetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, unsigned long long V
*
* @param Token
*/
-unsigned long long
+VARIABLE_TYPE *
GetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token)
{
PSCRIPT_ENGINE_TOKEN CurrentToken;
@@ -4362,7 +4362,7 @@ NewLocalIdentifier(PSCRIPT_ENGINE_TOKEN Token, unsigned int VariableSize)
* @param Token
*/
VOID
-SetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, unsigned long long VariableType)
+SetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, VARIABLE_TYPE * VariableType)
{
PSCRIPT_ENGINE_TOKEN CurrentToken;
for (uintptr_t i = 0; i < ((PSCRIPT_ENGINE_TOKEN_LIST)CurrentUserDefinedFunction->IdTable)->Pointer; i++)
@@ -4379,9 +4379,9 @@ SetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, unsigned long long Va
* @brief
*
* @param Token
- * @return unsigned long long
+ * @return VARIABLE_TYPE*
*/
-unsigned long long
+VARIABLE_TYPE *
GetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token)
{
PSCRIPT_ENGINE_TOKEN CurrentToken;
diff --git a/hyperdbg/script-engine/header/common.h b/hyperdbg/script-engine/header/common.h
index 7164f531..3cbdf947 100644
--- a/hyperdbg/script-engine/header/common.h
+++ b/hyperdbg/script-engine/header/common.h
@@ -73,7 +73,7 @@ typedef struct _SCRIPT_ENGINE_TOKEN
char * Value;
unsigned int Len;
unsigned int MaxLen;
- unsigned long long VariableType;
+ VARIABLE_TYPE * VariableType;
unsigned long long VariableMemoryIdx;
} SCRIPT_ENGINE_TOKEN, *PSCRIPT_ENGINE_TOKEN;
@@ -117,6 +117,12 @@ NewTemp(PSCRIPT_ENGINE_ERROR_TYPE);
void
FreeTemp(PSCRIPT_ENGINE_ERROR_TYPE);
+VARIABLE_TYPE *
+HandleType(PSCRIPT_ENGINE_TOKEN_LIST PtokenStack);
+
+VARIABLE_TYPE *
+GetCommonVariableType(VARIABLE_TYPE * Ty1, VARIABLE_TYPE * Ty2);
+
////////////////////////////////////////////////////
// SCRIPT_ENGINE_TOKEN_LIST related functions //
////////////////////////////////////////////////////
diff --git a/hyperdbg/script-engine/header/pch.h b/hyperdbg/script-engine/header/pch.h
index bb2af1da..cd5fdab0 100644
--- a/hyperdbg/script-engine/header/pch.h
+++ b/hyperdbg/script-engine/header/pch.h
@@ -38,13 +38,13 @@
#include "SDK/HyperDbgSdk.h"
#include "SDK/imports/user/HyperDbgSymImports.h"
#include "SDK/headers/HardwareDebugger.h"
+#include "type.h"
#include "common.h"
#include "scanner.h"
#include "globals.h"
#include "../include/SDK/headers/ScriptEngineCommonDefinitions.h"
#include "script-engine.h"
#include "parse-table.h"
-#include "type.h"
#include "hardware.h"
//
diff --git a/hyperdbg/script-engine/header/script-engine.h b/hyperdbg/script-engine/header/script-engine.h
index a7077df8..156e89cf 100644
--- a/hyperdbg/script-engine/header/script-engine.h
+++ b/hyperdbg/script-engine/header/script-engine.h
@@ -97,9 +97,9 @@ int
GetGlobalIdentifierVal(PSCRIPT_ENGINE_TOKEN PTOKEN);
VOID
-SetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, unsigned long long VariableType);
+SetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, VARIABLE_TYPE * VariableType);
-unsigned long long
+VARIABLE_TYPE *
GetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token);
unsigned long long
@@ -109,9 +109,9 @@ int
GetLocalIdentifierVal(PSCRIPT_ENGINE_TOKEN PTOKEN);
VOID
-SetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, unsigned long long VariableType);
+SetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, VARIABLE_TYPE * VariableType);
-unsigned long long
+VARIABLE_TYPE *
GetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token);
int
diff --git a/hyperdbg/script-engine/header/type.h b/hyperdbg/script-engine/header/type.h
index d77e48ca..2e7c1f8b 100644
--- a/hyperdbg/script-engine/header/type.h
+++ b/hyperdbg/script-engine/header/type.h
@@ -53,9 +53,4 @@ extern VARIABLE_TYPE * VARIABLE_TYPE_FLOAT;
extern VARIABLE_TYPE * VARIABLE_TYPE_DOUBLE;
extern VARIABLE_TYPE * VARIABLE_TYPE_LDOUBLE;
-VARIABLE_TYPE *
-HandleType(PSCRIPT_ENGINE_TOKEN_LIST PtokenStack);
-
-VARIABLE_TYPE*
-GetCommonVariableType(VARIABLE_TYPE* Ty1, VARIABLE_TYPE* Ty2);
#endif
From 82540bab5e06918542d75d8d452b822bd113fcef Mon Sep 17 00:00:00 2001
From: xmaple555
Date: Sun, 26 Oct 2025 12:15:41 +0800
Subject: [PATCH 062/323] update array index for boolean expression in script
engine
---
hyperdbg/script-engine/code/parse-table.c | 1872 +++++++++--------
hyperdbg/script-engine/header/parse-table.h | 8 +-
.../python/Boolean_Expression_Grammar.txt | 16 +-
3 files changed, 978 insertions(+), 918 deletions(-)
diff --git a/hyperdbg/script-engine/code/parse-table.c b/hyperdbg/script-engine/code/parse-table.c
index bdcec46d..3f0fc844 100644
--- a/hyperdbg/script-engine/code/parse-table.c
+++ b/hyperdbg/script-engine/code/parse-table.c
@@ -823,259 +823,259 @@ const unsigned int RhsSize[RULES_COUNT]=
};
const char* NoneTerminalMap[NONETERMINAL_COUNT]=
{
-"INIT_ITEM",
-"ARRAY_DIMS_WRITE",
-"ELSIF_STATEMENT",
-"EXPRESSION",
-"E2'",
-"E3",
"INIT_LIST_CONT",
-"VARIABLE_TYPE4",
-"VA3",
-"WstringNumber",
-"VARIABLE_TYPE3",
-"MULTIPLE_ASSIGNMENT2",
-"ARRAY_DIMS_READ2",
-"STRING",
-"CALL_FUNC_STATEMENT",
-"E2",
-"VARIABLE_TYPE6",
-"ARRAY_DIMS_READ_OPT",
-"E3'",
-"E1'",
-"E5",
-"DO_WHILE_STATEMENT",
-"ARRAY_INIT",
-"INIT_LIST_TAIL",
-"STATEMENT",
-"L_VALUE",
-"E0'",
-"VARIABLE_TYPE1",
"ARRAY_DIMS_WRITE2",
-"ELSIF_STATEMENT'",
-"END_OF_IF",
-"E4'",
-"S2",
"INIT_LIST",
-"ARRAY_DIMS2",
-"CONST_NUMBER",
+"VARIABLE_TYPE6",
+"INC_DEC",
+"E12",
+"E4",
+"E0'",
"ARRAY_DIMS",
-"ARRAY_DIMS_READ",
+"E4'",
+"END_OF_IF",
+"DO_WHILE_STATEMENT",
+"MULTIPLE_ASSIGNMENT",
+"ELSE_STATEMENT",
+"E5",
+"E2",
+"E1'",
+"VA3",
"E5'",
-"BOOLEAN_EXPRESSION",
-"INC_DEC'",
+"ARRAY_INIT",
"ASSIGNMENT_STATEMENT",
+"S",
+"MULTIPLE_ASSIGNMENT2",
+"VARIABLE_TYPE5",
+"INIT_LIST_TAIL",
+"ARRAY_DIMS_WRITE_OPT",
+"VA",
+"STATEMENT2",
+"VARIABLE_TYPE3",
+"S2",
+"BOOLEAN_EXPRESSION",
+"EXPRESSION",
+"ARRAY_DIMS_READ_OPT",
+"STRING",
+"IF_STATEMENT",
+"CALL_FUNC_STATEMENT",
+"VA2",
+"SIMPLE_ASSIGNMENT",
+"WSTRING",
+"ARRAY_DIMS2",
+"ARRAY_DIMS_READ2",
"E1",
"ASSIGNMENT_STATEMENT'",
-"FOR_STATEMENT",
-"WSTRING",
-"INC_DEC",
-"StringNumber",
-"VA",
-"WHILE_STATEMENT",
+"ARRAY_DIMS_WRITE",
+"ELSIF_STATEMENT'",
+"E3",
+"ARRAY_DIMS_READ",
+"INIT_ITEM",
"RETURN",
+"VARIABLE_TYPE1",
+"WstringNumber",
+"CONST_NUMBER",
"VARIABLE_TYPE2",
-"MULTIPLE_ASSIGNMENT",
-"IF_STATEMENT",
-"VA2",
-"S",
-"ELSE_STATEMENT",
-"E12",
-"ARRAY_DIMS_WRITE_OPT",
-"STATEMENT2",
-"SIMPLE_ASSIGNMENT",
-"VARIABLE_TYPE5",
-"E4"
+"VARIABLE_TYPE4",
+"ELSIF_STATEMENT",
+"INC_DEC'",
+"WHILE_STATEMENT",
+"L_VALUE",
+"StringNumber",
+"FOR_STATEMENT",
+"E3'",
+"E2'",
+"STATEMENT"
};
const char* TerminalMap[TERMINAL_COUNT]=
{
-"continue",
-"wcsncmp",
-"check_address",
-"strcmp",
-"hi",
-"_function_id",
-"event_trace_instrumentation_step",
-"ed_pa",
-"*",
-"&",
-"^=",
-"]",
-"&=",
-"print",
-"^",
-"low_pa",
-"microsleep",
-"dd_pa",
-"low",
-"do",
-"wcslen",
-"else",
-"++",
-"dw_pa",
-"event_enable",
-"test_statement",
-"db_pa",
-"event_sc",
-"flush",
-"/",
-"event_trace_instrumentation_step_in",
-"$",
-"~",
-"event_trace_step_in",
-"*=",
-"_string",
-"_function_parameter_id",
-"poi",
-"hi_pa",
-"ed",
-"_register",
-"%=",
-"disassemble_len32",
-"interlocked_increment",
-"-=",
-"event_trace_step_out",
-"_local_id",
-"_hex",
-"while",
-"interlocked_exchange_add",
-"_decimal",
-"eq",
-"(",
-"strncmp",
-"=",
-"disassemble_len64",
-"interlocked_decrement",
-";",
-"printf",
-"interlocked_compare_exchange",
-"%",
-"wcscmp",
-"db",
-"rdtscp",
-"neg",
-"virtual_to_physical",
-"dq",
"|=",
-"dw",
-"return",
-"poi_pa",
-"if",
-"rdtsc",
-"break",
-"_pseudo_register",
-"-",
-"memcpy_pa",
-"{",
-"+=",
-"reference",
-"spinlock_unlock",
-"for",
-"not",
-"strlen",
-"<<",
-"}",
-"_wstring",
-"disassemble_len",
-"event_clear",
-"pause",
-"event_inject_error_code",
-"eb_pa",
-"eb",
-"memcmp",
+"_string",
"formats",
-"spinlock_lock_custom_wait",
-"dq_pa",
+"flush",
+"interlocked_decrement",
+"$",
+"not",
+"ed_pa",
+"event_sc",
+"dq",
"<<=",
-"memcpy",
-">>=",
-"eq_pa",
-"_binary",
-"/=",
-"_octal",
-"+",
"_script_variable_type",
-",",
-"spinlock_lock",
-"event_trace_step",
-"event_inject",
+"_decimal",
+"_octal",
+"*=",
+"print",
+"eb",
+"_binary",
+"strlen",
+"eq_pa",
+"}",
+"eb_pa",
+"wcsncmp",
+"_register",
+"]",
+"memcpy_pa",
+"/=",
+"strcmp",
+"_local_id",
+"^",
+"ed",
+"hi",
+"wcslen",
+"_hex",
+"<<",
+"event_trace_step_out",
+"wcscmp",
+"while",
+"-=",
+"microsleep",
+"db",
+"event_clear",
+"~",
+"check_address",
+"dq_pa",
+"-",
"event_disable",
-"[",
-"_global_id",
-"--",
-"dd",
-")",
+">>=",
+"memcmp",
+"printf",
+"interlocked_exchange_add",
+"*",
"interlocked_exchange",
-">>",
+"memcpy",
+"test_statement",
"elsif",
+"low",
+"event_trace_instrumentation_step",
+"disassemble_len64",
+"disassemble_len32",
+"[",
+"interlocked_compare_exchange",
+"rdtsc",
+"spinlock_lock",
+"rdtscp",
+"(",
+")",
+"strncmp",
+"dd",
+"event_enable",
+"if",
+">>",
+"poi",
+"_function_parameter_id",
+";",
+"spinlock_unlock",
+"poi_pa",
+"event_inject",
+"db_pa",
+"=",
+"disassemble_len",
+"&",
+"++",
+"event_inject_error_code",
+"eq",
+"dw",
+"physical_to_virtual",
+"low_pa",
+"{",
+"--",
+"%",
+"dd_pa",
"|",
-"physical_to_virtual"
+"_function_id",
+"^=",
+"event_trace_step_in",
+"reference",
+"event_trace_step",
+"else",
+"dw_pa",
+"spinlock_lock_custom_wait",
+"_wstring",
+"+=",
+"neg",
+"_pseudo_register",
+"break",
+"pause",
+",",
+"interlocked_increment",
+"%=",
+"_global_id",
+"/",
+"virtual_to_physical",
+"event_trace_instrumentation_step_in",
+"do",
+"+",
+"&=",
+"hi_pa",
+"continue",
+"for",
+"return"
};
const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]=
{
- {2147483648 ,42 ,42 ,42 ,42 ,42 ,2147483648 ,42 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,42 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,42 ,42 ,42 ,42 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,42 ,42 ,42 ,42 ,42 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,42 ,42 ,42 ,42 ,42 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,42 ,42 ,2147483648 ,41 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,42 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {142 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,2147483648 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,2147483648 ,142 ,2147483648 ,141 ,2147483648 ,142 },
- {2147483648 ,173 ,173 ,173 ,173 ,173 ,2147483648 ,173 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,173 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,173 ,173 ,173 ,173 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,173 ,173 ,173 ,173 ,173 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,173 ,173 ,173 ,173 ,173 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,173 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,181 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 },
- {2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 },
- {2147483648 ,45 ,45 ,45 ,45 ,45 ,2147483648 ,45 ,45 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,45 ,45 ,45 ,45 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,45 ,45 ,45 ,45 ,45 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,45 ,45 ,45 ,45 ,45 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,45 ,45 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,46 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,45 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,47 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,270 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,137 ,103 ,129 ,100 ,2147483648 ,88 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,2147483648 ,114 ,81 ,116 ,101 ,2147483648 ,132 ,2147483648 ,2147483648 ,117 ,74 ,77 ,115 ,80 ,84 ,2147483648 ,89 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,94 ,113 ,119 ,2147483648 ,2147483648 ,105 ,107 ,2147483648 ,87 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,121 ,2147483648 ,131 ,2147483648 ,106 ,108 ,2147483648 ,82 ,127 ,2147483648 ,133 ,95 ,91 ,99 ,111 ,98 ,2147483648 ,97 ,2147483648 ,112 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,109 ,79 ,2147483648 ,102 ,128 ,2147483648 ,2147483648 ,2147483648 ,104 ,76 ,83 ,134 ,124 ,120 ,130 ,73 ,92 ,118 ,2147483648 ,135 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,85 ,93 ,75 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,110 },
- {2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,242 ,2147483648 ,242 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,183 ,2147483648 ,185 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 },
- {2147483648 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,9 ,9 ,9 ,9 ,8 ,9 ,9 ,7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,5 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,7 ,9 ,9 ,9 ,7 ,2147483648 ,9 ,9 ,2147483648 ,9 ,7 ,2147483648 ,4 ,9 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,3 ,9 ,10 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,6 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,7 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,58 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,143 },
- {146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 },
- {13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,14 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,15 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,13 },
- {2147483648 ,40 ,40 ,40 ,40 ,40 ,2147483648 ,40 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,40 ,40 ,40 ,40 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,40 ,40 ,40 ,40 ,40 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,40 ,40 ,40 ,40 ,40 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,40 ,40 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,40 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,163 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,68 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,267 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,268 ,267 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,28 ,28 ,28 ,28 ,28 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,28 ,28 ,28 ,2147483648 ,28 ,28 ,27 ,2147483648 ,28 ,2147483648 ,28 ,28 ,28 ,28 ,28 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,264 ,264 ,264 ,264 ,264 ,2147483648 ,264 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,264 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,264 ,264 ,264 ,264 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,264 ,264 ,264 ,264 ,264 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,264 ,264 ,264 ,264 ,264 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,264 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,263 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 },
- {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,1 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 },
- {145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,144 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 },
- {2147483648 ,237 ,206 ,232 ,203 ,240 ,2147483648 ,228 ,255 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,217 ,2147483648 ,219 ,204 ,2147483648 ,235 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,239 ,197 ,216 ,222 ,239 ,2147483648 ,208 ,210 ,2147483648 ,2147483648 ,239 ,250 ,2147483648 ,226 ,250 ,224 ,238 ,234 ,2147483648 ,209 ,211 ,2147483648 ,2147483648 ,230 ,2147483648 ,236 ,198 ,196 ,202 ,214 ,201 ,2147483648 ,200 ,2147483648 ,215 ,2147483648 ,195 ,2147483648 ,251 ,252 ,2147483648 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,205 ,231 ,2147483648 ,2147483648 ,2147483648 ,207 ,2147483648 ,2147483648 ,2147483648 ,227 ,223 ,233 ,2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,229 ,250 ,2147483648 ,250 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,199 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,213 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,55 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {24 ,22 ,22 ,22 ,22 ,21 ,22 ,22 ,20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,18 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,2147483648 ,2147483648 ,22 ,2147483648 ,2147483648 ,20 ,22 ,22 ,22 ,20 ,2147483648 ,22 ,22 ,2147483648 ,22 ,20 ,2147483648 ,17 ,22 ,2147483648 ,22 ,2147483648 ,22 ,2147483648 ,22 ,22 ,2147483648 ,22 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,26 ,22 ,16 ,22 ,23 ,2147483648 ,2147483648 ,22 ,2147483648 ,2147483648 ,22 ,22 ,19 ,22 ,22 ,2147483648 ,2147483648 ,2147483648 ,22 ,22 ,22 ,22 ,22 ,22 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,2147483648 ,22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,25 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,20 ,2147483648 ,22 ,2147483648 ,22 ,2147483648 ,2147483648 ,2147483648 ,22 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 }
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,45 ,45 ,45 ,45 ,46 ,45 ,45 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,45 ,45 ,45 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,45 ,45 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,45 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,45 ,2147483648 ,45 ,45 ,2147483648 ,45 ,45 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,45 ,45 ,45 ,45 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 },
+ {58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,40 ,40 ,40 ,40 ,2147483648 ,40 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,40 ,40 ,40 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,40 ,40 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,40 ,2147483648 ,40 ,40 ,2147483648 ,40 ,40 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,40 ,40 ,40 ,40 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,211 ,2147483648 ,205 ,228 ,2147483648 ,201 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,223 ,250 ,231 ,229 ,2147483648 ,227 ,237 ,239 ,2147483648 ,2147483648 ,2147483648 ,232 ,239 ,2147483648 ,222 ,203 ,235 ,250 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,254 ,206 ,221 ,252 ,2147483648 ,2147483648 ,233 ,2147483648 ,226 ,255 ,225 ,2147483648 ,2147483648 ,2147483648 ,204 ,2147483648 ,209 ,208 ,2147483648 ,230 ,195 ,2147483648 ,196 ,238 ,2147483648 ,234 ,199 ,2147483648 ,2147483648 ,2147483648 ,197 ,239 ,2147483648 ,2147483648 ,215 ,2147483648 ,218 ,2147483648 ,207 ,256 ,2147483648 ,2147483648 ,224 ,200 ,213 ,217 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,240 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,202 ,251 ,2147483648 ,2147483648 ,2147483648 ,210 ,2147483648 ,239 ,2147483648 ,214 ,2147483648 ,2147483648 ,253 ,2147483648 ,216 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,144 ,145 ,145 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,0 ,0 ,0 ,2 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,1 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,25 ,2147483648 ,2147483648 ,2147483648 ,22 ,22 ,2147483648 ,22 ,22 ,2147483648 ,22 ,22 ,20 ,2147483648 ,22 ,2147483648 ,22 ,20 ,2147483648 ,22 ,22 ,22 ,2147483648 ,2147483648 ,22 ,22 ,17 ,2147483648 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,2147483648 ,22 ,2147483648 ,22 ,22 ,22 ,20 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,16 ,2147483648 ,22 ,20 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,22 ,22 ,2147483648 ,2147483648 ,2147483648 ,22 ,2147483648 ,21 ,2147483648 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,2147483648 ,2147483648 ,22 ,2147483648 ,23 ,22 ,2147483648 ,22 ,2147483648 ,20 ,2147483648 ,22 ,22 ,18 ,2147483648 ,2147483648 ,22 ,24 ,19 ,26 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,15 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,14 ,2147483648 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,2147483648 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,173 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,173 ,173 ,173 ,173 ,2147483648 ,173 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,173 ,173 ,173 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,173 ,173 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,173 ,2147483648 ,173 ,173 ,2147483648 ,173 ,173 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,173 ,173 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,73 ,84 ,108 ,2147483648 ,102 ,125 ,80 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,120 ,2147483648 ,128 ,126 ,2147483648 ,124 ,137 ,2147483648 ,2147483648 ,136 ,2147483648 ,129 ,2147483648 ,2147483648 ,119 ,100 ,132 ,2147483648 ,2147483648 ,87 ,133 ,2147483648 ,2147483648 ,81 ,95 ,76 ,2147483648 ,103 ,118 ,2147483648 ,75 ,2147483648 ,130 ,82 ,123 ,2147483648 ,122 ,135 ,77 ,2147483648 ,101 ,88 ,106 ,105 ,2147483648 ,127 ,90 ,78 ,91 ,2147483648 ,2147483648 ,131 ,96 ,74 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,79 ,112 ,93 ,115 ,2147483648 ,104 ,2147483648 ,2147483648 ,134 ,121 ,97 ,110 ,114 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,86 ,109 ,85 ,2147483648 ,117 ,92 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,83 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,111 ,89 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,264 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,264 ,264 ,264 ,264 ,2147483648 ,264 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,264 ,264 ,264 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,264 ,264 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,264 ,2147483648 ,264 ,264 ,2147483648 ,264 ,264 ,263 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,264 ,264 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 },
+ {71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,2147483648 ,2147483648 ,64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,143 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,42 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,42 ,42 ,42 ,42 ,2147483648 ,42 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,42 ,42 ,42 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,42 ,42 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,42 ,2147483648 ,42 ,42 ,2147483648 ,42 ,42 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,42 ,42 ,42 ,42 ,41 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,27 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,270 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,248 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,2147483648 ,2147483648 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,141 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,2147483648 ,2147483648 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,2147483648 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,2147483648 ,142 ,2147483648 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,2147483648 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,2147483648 ,142 ,142 ,142 ,2147483648 ,2147483648 ,142 ,142 ,142 ,142 },
+ {166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,268 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,267 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,267 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,7 ,2147483648 ,9 ,2147483648 ,9 ,7 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,4 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,7 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,3 ,2147483648 ,9 ,7 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,8 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,10 ,9 ,2147483648 ,9 ,2147483648 ,7 ,2147483648 ,9 ,9 ,5 ,2147483648 ,2147483648 ,9 ,11 ,6 ,2147483648 }
};
const char* KeywordList[]= {
"print",
@@ -1721,6 +1721,7 @@ const struct _SCRIPT_ENGINE_TOKEN LalrLhs[RULES_COUNT]=
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
{NON_TERMINAL, "E13"},
{NON_TERMINAL, "VA2"},
{NON_TERMINAL, "VA2"},
@@ -1731,7 +1732,12 @@ const struct _SCRIPT_ENGINE_TOKEN LalrLhs[RULES_COUNT]=
{NON_TERMINAL, "StringNumber"},
{NON_TERMINAL, "StringNumber"},
{NON_TERMINAL, "WstringNumber"},
- {NON_TERMINAL, "WstringNumber"}
+ {NON_TERMINAL, "WstringNumber"},
+ {NON_TERMINAL, "ARRAY1"},
+ {NON_TERMINAL, "ARRAY2"},
+ {NON_TERMINAL, "ARRAY3"},
+ {NON_TERMINAL, "ARRAY4"},
+ {NON_TERMINAL, "ARRAY4"}
};
const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN]=
{
@@ -1821,6 +1827,7 @@ const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN]=
{{GLOBAL_ID, "_global_id"},{SEMANTIC_RULE, "@PUSH"}},
{{LOCAL_ID, "_local_id"},{SEMANTIC_RULE, "@PUSH"}},
{{FUNCTION_PARAMETER_ID, "_function_parameter_id"},{SEMANTIC_RULE, "@PUSH"}},
+ {{NON_TERMINAL, "ARRAY1"}},
{{HEX, "_hex"},{SEMANTIC_RULE, "@PUSH"}},
{{DECIMAL, "_decimal"},{SEMANTIC_RULE, "@PUSH"}},
{{OCTAL, "_octal"},{SEMANTIC_RULE, "@PUSH"}},
@@ -1837,7 +1844,12 @@ const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN]=
{{NON_TERMINAL, "EXP"}},
{{NON_TERMINAL, "STRING"}},
{{NON_TERMINAL, "EXP"}},
- {{NON_TERMINAL, "WSTRING"}}
+ {{NON_TERMINAL, "WSTRING"}},
+ {{NON_TERMINAL, "ARRAY2"},{NON_TERMINAL, "ARRAY3"},{NON_TERMINAL, "ARRAY4"},{SEMANTIC_RULE, "@ARRAY_INDEX_READ"}},
+ {{LOCAL_ID, "_local_id"},{SEMANTIC_RULE, "@PUSH"}},
+ {{SPECIAL_TOKEN, "["},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, "]"},{SEMANTIC_RULE, "@ARRAY_DIM_NUMBER"}},
+ {{NON_TERMINAL, "ARRAY3"},{NON_TERMINAL, "ARRAY4"}},
+ {{EPSILON, "eps"}}
};
const unsigned int LalrRhsSize[RULES_COUNT]=
{
@@ -1927,6 +1939,7 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
2,
2,
2,
+1,
2,
2,
2,
@@ -1943,713 +1956,742 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
1,
1,
1,
+1,
+4,
+2,
+4,
+2,
1
};
const char* LalrNoneTerminalMap[NONETERMINAL_COUNT]=
{
-"E3",
-"VA3",
-"WstringNumber",
-"B3",
-"EXP",
-"B5",
-"B1",
-"CMP",
-"E13",
-"E5",
-"E10",
+"E12",
"E4",
-"B4",
+"ARRAY4",
+"ARRAY2",
"B6",
-"BE",
-"WSTRING",
-"StringNumber",
-"VA2",
+"VA3",
+"B5",
"S",
"B2",
-"E12",
-"STRING"
+"CMP",
+"B3",
+"STRING",
+"BE",
+"VA2",
+"WSTRING",
+"E3",
+"E13",
+"EXP",
+"ARRAY1",
+"WstringNumber",
+"B1",
+"B4",
+"E10",
+"StringNumber",
+"ARRAY3",
+"E5"
};
const char* LalrTerminalMap[TERMINAL_COUNT]=
{
+"_string",
+"interlocked_decrement",
+"$",
+"not",
+"ed_pa",
+"dq",
+"_decimal",
+"_octal",
+"eb",
+"_binary",
+"strlen",
+"eq_pa",
+"eb_pa",
+"wcsncmp",
+"_register",
+"]",
+"||",
+"strcmp",
+"_local_id",
+"^",
+"ed",
+"hi",
+"wcslen",
+"_hex",
+"<<",
"wcscmp",
"db",
-"eb_pa",
-"/",
-"neg",
-"$",
"~",
-"virtual_to_physical",
-"dq",
"check_address",
-"eb",
-"memcmp",
-"wcsncmp",
-"_string",
-"_function_parameter_id",
-"dw",
"dq_pa",
-"&&",
-"poi",
-"hi",
-"hi_pa",
-"strcmp",
-"_function_id",
-"poi_pa",
-"_wstring",
-"eq_pa",
-"ed",
-"_binary",
-"_register",
-"disassemble_len32",
-"_pseudo_register",
-"ed_pa",
-"interlocked_increment",
-"_octal",
-"+",
-"*",
-"&",
-",",
"-",
-"_local_id",
-"_hex",
-"^",
-"_global_id",
-"low_pa",
-"dd",
-"reference",
-"interlocked_exchange_add",
-"||",
"!=",
-"dd_pa",
-")",
-"_decimal",
-">",
-"<",
-"low",
-"not",
-"eq",
-"interlocked_compare_exchange",
-"strlen",
-"interlocked_exchange",
-"<<",
-">=",
-"(",
-"==",
-">>",
-"wcslen",
-"disassemble_len64",
-"dw_pa",
-"strncmp",
-"disassemble_len",
-"db_pa",
-"|",
+"memcmp",
"<=",
-"interlocked_decrement",
+"interlocked_exchange_add",
+"*",
+"interlocked_exchange",
+"low",
+"disassemble_len64",
+"disassemble_len32",
+"interlocked_compare_exchange",
+"[",
+"(",
+")",
+"strncmp",
+"dd",
+"&&",
+">>",
+"poi",
+"_function_parameter_id",
+">",
+"poi_pa",
+"db_pa",
+"disassemble_len",
+"&",
+"eq",
+"dw",
"physical_to_virtual",
-"%"
+"low_pa",
+"==",
+"%",
+"dd_pa",
+"|",
+"_function_id",
+"reference",
+"dw_pa",
+"_wstring",
+"neg",
+"_pseudo_register",
+",",
+"interlocked_increment",
+"_global_id",
+">=",
+"/",
+"virtual_to_physical",
+"+",
+"<",
+"hi_pa"
};
const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{
- {11 ,2147483648 ,2147483648 ,5 ,10 ,7 ,3 ,9 ,16 ,13 ,14 ,12 ,6 ,8 ,2 ,2147483648 ,2147483648 ,2147483648 ,1 ,4 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,5 ,10 ,7 ,3 ,9 ,16 ,13 ,14 ,12 ,6 ,8 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,4 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,5 ,10 ,7 ,2147483648 ,9 ,16 ,13 ,14 ,12 ,6 ,8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,141 ,10 ,7 ,2147483648 ,9 ,16 ,13 ,14 ,12 ,6 ,8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,10 ,7 ,2147483648 ,9 ,16 ,13 ,14 ,12 ,142 ,8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,10 ,143 ,2147483648 ,9 ,16 ,13 ,14 ,12 ,2147483648 ,8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,9 ,16 ,13 ,14 ,12 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,153 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,154 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,184 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,200 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,202 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,203 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,204 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,205 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,206 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,207 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,209 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,210 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,211 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,271 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,273 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,290 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {11 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,14 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
+ {15 ,12 ,2147483648 ,18 ,8 ,2147483648 ,7 ,1 ,4 ,9 ,5 ,2147483648 ,2 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,3 ,6 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {111 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,8 ,2147483648 ,7 ,2147483648 ,4 ,9 ,5 ,2147483648 ,113 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,3 ,6 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {117 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {119 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {122 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {135 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,8 ,2147483648 ,7 ,2147483648 ,144 ,9 ,5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,2147483648 ,6 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,8 ,2147483648 ,7 ,2147483648 ,2147483648 ,9 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,2147483648 ,6 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,8 ,2147483648 ,7 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,2147483648 ,146 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,8 ,2147483648 ,147 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,149 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,150 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,151 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,152 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,153 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,154 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,155 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,156 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,157 },
+ {15 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,158 },
+ {15 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,11 ,16 ,162 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,166 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,167 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,168 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,169 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,170 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,171 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,172 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,173 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,174 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,176 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,178 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,179 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,180 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,181 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,182 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,183 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,184 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,186 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,187 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,188 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,189 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,174 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,190 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,174 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,191 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,192 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,193 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,194 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,195 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,196 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,197 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,198 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,199 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,200 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,201 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,202 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,203 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,205 ,11 ,16 ,204 ,17 ,206 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,208 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,205 ,11 ,16 ,209 ,17 ,210 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,211 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,212 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,213 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,214 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,215 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,205 ,11 ,16 ,216 ,17 ,217 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,267 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,268 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,269 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,174 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,270 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,271 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,174 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,272 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,174 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,273 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,274 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,275 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,276 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,277 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,205 ,11 ,16 ,216 ,17 ,278 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,279 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,280 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,281 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,205 ,11 ,16 ,216 ,17 ,282 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,299 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,300 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,301 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,302 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
};
const int LalrActionTable[LALR_STATE_COUNT][LALR_TERMINAL_COUNT]=
{
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,82 ,2147483648 ,-13 ,2147483648 ,83 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,79 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,-20 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,-21 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,-21 ,2147483648 ,-21 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,-24 ,-24 ,87 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,89 ,-27 ,-27 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,90 },
- {2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 },
- {2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,2147483648 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,2147483648 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,2147483648 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,2147483648 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,2147483648 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,-94 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,185 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,185 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,185 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,-17 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,-15 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,-16 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,-19 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,-14 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,-18 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,-23 ,-23 ,87 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,-22 ,-22 ,87 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,89 ,-26 ,-26 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,90 },
- {2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,89 ,-25 ,-25 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,90 },
- {2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 },
- {2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 },
- {2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,213 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,214 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,215 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,216 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,217 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 },
- {2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 },
- {2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 },
- {2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 },
- {2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 },
- {2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,163 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 },
- {2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 },
- {2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 },
- {2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 },
- {2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 },
- {2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 },
- {2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 },
- {2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 },
- {2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 },
- {2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 },
- {2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 },
- {2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 },
- {2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,185 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 },
- {2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 },
- {2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 },
- {2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,185 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,278 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,280 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,282 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,286 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,289 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 },
- {2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 },
- {2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 },
- {2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 },
- {2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 },
- {2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 },
- {2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 },
- {2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 },
- {2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 },
- {64 ,30 ,51 ,2147483648 ,40 ,2147483648 ,53 ,54 ,37 ,69 ,61 ,34 ,72 ,2147483648 ,29 ,73 ,42 ,2147483648 ,20 ,49 ,33 ,28 ,32 ,24 ,2147483648 ,65 ,59 ,17 ,36 ,67 ,52 ,57 ,31 ,58 ,66 ,22 ,48 ,2147483648 ,62 ,56 ,44 ,2147483648 ,39 ,68 ,63 ,19 ,23 ,2147483648 ,2147483648 ,55 ,2147483648 ,70 ,2147483648 ,2147483648 ,47 ,71 ,45 ,27 ,38 ,26 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,41 ,25 ,46 ,18 ,21 ,43 ,2147483648 ,2147483648 ,50 ,35 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 },
- {2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 },
- {2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 },
- {2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 }
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,83 ,2147483648 },
+ {2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 },
+ {2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,87 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 },
+ {2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,90 ,-24 ,2147483648 },
+ {2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,93 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,91 ,2147483648 ,-27 ,-27 ,2147483648 },
+ {2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 },
+ {2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,2147483648 ,30 ,50 ,2147483648 ,2147483648 ,26 ,2147483648 ,19 ,2147483648 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,2147483648 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,2147483648 ,30 ,50 ,2147483648 ,2147483648 ,26 ,2147483648 ,19 ,2147483648 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,2147483648 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,2147483648 ,30 ,50 ,2147483648 ,2147483648 ,26 ,2147483648 ,19 ,2147483648 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,2147483648 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,2147483648 ,30 ,50 ,2147483648 ,2147483648 ,26 ,2147483648 ,19 ,2147483648 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,2147483648 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 },
+ {2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,2147483648 ,30 ,50 ,2147483648 ,2147483648 ,26 ,2147483648 ,19 ,2147483648 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,2147483648 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,-95 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 },
+ {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,207 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,207 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,207 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 },
+ {2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 },
+ {2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 },
+ {2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 },
+ {2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 },
+ {2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 },
+ {2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,90 ,-22 ,2147483648 },
+ {2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,90 ,-23 ,2147483648 },
+ {2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,93 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,91 ,2147483648 ,-26 ,-26 ,2147483648 },
+ {2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,93 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,91 ,2147483648 ,-25 ,-25 ,2147483648 },
+ {2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 },
+ {2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 },
+ {2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 },
+ {2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,-105 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,-93 ,2147483648 },
+ {2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,-108 ,2147483648 },
+ {2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,-107 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 },
+ {2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 },
+ {2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 },
+ {2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 },
+ {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 },
+ {2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 },
+ {2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 },
+ {2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 },
+ {2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 },
+ {2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 },
+ {2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 },
+ {2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 },
+ {2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 },
+ {2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 },
+ {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 },
+ {2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 },
+ {2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 },
+ {2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 },
+ {2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 },
+ {2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 },
+ {2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 },
+ {2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,207 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 },
+ {2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 },
+ {2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,207 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,286 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,289 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,290 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 },
+ {2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 },
+ {2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 },
+ {2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 },
+ {2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 },
+ {2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 },
+ {2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 },
+ {2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 },
+ {2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 },
+ {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 },
+ {2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 },
+ {2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 },
+ {2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 }
};
const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{
@@ -2739,6 +2781,7 @@ const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{SEMANTIC_RULE, "@PUSH"},
{SEMANTIC_RULE, "@PUSH"},
{SEMANTIC_RULE, "@PUSH"},
+ {UNKNOWN, ""},
{SEMANTIC_RULE, "@PUSH"},
{SEMANTIC_RULE, "@PUSH"},
{SEMANTIC_RULE, "@PUSH"},
@@ -2755,5 +2798,10 @@ const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{UNKNOWN, ""},
{UNKNOWN, ""},
{UNKNOWN, ""},
+ {UNKNOWN, ""},
+ {SEMANTIC_RULE, "@ARRAY_INDEX_READ"},
+ {SEMANTIC_RULE, "@PUSH"},
+ {SEMANTIC_RULE, "@ARRAY_DIM_NUMBER"},
+ {UNKNOWN, ""},
{UNKNOWN, ""}
};
diff --git a/hyperdbg/script-engine/header/parse-table.h b/hyperdbg/script-engine/header/parse-table.h
index 1e9413db..d35f96fb 100644
--- a/hyperdbg/script-engine/header/parse-table.h
+++ b/hyperdbg/script-engine/header/parse-table.h
@@ -60,11 +60,11 @@ extern const SYMBOL_MAP PseudoRegisterMapList[];
extern const char* ScriptVariableTypeList[];
-#define LALR_RULES_COUNT 103
-#define LALR_TERMINAL_COUNT 76
-#define LALR_NONTERMINAL_COUNT 22
+#define LALR_RULES_COUNT 109
+#define LALR_TERMINAL_COUNT 78
+#define LALR_NONTERMINAL_COUNT 26
#define LALR_MAX_RHS_LEN 9
-#define LALR_STATE_COUNT 298
+#define LALR_STATE_COUNT 307
extern const struct _SCRIPT_ENGINE_TOKEN LalrLhs[RULES_COUNT];
extern const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN];
extern const unsigned int LalrRhsSize[RULES_COUNT];
diff --git a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
index 3e6c7514..494b36fd 100644
--- a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
+++ b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
@@ -99,7 +99,11 @@ E12->( BE )
E12->_register @PUSH
E12->_global_id @PUSH
E12->_local_id @PUSH
-E12->_function_parameter_id @PUSH
+E12->_function_parameter_id @PUSH
+
+E12->ARRAY1
+
+
# numbers
E12->_hex @PUSH
@@ -108,6 +112,7 @@ E12->_octal @PUSH
E12->_binary @PUSH
E12->_pseudo_register @PUSH
+
E12->E13 ( VA2 ) @END_OF_CALLING_USER_DEFINED_FUNCTION_WITH_RETURNING_VALUE
E13->_function_id @PUSH
@@ -123,4 +128,11 @@ StringNumber->EXP
StringNumber->STRING
WstringNumber->EXP
-WstringNumber->WSTRING
\ No newline at end of file
+WstringNumber->WSTRING
+
+
+ARRAY1->ARRAY2 ARRAY3 ARRAY4 @ARRAY_INDEX_READ
+ARRAY2->_local_id @PUSH
+ARRAY3->[ EXP ] @ARRAY_DIM_NUMBER
+ARRAY4->ARRAY3 ARRAY4
+ARRAY4->eps
From 2158fc18da00faa864b0dc135d4a28eaa5da0560 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 9 Nov 2025 19:52:48 +0100
Subject: [PATCH 063/323] Change version and update changelog
---
CHANGELOG.md | 13 +++++++++++++
hyperdbg/include/SDK/headers/Constants.h | 2 +-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cd26b42e..5bf8ff11 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,19 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.17.0.0] - 2025-11-10
+New release of the HyperDbg Debugger. All credit for this release goes to [@xmaple555](https://github.com/xmaple555).
+
+### Added
+- Added 1D and 2D arrays (multidimensional arrays) in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/variables-and-assignments#multidimensional-array))([link](https://github.com/HyperDbg/HyperDbg/pull/554))
+- Added compound assignments in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/variables-and-assignments#compound-assignment))([link](https://github.com/HyperDbg/HyperDbg/pull/554))
+- Added multiple assignments in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/variables-and-assignments#multiple-assignment))([link](https://github.com/HyperDbg/HyperDbg/pull/554))
+
+### Changed
+- Fix bugs for interpreting 'db_pa, 'dd_pa', 'eb_pa', and 'ed_pa' keywords in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/assumptions-and-evaluations#keywords))([link](https://github.com/HyperDbg/HyperDbg/pull/507))
+- Fix variable types in the script engine ([link](https://github.com/HyperDbg/HyperDbg/commit/43b0245fa11b5c73ce4cd21d8b8787b86a05f89d))
+- Fix and update array index for boolean expressions in the script engine ([link](https://github.com/HyperDbg/HyperDbg/commit/ba2cec3c12c3ff45ddc0004051884983ff62a0b3))
+
## [0.16.0.0] - 2025-09-08
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h
index 461412b6..abed5d72 100644
--- a/hyperdbg/include/SDK/headers/Constants.h
+++ b/hyperdbg/include/SDK/headers/Constants.h
@@ -17,7 +17,7 @@
//////////////////////////////////////////////////
#define VERSION_MAJOR 0
-#define VERSION_MINOR 16
+#define VERSION_MINOR 17
#define VERSION_PATCH 0
//
From 338677a0fbdc4a6e966a8e9dfc54ad920668d881 Mon Sep 17 00:00:00 2001
From: Sina Karvandi
Date: Tue, 2 Dec 2025 15:20:08 +0100
Subject: [PATCH 064/323] Update CONTRIBUTING.md
---
CONTRIBUTING.md | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8b980747..9ab2c389 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -13,15 +13,15 @@ Please make sure to create a [discussion](https://github.com/orgs/HyperDbg/discu
- Troubleshooting problems with running on Hyper-V's nested virtualization.
- Troubleshooting problems with running on VirtualBox's nested virtualization.
- Supporting KDNET (sending data over the network).
-- Enhancing HyperDbg's [Transparent Mode](https://docs.hyperdbg.org/using-hyperdbg/prerequisites/operation-modes#transparent-mode), especially for anti-hypervisor methods.
+- Enhancing HyperDbg's [Transparent Mode](https://docs.hyperdbg.org/using-hyperdbg/prerequisites/operation-modes#transparent-mode). These features should be added as an extension to the [HyperEvade](https://www.vusec.net/projects/hyperevade/) project (e.g., by bypassing [al-khaser](https://github.com/LordNoteworthy/al-khaser) and similar anti-debugging and anti-hypervisor projects).
- Enhancing and adding more features to the ['.pe'](https://docs.hyperdbg.org/commands/meta-commands/.pe) command.
- Adding HyperDbg to the system startup using UEFI.
-- Adding routines to activate and use Last Branch Record (LBR) and Branch Trace Store (BTS).
+- Adding routines to activate and use Last Branch Record (LBR) and Branch Trace Store (BTS) | (In progress).
- Creating a QT-based GUI.
- Creating a SoftICE-style GUI.
- Supporting nested-virtualization on HyperDbg itself.
- Protecting HyperDbg code and memory from modification using VT-x capabilities.
-- Adding support for the Intel Processor Trace (PT).
+- Adding support for the Intel Processor Trace (PT) and event command for detecting coverage.
- Creating a wrapper that automatically interprets the [HyperDbg SDK](https://github.com/HyperDbg/HyperDbg/tree/master/hyperdbg/include/SDK) to GO, RUST, C#, Python, etc.
- Creating syntax highlighting for dslang for different IDEs (VSCode, VIM, etc.).
- Building HyperDbg using LLVM clang.
@@ -33,8 +33,6 @@ Please make sure to create a [discussion](https://github.com/orgs/HyperDbg/discu
- Working on live memory migration and adding support for kernel-mode time travel debugging.
- Integrating the [z3 project](https://github.com/Z3Prover/z3) into HyperDbg and adding commands based on the z3 solver.
- Adding the [Bochs emulator](https://github.com/bochs-emu/Bochs) to HyperDbg.
-- ~~Creating commands to inspect and read details of PCIe devices.~~ Added: [link ][link ]
-- ~~Mitigating the anti-hypervisor method described [here](https://howtohypervise.blogspot.com/2019/01/a-common-missight-in-most-hypervisors.html).~~ [[Fixed](https://github.com/HyperDbg/HyperDbg/pull/497)]
- Creating different examples of how to use the SDK (using different programming languages).
- Debugging and fixing bugs related to HyperDbg's physical serial communication.
- Reading symbol information from modules in memory (currently, HyperDbg opens a file which continues the debugger).
@@ -42,14 +40,14 @@ Please make sure to create a [discussion](https://github.com/orgs/HyperDbg/discu
- Reading the list of modules for the '[lm](https://docs.hyperdbg.org/commands/debugging-commands/lm)' command directly from kernel-mode.
- Detecting and fixing anti-hypervisor methods described [here](https://github.com/Ahora57/MAJESTY-technologies).
- Investigating why the symbols parser (DIA SDK) could not read symbols of the 'kernel32!*'.
-- ~~Fixing the problem with [XSETBV instruction freezing](https://github.com/HyperDbg/HyperDbg/issues/429).~~ [[Fixed](https://github.com/HyperDbg/HyperDbg/pull/491)]
-- Adding an event function that detects coverage.
-- Bypassing [al-khaser](https://github.com/LordNoteworthy/al-khaser).
- Creating the 'alias' command that converts or registers scripts as a command, for example: "alias !list .script list.dbg" (discussion needed).
- Adding support for [Hardware Performance Counters (HPC)](https://en.wikipedia.org/wiki/Hardware_performance_counter).
-
- Any other interesting tasks you might find!
+- ~~Creating commands to inspect and read details of PCIe devices.~~ Added: [link ][link ]
+- ~~Mitigating the anti-hypervisor method described [here](https://howtohypervise.blogspot.com/2019/01/a-common-missight-in-most-hypervisors.html).~~ [[Fixed](https://github.com/HyperDbg/HyperDbg/pull/497)]
+- ~~Fixing the problem with [XSETBV instruction freezing](https://github.com/HyperDbg/HyperDbg/issues/429).~~ [[Fixed](https://github.com/HyperDbg/HyperDbg/pull/491)]
+
This list will be updated frequently.
## Fixing Bugs
From 19437cd6948bf6a5a8cea40d944e72e14890b60c Mon Sep 17 00:00:00 2001
From: Hari Mishal
Date: Tue, 2 Dec 2025 19:08:27 +0100
Subject: [PATCH 065/323] add base code for the hypertrace project
---
hyperdbg/hyperdbg.sln | 8 ++
hyperdbg/hypertrace/CMakeLists.txt | 22 ++++
hyperdbg/hypertrace/code/Tracing.c | 12 ++
hyperdbg/hypertrace/code/UnloadDll.c | 34 +++++
hyperdbg/hypertrace/header/Tracing.h | 25 ++++
hyperdbg/hypertrace/header/UnloadDll.h | 20 +++
hyperdbg/hypertrace/header/pch.h | 51 ++++++++
hyperdbg/hypertrace/hypertrace.def | 6 +
hyperdbg/hypertrace/hypertrace.inf | 77 +++++++++++
hyperdbg/hypertrace/hypertrace.vcxproj | 122 ++++++++++++++++++
.../hypertrace/hypertrace.vcxproj.filters | 62 +++++++++
11 files changed, 439 insertions(+)
create mode 100644 hyperdbg/hypertrace/CMakeLists.txt
create mode 100644 hyperdbg/hypertrace/code/Tracing.c
create mode 100644 hyperdbg/hypertrace/code/UnloadDll.c
create mode 100644 hyperdbg/hypertrace/header/Tracing.h
create mode 100644 hyperdbg/hypertrace/header/UnloadDll.h
create mode 100644 hyperdbg/hypertrace/header/pch.h
create mode 100644 hyperdbg/hypertrace/hypertrace.def
create mode 100644 hyperdbg/hypertrace/hypertrace.inf
create mode 100644 hyperdbg/hypertrace/hypertrace.vcxproj
create mode 100644 hyperdbg/hypertrace/hypertrace.vcxproj.filters
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index e124d57a..678b9c62 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -226,6 +226,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "config", "config", "{035508
include\config\Definition.h = include\config\Definition.h
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hypertrace", "hypertrace\hypertrace.vcxproj", "{9FA45E25-DAEB-4C2D-806C-7908A180195D}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug|x64 = debug|x64
@@ -279,6 +281,12 @@ Global
{B226530A-14B1-40AC-B82E-D9057400E7EE}.debug|x64.Build.0 = debug|x64
{B226530A-14B1-40AC-B82E-D9057400E7EE}.release|x64.ActiveCfg = release|x64
{B226530A-14B1-40AC-B82E-D9057400E7EE}.release|x64.Build.0 = release|x64
+ {9FA45E25-DAEB-4C2D-806C-7908A180195D}.debug|x64.ActiveCfg = debug|x64
+ {9FA45E25-DAEB-4C2D-806C-7908A180195D}.debug|x64.Build.0 = debug|x64
+ {9FA45E25-DAEB-4C2D-806C-7908A180195D}.debug|x64.Deploy.0 = debug|x64
+ {9FA45E25-DAEB-4C2D-806C-7908A180195D}.release|x64.ActiveCfg = release|x64
+ {9FA45E25-DAEB-4C2D-806C-7908A180195D}.release|x64.Build.0 = release|x64
+ {9FA45E25-DAEB-4C2D-806C-7908A180195D}.release|x64.Deploy.0 = release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/hyperdbg/hypertrace/CMakeLists.txt b/hyperdbg/hypertrace/CMakeLists.txt
new file mode 100644
index 00000000..56d3af1d
--- /dev/null
+++ b/hyperdbg/hypertrace/CMakeLists.txt
@@ -0,0 +1,22 @@
+# Code generated by Visual Studio kit, DO NOT EDIT.
+set(SourceFiles
+ "../include/components/spinlock/code/Spinlock.c"
+ "../include/platform/kernel/code/Mem.c"
+ "code/Logging.c"
+ "code/UnloadDll.c"
+ "../include/components/spinlock/header/Spinlock.h"
+ "../include/platform/kernel/header/Environment.h"
+ "../include/platform/kernel/header/Mem.h"
+ "header/Logging.h"
+ "header/pch.h"
+ "header/UnloadDll.h"
+ "hypertrace.def"
+)
+include_directories(
+ "../include"
+ "header"
+)
+wdk_add_library(hypertrace SHARED
+ KMDF 1.15
+ ${SourceFiles}
+)
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
new file mode 100644
index 00000000..fc4e6396
--- /dev/null
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -0,0 +1,12 @@
+/**
+ * @file Tracing.c
+ * @author Hari Mishal (harimishal6@gmail.com)
+ * @brief Message logging and tracing implementation
+ * @details
+ * @version 0.18
+ * @date 2025-12-02
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
diff --git a/hyperdbg/hypertrace/code/UnloadDll.c b/hyperdbg/hypertrace/code/UnloadDll.c
new file mode 100644
index 00000000..be8c9ba6
--- /dev/null
+++ b/hyperdbg/hypertrace/code/UnloadDll.c
@@ -0,0 +1,34 @@
+/**
+ * @file UnloadDll.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Unloading DLL in the target Windows
+ *
+ * @version 0.4
+ * @date 2023-07-06
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+//
+// We'll add these functions, so whenever HyperDbg's driver is unloaded
+// DllUnload will be called to unload this dll from the memory.
+// this way we can remove the HyperDbg after unloading as there is no
+// other module remains loaded in the memory.
+//
+
+NTSTATUS
+DllInitialize(
+ _In_ PUNICODE_STRING RegistryPath)
+{
+ UNREFERENCED_PARAMETER(RegistryPath);
+
+ return STATUS_SUCCESS;
+}
+
+NTSTATUS
+DllUnload(void)
+{
+ return STATUS_SUCCESS;
+}
diff --git a/hyperdbg/hypertrace/header/Tracing.h b/hyperdbg/hypertrace/header/Tracing.h
new file mode 100644
index 00000000..07d818f9
--- /dev/null
+++ b/hyperdbg/hypertrace/header/Tracing.h
@@ -0,0 +1,25 @@
+/**
+ * @file Tracing.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Headers of Message logging and tracing
+ * @details
+ * @version 0.1
+ * @date 2020-04-11
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+
+#pragma once
+
+//////////////////////////////////////////////////
+// Global Variables //
+//////////////////////////////////////////////////
+
+//////////////////////////////////////////////////
+// Structures //
+//////////////////////////////////////////////////
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
diff --git a/hyperdbg/hypertrace/header/UnloadDll.h b/hyperdbg/hypertrace/header/UnloadDll.h
new file mode 100644
index 00000000..c6388ac7
--- /dev/null
+++ b/hyperdbg/hypertrace/header/UnloadDll.h
@@ -0,0 +1,20 @@
+/**
+ * @file UnloadDll.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Headers for unloading DLL in the target Windows
+ *
+ * @version 0.4
+ * @date 2023-07-06
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Exported Functions //
+//////////////////////////////////////////////////
+
+__declspec(dllexport) NTSTATUS DllInitialize(_In_ PUNICODE_STRING RegistryPath);
+
+__declspec(dllexport) NTSTATUS DllUnload(void);
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
new file mode 100644
index 00000000..d9ec55b6
--- /dev/null
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -0,0 +1,51 @@
+/**
+ * @file pch.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Headers of Message logging and tracing
+ * @details
+ * @version 0.2
+ * @date 2023-01-23
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+
+#pragma once
+
+#define _NO_CRT_STDIO_INLINE
+
+#pragma warning(disable : 4201) // Suppress nameless struct/union warning
+
+//
+// Environment headers
+//
+#include "platform/kernel/header/Environment.h"
+
+#ifdef ENV_WINDOWS
+
+//
+// Windows defined functions
+//
+# include
+# include
+# include
+
+#endif // ENV_WINDOWS
+
+//
+// Scope definitions
+//
+#define HYPERDBG_KERNEL_MODE
+#define HYPERDBG_HYPER_LOG
+
+#include "UnloadDll.h"
+#include "SDK/HyperDbgSdk.h"
+#include "SDK/modules/HyperLog.h"
+#include "SDK/imports/kernel/HyperDbgHyperLogImports.h"
+#include "components/spinlock/header/Spinlock.h"
+#include "Tracing.h"
+
+//
+// Platform independent headers
+//
+#include "platform/kernel/header/Mem.h"
diff --git a/hyperdbg/hypertrace/hypertrace.def b/hyperdbg/hypertrace/hypertrace.def
new file mode 100644
index 00000000..54a2d6b2
--- /dev/null
+++ b/hyperdbg/hypertrace/hypertrace.def
@@ -0,0 +1,6 @@
+LIBRARY hypertrace
+
+EXPORTS
+
+ DllInitialize PRIVATE
+ DllUnload PRIVATE
\ No newline at end of file
diff --git a/hyperdbg/hypertrace/hypertrace.inf b/hyperdbg/hypertrace/hypertrace.inf
new file mode 100644
index 00000000..7fe4240f
--- /dev/null
+++ b/hyperdbg/hypertrace/hypertrace.inf
@@ -0,0 +1,77 @@
+;
+; hypertrace.inf
+;
+
+[Version]
+Signature="$WINDOWS NT$"
+Class=System ; TODO: specify appropriate Class
+ClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318} ; TODO: specify appropriate ClassGuid
+Provider=%ManufacturerName%
+CatalogFile=hypertrace.cat
+DriverVer= ; TODO: set DriverVer in stampinf property pages
+PnpLockdown=1
+
+[DestinationDirs]
+DefaultDestDir = 12
+hypertrace_Device_CoInstaller_CopyFiles = 11
+
+[SourceDisksNames]
+1 = %DiskName%,,,""
+
+[SourceDisksFiles]
+hypertrace.sys = 1,,
+WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll=1 ; make sure the number matches with SourceDisksNames
+
+;*****************************************
+; Install Section
+;*****************************************
+
+[Manufacturer]
+%ManufacturerName%=Standard,NT$ARCH$
+
+[Standard.NT$ARCH$]
+%hypertrace.DeviceDesc%=hypertrace_Device, Root\hypertrace ; TODO: edit hw-id
+
+[hypertrace_Device.NT]
+CopyFiles=Drivers_Dir
+
+[Drivers_Dir]
+hypertrace.sys
+
+;-------------- Service installation
+[hypertrace_Device.NT.Services]
+AddService = hypertrace,%SPSVCINST_ASSOCSERVICE%, hypertrace_Service_Inst
+
+; -------------- hypertrace driver install sections
+[hypertrace_Service_Inst]
+DisplayName = %hypertrace.SVCDESC%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 1 ; SERVICE_ERROR_NORMAL
+ServiceBinary = %12%\hypertrace.sys
+
+;
+;--- hypertrace_Device Coinstaller installation ------
+;
+
+[hypertrace_Device.NT.CoInstallers]
+AddReg=hypertrace_Device_CoInstaller_AddReg
+CopyFiles=hypertrace_Device_CoInstaller_CopyFiles
+
+[hypertrace_Device_CoInstaller_AddReg]
+HKR,,CoInstallers32,0x00010000, "WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll,WdfCoInstaller"
+
+[hypertrace_Device_CoInstaller_CopyFiles]
+WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll
+
+[hypertrace_Device.NT.Wdf]
+KmdfService = hypertrace, hypertrace_wdfsect
+[hypertrace_wdfsect]
+KmdfLibraryVersion = $KMDFVERSION$
+
+[Strings]
+SPSVCINST_ASSOCSERVICE= 0x00000002
+ManufacturerName="" ;TODO: Replace with your manufacturer name
+DiskName = "hypertrace Installation Disk"
+hypertrace.DeviceDesc = "hypertrace Device"
+hypertrace.SVCDESC = "hypertrace Service"
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
new file mode 100644
index 00000000..b0848af2
--- /dev/null
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -0,0 +1,122 @@
+
+
+
+
+ debug
+ x64
+
+
+ release
+ x64
+
+
+
+ {9FA45E25-DAEB-4C2D-806C-7908A180195D}
+ {1bc93793-694f-48fe-9372-81e2b05556fd}
+ v4.5
+ 12.0
+ Debug
+ x64
+ hypertrace
+ $(LatestTargetPlatformVersion)
+
+
+
+ Windows10
+ true
+ WindowsKernelModeDriver10.0
+ DynamicLibrary
+ KMDF
+ Universal
+ false
+
+
+ Windows10
+ false
+ WindowsKernelModeDriver10.0
+ DynamicLibrary
+ KMDF
+ Universal
+ false
+
+
+
+
+
+
+
+
+
+
+ DbgengKernelDebugger
+ $(SolutionDir)build\bin\$(Configuration)\
+ $(SolutionDir)build\obj\$(ProjectName)\$(Platform)\$(Configuration)\
+ false
+
+
+ DbgengKernelDebugger
+ $(SolutionDir)build\bin\$(Configuration)\
+ $(SolutionDir)build\obj\$(ProjectName)\$(Platform)\$(Configuration)\
+ false
+
+
+
+ sha256
+
+
+ $(SolutionDir)\include;$(ProjectDir)header;%(AdditionalIncludeDirectories)
+ true
+ Create
+ pch.h
+ stdcpp20
+
+
+ true
+
+ true
+ hypertrace.def
+
+
+
+
+ sha256
+
+
+ $(SolutionDir)\include;$(ProjectDir)header;%(AdditionalIncludeDirectories)
+ true
+ Create
+ pch.h
+ stdcpp20
+ Full
+
+
+ true
+
+ true
+ hypertrace.def
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
new file mode 100644
index 00000000..47593d3d
--- /dev/null
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -0,0 +1,62 @@
+
+
+
+
+ {8E41214B-6785-4CFE-B992-037D68949A14}
+ inf;inv;inx;mof;mc;
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {1ab177b4-9e6c-460e-834a-8fced04b42a3}
+
+
+ {21f0281e-fc2a-4e13-97ac-e4b35a05a31e}
+
+
+
+
+ Driver Files
+
+
+
+
+ code
+
+
+ code
+
+
+ code
+
+
+ code\platform
+
+
+
+
+ header
+
+
+ header
+
+
+ header
+
+
+ header
+
+
+ header\platform
+
+
+ header\platform
+
+
+
\ No newline at end of file
From 8bd8950514974ea545178a0d0586a71220e658b3 Mon Sep 17 00:00:00 2001
From: xmaple21215
Date: Tue, 6 Jan 2026 16:38:22 +0800
Subject: [PATCH 066/323] add include file in script engine
---
.../script-engine/script-engine-wrapper.cpp | 2 +-
hyperdbg/script-engine/code/parse-table.c | 1442 +++++++++--------
hyperdbg/script-engine/code/scanner.c | 17 +
hyperdbg/script-engine/code/script-engine.c | 103 +-
hyperdbg/script-engine/header/common.h | 31 +-
hyperdbg/script-engine/header/parse-table.h | 4 +-
hyperdbg/script-engine/header/pch.h | 1 +
hyperdbg/script-engine/header/scanner.h | 2 +
hyperdbg/script-engine/header/script-engine.h | 4 +-
hyperdbg/script-engine/python/Grammar.txt | 2 +
hyperdbg/script-engine/script-engine.vcxproj | 8 +-
.../script-engine.vcxproj.filters | 6 +
hyperdbg/script-engine/script/fibonacci.ds | 12 +
hyperdbg/script-engine/script/test.ds | 8 +
hyperdbg/script-engine/script_include.c | 135 ++
hyperdbg/script-engine/script_include.h | 13 +
16 files changed, 1037 insertions(+), 753 deletions(-)
create mode 100644 hyperdbg/script-engine/script/fibonacci.ds
create mode 100644 hyperdbg/script-engine/script/test.ds
create mode 100644 hyperdbg/script-engine/script_include.c
create mode 100644 hyperdbg/script-engine/script_include.h
diff --git a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine-wrapper.cpp b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine-wrapper.cpp
index b6d727e4..aa33bab9 100644
--- a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine-wrapper.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine-wrapper.cpp
@@ -357,7 +357,7 @@ ScriptEngineEvalWrapper(PGUEST_REGS GuestRegs,
//
// Run Parser
//
- PSYMBOL_BUFFER CodeBuffer = (PSYMBOL_BUFFER)ScriptEngineParse((char *)Expr.c_str());
+ PSYMBOL_BUFFER CodeBuffer = (PSYMBOL_BUFFER)ScriptEngineParse((char*)Expr.c_str());
#ifdef _SCRIPT_ENGINE_IR_PRINT_EN
//
diff --git a/hyperdbg/script-engine/code/parse-table.c b/hyperdbg/script-engine/code/parse-table.c
index 3f0fc844..8d8fad9e 100644
--- a/hyperdbg/script-engine/code/parse-table.c
+++ b/hyperdbg/script-engine/code/parse-table.c
@@ -14,6 +14,7 @@ const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "STATEMENT"},
{NON_TERMINAL, "STATEMENT"},
{NON_TERMINAL, "STATEMENT"},
+ {NON_TERMINAL, "STATEMENT"},
{NON_TERMINAL, "S2"},
{NON_TERMINAL, "S2"},
{NON_TERMINAL, "S2"},
@@ -288,6 +289,7 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "break"},{SEMANTIC_RULE, "@BREAK"},{SPECIAL_TOKEN, ";"}},
{{KEYWORD, "continue"},{SEMANTIC_RULE, "@CONTINUE"},{SPECIAL_TOKEN, ";"}},
{{NON_TERMINAL, "VARIABLE_TYPE3"}},
+ {{KEYWORD, "#include"},{NON_TERMINAL, "STRING"},{SEMANTIC_RULE, "@INCLUDE"},{SPECIAL_TOKEN, ";"}},
{{NON_TERMINAL, "STATEMENT2"},{NON_TERMINAL, "S2"}},
{{SPECIAL_TOKEN, "{"},{NON_TERMINAL, "STATEMENT2"},{NON_TERMINAL, "S2"},{SPECIAL_TOKEN, "}"}},
{{EPSILON, "eps"}},
@@ -562,6 +564,7 @@ const unsigned int RhsSize[RULES_COUNT]=
3,
3,
1,
+4,
2,
4,
1,
@@ -823,259 +826,260 @@ const unsigned int RhsSize[RULES_COUNT]=
};
const char* NoneTerminalMap[NONETERMINAL_COUNT]=
{
-"INIT_LIST_CONT",
-"ARRAY_DIMS_WRITE2",
-"INIT_LIST",
-"VARIABLE_TYPE6",
-"INC_DEC",
-"E12",
-"E4",
-"E0'",
-"ARRAY_DIMS",
-"E4'",
-"END_OF_IF",
-"DO_WHILE_STATEMENT",
-"MULTIPLE_ASSIGNMENT",
-"ELSE_STATEMENT",
-"E5",
-"E2",
-"E1'",
-"VA3",
-"E5'",
-"ARRAY_INIT",
-"ASSIGNMENT_STATEMENT",
-"S",
-"MULTIPLE_ASSIGNMENT2",
-"VARIABLE_TYPE5",
-"INIT_LIST_TAIL",
-"ARRAY_DIMS_WRITE_OPT",
-"VA",
-"STATEMENT2",
-"VARIABLE_TYPE3",
-"S2",
"BOOLEAN_EXPRESSION",
-"EXPRESSION",
-"ARRAY_DIMS_READ_OPT",
-"STRING",
-"IF_STATEMENT",
-"CALL_FUNC_STATEMENT",
-"VA2",
-"SIMPLE_ASSIGNMENT",
-"WSTRING",
+"END_OF_IF",
"ARRAY_DIMS2",
-"ARRAY_DIMS_READ2",
-"E1",
-"ASSIGNMENT_STATEMENT'",
-"ARRAY_DIMS_WRITE",
-"ELSIF_STATEMENT'",
-"E3",
-"ARRAY_DIMS_READ",
-"INIT_ITEM",
-"RETURN",
-"VARIABLE_TYPE1",
-"WstringNumber",
-"CONST_NUMBER",
-"VARIABLE_TYPE2",
-"VARIABLE_TYPE4",
-"ELSIF_STATEMENT",
-"INC_DEC'",
-"WHILE_STATEMENT",
-"L_VALUE",
-"StringNumber",
-"FOR_STATEMENT",
"E3'",
+"VARIABLE_TYPE1",
+"E5",
+"VA2",
+"VA3",
+"ARRAY_DIMS_READ",
+"ASSIGNMENT_STATEMENT",
+"RETURN",
+"E2",
+"ELSIF_STATEMENT",
+"SIMPLE_ASSIGNMENT",
+"INC_DEC'",
+"INIT_LIST",
+"MULTIPLE_ASSIGNMENT2",
+"WSTRING",
+"INIT_LIST_TAIL",
+"E3",
+"ASSIGNMENT_STATEMENT'",
+"INIT_LIST_CONT",
+"S",
+"MULTIPLE_ASSIGNMENT",
+"E12",
+"E5'",
+"INIT_ITEM",
+"ELSE_STATEMENT",
+"IF_STATEMENT",
+"VARIABLE_TYPE3",
+"WstringNumber",
+"VARIABLE_TYPE4",
+"STATEMENT2",
+"VARIABLE_TYPE5",
+"CONST_NUMBER",
+"S2",
+"DO_WHILE_STATEMENT",
+"ARRAY_DIMS_WRITE",
+"EXPRESSION",
+"E1'",
+"VARIABLE_TYPE2",
+"CALL_FUNC_STATEMENT",
+"FOR_STATEMENT",
+"VA",
"E2'",
-"STATEMENT"
+"WHILE_STATEMENT",
+"ARRAY_DIMS",
+"VARIABLE_TYPE6",
+"ELSIF_STATEMENT'",
+"E4'",
+"E0'",
+"ARRAY_DIMS_READ_OPT",
+"INC_DEC",
+"ARRAY_DIMS_READ2",
+"STRING",
+"ARRAY_DIMS_WRITE_OPT",
+"L_VALUE",
+"E1",
+"E4",
+"StringNumber",
+"ARRAY_DIMS_WRITE2",
+"STATEMENT",
+"ARRAY_INIT"
};
const char* TerminalMap[TERMINAL_COUNT]=
{
-"|=",
-"_string",
-"formats",
-"flush",
-"interlocked_decrement",
-"$",
-"not",
-"ed_pa",
"event_sc",
-"dq",
-"<<=",
-"_script_variable_type",
-"_decimal",
-"_octal",
-"*=",
-"print",
-"eb",
-"_binary",
-"strlen",
-"eq_pa",
-"}",
-"eb_pa",
-"wcsncmp",
-"_register",
-"]",
-"memcpy_pa",
-"/=",
-"strcmp",
-"_local_id",
-"^",
-"ed",
-"hi",
-"wcslen",
-"_hex",
-"<<",
-"event_trace_step_out",
-"wcscmp",
-"while",
-"-=",
-"microsleep",
-"db",
-"event_clear",
-"~",
-"check_address",
-"dq_pa",
-"-",
-"event_disable",
-">>=",
-"memcmp",
-"printf",
-"interlocked_exchange_add",
-"*",
"interlocked_exchange",
-"memcpy",
-"test_statement",
-"elsif",
-"low",
-"event_trace_instrumentation_step",
-"disassemble_len64",
-"disassemble_len32",
-"[",
-"interlocked_compare_exchange",
-"rdtsc",
-"spinlock_lock",
-"rdtscp",
-"(",
-")",
-"strncmp",
-"dd",
-"event_enable",
-"if",
-">>",
-"poi",
-"_function_parameter_id",
-";",
-"spinlock_unlock",
-"poi_pa",
-"event_inject",
-"db_pa",
-"=",
-"disassemble_len",
-"&",
-"++",
-"event_inject_error_code",
-"eq",
-"dw",
-"physical_to_virtual",
-"low_pa",
-"{",
-"--",
-"%",
-"dd_pa",
-"|",
-"_function_id",
-"^=",
-"event_trace_step_in",
-"reference",
-"event_trace_step",
-"else",
-"dw_pa",
"spinlock_lock_custom_wait",
-"_wstring",
-"+=",
-"neg",
-"_pseudo_register",
-"break",
-"pause",
-",",
-"interlocked_increment",
+"_string",
+"rdtsc",
+"_octal",
+"printf",
"%=",
-"_global_id",
-"/",
-"virtual_to_physical",
-"event_trace_instrumentation_step_in",
-"do",
-"+",
-"&=",
+"poi_pa",
+"{",
+"_script_variable_type",
+"formats",
+"dw_pa",
+"event_inject",
+"rdtscp",
+"|=",
+"event_trace_instrumentation_step",
+";",
+"(",
"hi_pa",
+"else",
+"_hex",
+"<<=",
+"eq",
+"event_inject_error_code",
+"wcsncmp",
+"interlocked_compare_exchange",
+"eb_pa",
+"print",
+">>",
+"event_enable",
"continue",
+"dq_pa",
+"dw",
+"-=",
+"/=",
+">>=",
+"test_statement",
+"spinlock_lock",
+"interlocked_decrement",
+"low_pa",
+"_global_id",
+"_decimal",
+"virtual_to_physical",
+"+=",
+"_function_parameter_id",
+"event_trace_step",
+"interlocked_exchange_add",
+"check_address",
+"=",
+"pause",
+"flush",
+"#include",
+"-",
+"[",
+"*=",
+"poi",
+"_function_id",
+"spinlock_unlock",
+",",
+"event_clear",
+"memcpy",
+"wcslen",
+"}",
+"db_pa",
+"strlen",
+"do",
+"db",
+"$",
+"memcmp",
+"while",
+"microsleep",
+"_register",
+"&=",
+"_wstring",
+"disassemble_len32",
+"ed_pa",
+"event_disable",
+"_binary",
+"interlocked_increment",
+"ed",
+"break",
+"strcmp",
+"not",
+"]",
+"wcscmp",
+"event_trace_instrumentation_step_in",
+"*",
+"strncmp",
+"--",
+"dq",
"for",
-"return"
+"&",
+"/",
+"disassemble_len64",
+"|",
+"eq_pa",
+"eb",
+"~",
+"^",
+"_local_id",
+"neg",
+"hi",
+"elsif",
+"dd",
+"physical_to_virtual",
+"low",
+")",
+"^=",
+"++",
+"event_trace_step_out",
+"_pseudo_register",
+"reference",
+"dd_pa",
+"disassemble_len",
+"<<",
+"memcpy_pa",
+"if",
+"%",
+"return",
+"+",
+"event_trace_step_in"
};
const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]=
{
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,45 ,45 ,45 ,45 ,46 ,45 ,45 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,45 ,45 ,45 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,45 ,45 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,45 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,45 ,2147483648 ,45 ,45 ,2147483648 ,45 ,45 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,45 ,45 ,45 ,45 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,45 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,45 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 },
- {58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,40 ,40 ,40 ,40 ,2147483648 ,40 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,40 ,40 ,40 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,40 ,40 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,40 ,2147483648 ,40 ,40 ,2147483648 ,40 ,40 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,40 ,40 ,40 ,40 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,40 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,40 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,211 ,2147483648 ,205 ,228 ,2147483648 ,201 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,223 ,250 ,231 ,229 ,2147483648 ,227 ,237 ,239 ,2147483648 ,2147483648 ,2147483648 ,232 ,239 ,2147483648 ,222 ,203 ,235 ,250 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,254 ,206 ,221 ,252 ,2147483648 ,2147483648 ,233 ,2147483648 ,226 ,255 ,225 ,2147483648 ,2147483648 ,2147483648 ,204 ,2147483648 ,209 ,208 ,2147483648 ,230 ,195 ,2147483648 ,196 ,238 ,2147483648 ,234 ,199 ,2147483648 ,2147483648 ,2147483648 ,197 ,239 ,2147483648 ,2147483648 ,215 ,2147483648 ,218 ,2147483648 ,207 ,256 ,2147483648 ,2147483648 ,224 ,200 ,213 ,217 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,240 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,202 ,251 ,2147483648 ,2147483648 ,2147483648 ,210 ,2147483648 ,239 ,2147483648 ,214 ,2147483648 ,2147483648 ,253 ,2147483648 ,216 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,144 ,145 ,145 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,0 ,0 ,0 ,2 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,1 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,25 ,2147483648 ,2147483648 ,2147483648 ,22 ,22 ,2147483648 ,22 ,22 ,2147483648 ,22 ,22 ,20 ,2147483648 ,22 ,2147483648 ,22 ,20 ,2147483648 ,22 ,22 ,22 ,2147483648 ,2147483648 ,22 ,22 ,17 ,2147483648 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,2147483648 ,22 ,2147483648 ,22 ,22 ,22 ,20 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,16 ,2147483648 ,22 ,20 ,2147483648 ,22 ,22 ,22 ,22 ,2147483648 ,22 ,2147483648 ,2147483648 ,22 ,22 ,22 ,22 ,22 ,2147483648 ,2147483648 ,2147483648 ,22 ,2147483648 ,21 ,2147483648 ,22 ,22 ,22 ,2147483648 ,22 ,22 ,2147483648 ,2147483648 ,22 ,2147483648 ,23 ,22 ,2147483648 ,22 ,2147483648 ,20 ,2147483648 ,22 ,22 ,18 ,2147483648 ,2147483648 ,22 ,24 ,19 ,26 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,15 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,13 ,13 ,13 ,2147483648 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 ,13 ,14 ,2147483648 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 ,13 ,13 ,2147483648 ,2147483648 ,13 ,2147483648 ,13 ,13 ,2147483648 ,13 ,2147483648 ,13 ,2147483648 ,13 ,13 ,13 ,2147483648 ,2147483648 ,13 ,13 ,13 ,13 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,173 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,173 ,173 ,173 ,173 ,2147483648 ,173 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,173 ,173 ,173 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,173 ,173 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,173 ,2147483648 ,173 ,173 ,2147483648 ,173 ,173 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,173 ,173 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,173 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,2147483648 ,173 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,73 ,84 ,108 ,2147483648 ,102 ,125 ,80 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,120 ,2147483648 ,128 ,126 ,2147483648 ,124 ,137 ,2147483648 ,2147483648 ,136 ,2147483648 ,129 ,2147483648 ,2147483648 ,119 ,100 ,132 ,2147483648 ,2147483648 ,87 ,133 ,2147483648 ,2147483648 ,81 ,95 ,76 ,2147483648 ,103 ,118 ,2147483648 ,75 ,2147483648 ,130 ,82 ,123 ,2147483648 ,122 ,135 ,77 ,2147483648 ,101 ,88 ,106 ,105 ,2147483648 ,127 ,90 ,78 ,91 ,2147483648 ,2147483648 ,131 ,96 ,74 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,79 ,112 ,93 ,115 ,2147483648 ,104 ,2147483648 ,2147483648 ,134 ,121 ,97 ,110 ,114 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,86 ,109 ,85 ,2147483648 ,117 ,92 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,83 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,111 ,89 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,264 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,264 ,264 ,264 ,264 ,2147483648 ,264 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,264 ,264 ,264 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,264 ,264 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,264 ,2147483648 ,264 ,264 ,2147483648 ,264 ,264 ,263 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,264 ,264 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,264 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,2147483648 ,264 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 },
- {71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,2147483648 ,2147483648 ,64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,143 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,42 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,42 ,42 ,42 ,42 ,2147483648 ,42 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,42 ,42 ,42 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,42 ,42 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,42 ,2147483648 ,42 ,42 ,2147483648 ,42 ,42 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,42 ,42 ,42 ,42 ,41 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,42 ,2147483648 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,2147483648 ,42 ,2147483648 ,42 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,27 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,28 ,28 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,28 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,28 ,2147483648 ,28 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,270 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,248 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,2147483648 ,2147483648 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,142 ,141 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,2147483648 ,2147483648 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,2147483648 ,142 ,2147483648 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,2147483648 ,142 ,2147483648 ,142 ,2147483648 ,142 ,142 ,142 ,142 ,142 ,142 ,2147483648 ,2147483648 ,142 ,2147483648 ,142 ,142 ,2147483648 ,142 ,2147483648 ,142 ,2147483648 ,142 ,142 ,142 ,2147483648 ,2147483648 ,142 ,142 ,142 ,142 },
- {166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,268 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,267 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,267 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,7 ,2147483648 ,9 ,2147483648 ,9 ,7 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,4 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,7 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,3 ,2147483648 ,9 ,7 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,8 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,10 ,9 ,2147483648 ,9 ,2147483648 ,7 ,2147483648 ,9 ,9 ,5 ,2147483648 ,2147483648 ,9 ,11 ,6 ,2147483648 }
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,2147483648 ,147 ,2147483648 ,147 ,147 ,2147483648 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,191 ,2147483648 ,2147483648 ,191 ,191 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,191 ,191 ,2147483648 ,191 ,2147483648 ,191 ,2147483648 ,191 ,191 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,191 ,191 ,191 ,191 ,2147483648 ,191 ,2147483648 ,191 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,191 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,191 ,191 ,2147483648 ,191 ,2147483648 ,191 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,191 ,191 ,2147483648 ,191 ,191 ,191 ,2147483648 ,191 ,191 ,2147483648 ,191 ,2147483648 ,191 ,191 ,2147483648 ,191 ,2147483648 ,191 ,2147483648 ,191 ,2147483648 ,191 ,191 ,191 ,2147483648 ,191 ,191 ,191 ,2147483648 ,191 ,191 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,191 ,191 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 },
+ {2147483648 ,265 ,2147483648 ,2147483648 ,265 ,265 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,265 ,265 ,2147483648 ,265 ,2147483648 ,265 ,2147483648 ,265 ,265 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,265 ,265 ,265 ,265 ,2147483648 ,265 ,2147483648 ,265 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,265 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,265 ,265 ,2147483648 ,265 ,2147483648 ,265 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,265 ,265 ,2147483648 ,265 ,265 ,265 ,2147483648 ,265 ,265 ,2147483648 ,265 ,2147483648 ,265 ,265 ,2147483648 ,265 ,2147483648 ,265 ,2147483648 ,265 ,2147483648 ,265 ,265 ,265 ,2147483648 ,265 ,265 ,265 ,2147483648 ,265 ,265 ,265 ,264 ,2147483648 ,2147483648 ,2147483648 ,265 ,265 ,265 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,28 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 },
+ {2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 },
+ {143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,2147483648 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,2147483648 ,2147483648 ,2147483648 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,2147483648 ,143 ,2147483648 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,142 ,143 ,143 ,143 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,161 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,166 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,64 ,66 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,71 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,47 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 },
+ {0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2 ,0 ,0 ,0 ,0 ,2 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,226 ,2147483648 ,2147483648 ,196 ,251 ,2147483648 ,2147483648 ,216 ,2147483648 ,2147483648 ,2147483648 ,221 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,239 ,217 ,2147483648 ,251 ,2147483648 ,225 ,2147483648 ,238 ,231 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,212 ,218 ,240 ,251 ,215 ,2147483648 ,240 ,2147483648 ,227 ,207 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,198 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,219 ,232 ,2147483648 ,199 ,2147483648 ,234 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,209 ,229 ,2147483648 ,251 ,211 ,223 ,2147483648 ,233 ,206 ,2147483648 ,237 ,2147483648 ,256 ,235 ,2147483648 ,202 ,2147483648 ,257 ,2147483648 ,210 ,2147483648 ,230 ,224 ,255 ,2147483648 ,240 ,203 ,204 ,2147483648 ,200 ,214 ,205 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,213 ,220 ,208 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,192 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,193 ,2147483648 ,195 ,2147483648 },
+ {2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,42 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 },
+ {146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,145 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,271 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,26 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,25 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,21 ,2147483648 ,23 ,2147483648 ,21 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,22 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,19 ,23 ,2147483648 ,23 ,18 ,23 ,21 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,24 ,23 ,23 ,2147483648 ,23 ,23 ,21 ,23 ,2147483648 ,23 ,20 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,21 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,17 ,2147483648 ,27 ,2147483648 ,23 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,14 ,15 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,16 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,174 ,2147483648 ,2147483648 ,174 ,174 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,174 ,174 ,2147483648 ,174 ,2147483648 ,174 ,2147483648 ,174 ,174 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,174 ,174 ,174 ,174 ,2147483648 ,174 ,2147483648 ,174 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,174 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,174 ,174 ,2147483648 ,174 ,2147483648 ,174 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,174 ,174 ,2147483648 ,174 ,174 ,174 ,2147483648 ,174 ,174 ,2147483648 ,174 ,2147483648 ,174 ,174 ,2147483648 ,174 ,2147483648 ,174 ,2147483648 ,174 ,2147483648 ,174 ,174 ,174 ,2147483648 ,174 ,174 ,174 ,2147483648 ,174 ,174 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,174 ,174 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {81 ,123 ,93 ,2147483648 ,91 ,2147483648 ,83 ,2147483648 ,113 ,2147483648 ,2147483648 ,74 ,118 ,94 ,92 ,2147483648 ,89 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,122 ,135 ,138 ,128 ,125 ,73 ,2147483648 ,75 ,2147483648 ,119 ,98 ,2147483648 ,2147483648 ,2147483648 ,78 ,79 ,109 ,115 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,86 ,124 ,104 ,2147483648 ,84 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,80 ,2147483648 ,77 ,136 ,133 ,2147483648 ,116 ,129 ,2147483648 ,96 ,2147483648 ,131 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,106 ,126 ,76 ,2147483648 ,108 ,120 ,2147483648 ,130 ,103 ,2147483648 ,134 ,90 ,2147483648 ,132 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,127 ,121 ,2147483648 ,2147483648 ,2147483648 ,100 ,101 ,2147483648 ,97 ,111 ,102 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,110 ,117 ,105 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,87 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {144 ,144 ,144 ,2147483648 ,144 ,2147483648 ,144 ,2147483648 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,2147483648 ,144 ,2147483648 ,2147483648 ,144 ,144 ,2147483648 ,2147483648 ,144 ,144 ,144 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,144 ,144 ,2147483648 ,2147483648 ,2147483648 ,144 ,144 ,144 ,144 ,144 ,2147483648 ,144 ,2147483648 ,144 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,144 ,2147483648 ,2147483648 ,2147483648 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,2147483648 ,2147483648 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,2147483648 ,2147483648 ,144 ,2147483648 ,144 ,144 ,2147483648 ,2147483648 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,144 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,2147483648 ,144 ,2147483648 ,144 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,243 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,243 ,2147483648 ,243 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,246 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,246 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,246 ,2147483648 ,246 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,177 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 },
+ {2147483648 ,187 ,2147483648 ,2147483648 ,187 ,187 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,187 ,187 ,2147483648 ,187 ,2147483648 ,187 ,2147483648 ,187 ,187 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,187 ,187 ,187 ,187 ,2147483648 ,187 ,2147483648 ,187 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,187 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,187 ,187 ,2147483648 ,187 ,2147483648 ,187 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,187 ,187 ,2147483648 ,187 ,187 ,187 ,2147483648 ,187 ,187 ,2147483648 ,187 ,2147483648 ,187 ,187 ,2147483648 ,187 ,2147483648 ,187 ,2147483648 ,187 ,2147483648 ,187 ,187 ,187 ,2147483648 ,187 ,187 ,187 ,2147483648 ,187 ,187 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,187 ,187 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 },
+ {2147483648 ,268 ,2147483648 ,269 ,268 ,268 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,268 ,268 ,2147483648 ,268 ,2147483648 ,268 ,2147483648 ,268 ,268 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,268 ,268 ,268 ,268 ,2147483648 ,268 ,2147483648 ,268 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,268 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,268 ,268 ,2147483648 ,268 ,2147483648 ,268 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,268 ,268 ,2147483648 ,268 ,268 ,268 ,2147483648 ,268 ,268 ,2147483648 ,268 ,2147483648 ,268 ,268 ,2147483648 ,268 ,2147483648 ,268 ,2147483648 ,268 ,2147483648 ,268 ,268 ,268 ,2147483648 ,268 ,268 ,268 ,2147483648 ,268 ,268 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,268 ,268 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,12 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,11 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,9 ,2147483648 ,7 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,13 ,2147483648 ,2147483648 ,2147483648 ,9 ,8 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,5 ,9 ,2147483648 ,9 ,4 ,9 ,7 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,10 ,9 ,9 ,2147483648 ,9 ,9 ,7 ,9 ,2147483648 ,9 ,6 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,7 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,3 ,2147483648 ,2147483648 ,2147483648 ,9 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
};
const char* KeywordList[]= {
"print",
@@ -1965,117 +1969,117 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
};
const char* LalrNoneTerminalMap[NONETERMINAL_COUNT]=
{
-"E12",
-"E4",
-"ARRAY4",
"ARRAY2",
-"B6",
-"VA3",
"B5",
-"S",
-"B2",
-"CMP",
-"B3",
-"STRING",
-"BE",
-"VA2",
-"WSTRING",
-"E3",
-"E13",
-"EXP",
-"ARRAY1",
-"WstringNumber",
-"B1",
-"B4",
"E10",
-"StringNumber",
"ARRAY3",
-"E5"
+"E5",
+"VA2",
+"VA3",
+"B1",
+"WSTRING",
+"B6",
+"E3",
+"S",
+"E12",
+"E13",
+"BE",
+"B2",
+"EXP",
+"WstringNumber",
+"ARRAY1",
+"ARRAY4",
+"B3",
+"CMP",
+"STRING",
+"StringNumber",
+"E4",
+"B4"
};
const char* LalrTerminalMap[TERMINAL_COUNT]=
{
-"_string",
-"interlocked_decrement",
-"$",
-"not",
-"ed_pa",
-"dq",
-"_decimal",
-"_octal",
-"eb",
-"_binary",
-"strlen",
-"eq_pa",
-"eb_pa",
-"wcsncmp",
-"_register",
-"]",
-"||",
-"strcmp",
-"_local_id",
-"^",
-"ed",
-"hi",
-"wcslen",
-"_hex",
-"<<",
-"wcscmp",
-"db",
-"~",
-"check_address",
-"dq_pa",
-"-",
-"!=",
-"memcmp",
-"<=",
-"interlocked_exchange_add",
-"*",
"interlocked_exchange",
-"low",
-"disassemble_len64",
-"disassemble_len32",
-"interlocked_compare_exchange",
-"[",
-"(",
-")",
-"strncmp",
-"dd",
-"&&",
-">>",
-"poi",
-"_function_parameter_id",
-">",
+"_string",
+"_octal",
"poi_pa",
-"db_pa",
-"disassemble_len",
-"&",
-"eq",
-"dw",
-"physical_to_virtual",
-"low_pa",
-"==",
-"%",
-"dd_pa",
-"|",
-"_function_id",
-"reference",
"dw_pa",
-"_wstring",
-"neg",
-"_pseudo_register",
-",",
-"interlocked_increment",
-"_global_id",
-">=",
-"/",
-"virtual_to_physical",
-"+",
"<",
-"hi_pa"
+"(",
+"hi_pa",
+"_hex",
+"eq",
+"wcsncmp",
+"interlocked_compare_exchange",
+"eb_pa",
+">>",
+"dq_pa",
+"dw",
+"interlocked_decrement",
+"low_pa",
+"_global_id",
+"==",
+"_decimal",
+"virtual_to_physical",
+"_function_parameter_id",
+"interlocked_exchange_add",
+"check_address",
+"-",
+"[",
+"poi",
+"_function_id",
+",",
+"wcslen",
+"strlen",
+"db_pa",
+"db",
+"$",
+"memcmp",
+"&&",
+"_register",
+"_wstring",
+"disassemble_len32",
+"ed_pa",
+"_binary",
+"interlocked_increment",
+">=",
+"!=",
+"ed",
+"strcmp",
+"not",
+"]",
+"wcscmp",
+"*",
+"strncmp",
+"dq",
+"&",
+"/",
+"disassemble_len64",
+"|",
+"<=",
+"eq_pa",
+"eb",
+"~",
+"^",
+"_local_id",
+"neg",
+"hi",
+"dd",
+"||",
+"physical_to_virtual",
+"low",
+")",
+"_pseudo_register",
+">",
+"reference",
+"dd_pa",
+"<<",
+"disassemble_len",
+"%",
+"+"
};
const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{
- {15 ,12 ,2147483648 ,18 ,8 ,2147483648 ,7 ,1 ,4 ,9 ,5 ,2147483648 ,2 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,3 ,6 ,14 ,2147483648 ,2147483648 ,13 },
+ {18 ,7 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,3 ,2147483648 ,8 ,11 ,1 ,15 ,16 ,2 ,4 ,10 ,2147483648 ,17 ,2147483648 ,5 ,9 ,2147483648 ,2147483648 ,12 ,6 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2093,7 +2097,7 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2103,26 +2107,25 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {111 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,8 ,2147483648 ,7 ,2147483648 ,4 ,9 ,5 ,2147483648 ,113 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,3 ,6 ,14 ,2147483648 ,2147483648 ,13 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {117 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {119 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {122 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2141,84 +2144,85 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {135 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,7 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,3 ,2147483648 ,8 ,11 ,2147483648 ,15 ,16 ,141 ,4 ,10 ,2147483648 ,17 ,2147483648 ,5 ,9 ,2147483648 ,2147483648 ,12 ,6 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,8 ,2147483648 ,7 ,2147483648 ,144 ,9 ,5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,2147483648 ,6 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,8 ,2147483648 ,7 ,2147483648 ,2147483648 ,9 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,2147483648 ,6 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,8 ,2147483648 ,7 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,2147483648 ,146 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,8 ,2147483648 ,147 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,10 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,149 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,150 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,151 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,152 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,153 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,154 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,155 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,156 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,157 },
- {15 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,158 },
- {15 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,11 ,16 ,162 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,166 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,167 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,168 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,169 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,170 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,171 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,172 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,173 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,174 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,176 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,178 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,179 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,180 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,181 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,182 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,183 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {18 ,7 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,8 ,11 ,2147483648 ,15 ,16 ,2147483648 ,144 ,10 ,2147483648 ,17 ,2147483648 ,5 ,9 ,2147483648 ,2147483648 ,12 ,6 },
+ {18 ,7 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,8 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,10 ,2147483648 ,17 ,2147483648 ,145 ,9 ,2147483648 ,2147483648 ,12 ,6 },
+ {18 ,7 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,8 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,10 ,2147483648 ,17 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,12 ,146 },
+ {18 ,147 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,8 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,10 ,2147483648 ,17 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,10 ,2147483648 ,17 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,149 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,150 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,151 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,152 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,153 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,154 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,162 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,166 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,167 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,168 ,170 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,173 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,174 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,175 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,184 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,176 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,177 ,178 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,179 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,186 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,187 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,188 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,180 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,182 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,184 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,185 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,186 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,180 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,187 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,188 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,189 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,189 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,190 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,191 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,192 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,174 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,190 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,174 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,191 ,2147483648 ,13 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,193 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,194 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,195 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,196 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,197 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,198 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,199 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,200 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,201 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,202 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,203 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,204 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,180 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,205 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,206 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,207 ,208 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,209 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,210 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,211 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,212 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,192 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,193 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,194 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,195 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,196 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,197 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,198 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,199 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,200 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,201 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,202 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,203 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,205 ,11 ,16 ,204 ,17 ,206 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,213 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,214 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,208 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,205 ,11 ,16 ,209 ,17 ,210 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,211 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,212 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,213 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,214 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,215 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,205 ,11 ,16 ,216 ,17 ,217 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,216 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,217 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2237,9 +2241,9 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2294,55 +2298,55 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,267 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,267 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,268 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,269 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,268 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,177 ,269 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,174 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,270 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,271 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,270 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,177 ,271 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,180 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,272 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,273 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,180 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,274 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,275 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,276 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,277 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,174 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,272 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,174 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,273 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,274 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,278 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,279 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,280 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,275 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,180 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,281 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,276 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,277 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,205 ,11 ,16 ,216 ,17 ,278 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,279 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,280 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,281 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,282 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,205 ,11 ,16 ,216 ,17 ,282 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2360,20 +2364,20 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,299 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,300 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,301 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,299 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,300 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,301 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,302 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {15 ,12 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,16 ,302 ,17 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,13 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2385,313 +2389,313 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
};
const int LalrActionTable[LALR_STATE_COUNT][LALR_TERMINAL_COUNT]=
{
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,83 ,2147483648 },
- {2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 },
- {2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,87 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 },
- {2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,90 ,-24 ,2147483648 },
- {2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,93 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,91 ,2147483648 ,-27 ,-27 ,2147483648 },
- {2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 },
- {2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,2147483648 ,30 ,50 ,2147483648 ,2147483648 ,26 ,2147483648 ,19 ,2147483648 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,2147483648 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,2147483648 ,30 ,50 ,2147483648 ,2147483648 ,26 ,2147483648 ,19 ,2147483648 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,2147483648 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,2147483648 ,30 ,50 ,2147483648 ,2147483648 ,26 ,2147483648 ,19 ,2147483648 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,2147483648 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,2147483648 ,30 ,50 ,2147483648 ,2147483648 ,26 ,2147483648 ,19 ,2147483648 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,2147483648 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 },
- {2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,2147483648 ,30 ,50 ,2147483648 ,2147483648 ,26 ,2147483648 ,19 ,2147483648 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,2147483648 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,-95 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 },
- {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,207 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,207 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,207 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 },
- {2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 },
- {2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 },
- {2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 },
- {2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 },
- {2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 },
- {2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,90 ,-22 ,2147483648 },
- {2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,90 ,-23 ,2147483648 },
- {2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,93 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,91 ,2147483648 ,-26 ,-26 ,2147483648 },
- {2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,93 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,91 ,2147483648 ,-25 ,-25 ,2147483648 },
- {2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 },
- {2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 },
- {2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 },
- {2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,-105 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,-13 ,83 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,-13 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,90 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,91 ,2147483648 ,2147483648 ,-27 ,93 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,92 ,-27 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-106 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,2147483648 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,2147483648 ,38 ,68 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,2147483648 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,2147483648 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,2147483648 ,38 ,68 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,2147483648 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,2147483648 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,2147483648 ,38 ,68 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,2147483648 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,2147483648 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,2147483648 ,38 ,68 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,2147483648 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,2147483648 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,2147483648 ,38 ,68 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,2147483648 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,-95 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,96 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,171 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,171 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 },
+ {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 },
+ {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,171 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,215 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,90 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,90 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,91 ,2147483648 ,2147483648 ,-26 ,93 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,92 ,-26 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,91 ,2147483648 ,2147483648 ,-25 ,93 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,92 ,-25 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,96 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,-105 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,-105 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,-93 ,2147483648 },
- {2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,-108 ,2147483648 },
- {2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,-107 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 },
- {2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 },
- {2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 },
- {2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 },
- {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 },
- {2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 },
- {2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 },
- {2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 },
- {2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 },
- {2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 },
- {2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 },
- {2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 },
- {2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 },
- {2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 },
- {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {177 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 },
- {2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 },
- {2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 },
- {2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 },
- {2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 },
- {2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 },
- {2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 },
- {2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,207 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 },
- {2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 },
- {2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,207 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,-108 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,-107 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,171 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,171 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 },
+ {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 },
+ {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,286 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,289 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,290 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,290 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 },
- {2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 },
- {2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 },
- {2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 },
- {2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 },
- {2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 },
- {2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 },
- {2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 },
- {2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 },
- {2147483648 ,38 ,2147483648 ,20 ,55 ,36 ,54 ,64 ,63 ,52 ,57 ,47 ,71 ,75 ,49 ,2147483648 ,2147483648 ,44 ,62 ,2147483648 ,69 ,29 ,68 ,40 ,2147483648 ,65 ,56 ,42 ,30 ,50 ,39 ,2147483648 ,26 ,2147483648 ,19 ,33 ,27 ,23 ,31 ,60 ,21 ,2147483648 ,35 ,2147483648 ,45 ,41 ,2147483648 ,2147483648 ,73 ,58 ,2147483648 ,25 ,70 ,48 ,46 ,67 ,53 ,32 ,34 ,2147483648 ,2147483648 ,24 ,2147483648 ,74 ,61 ,72 ,2147483648 ,22 ,59 ,2147483648 ,28 ,43 ,2147483648 ,2147483648 ,51 ,66 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 },
- {2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 },
- {2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 },
- {2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 }
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 },
+ {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 }
};
const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{
diff --git a/hyperdbg/script-engine/code/scanner.c b/hyperdbg/script-engine/code/scanner.c
index b01c173b..e600e112 100644
--- a/hyperdbg/script-engine/code/scanner.c
+++ b/hyperdbg/script-engine/code/scanner.c
@@ -535,6 +535,23 @@ GetToken(char * c, char * str)
}
return Token;
+ case '#':
+ do
+ {
+ if (*c != '`')
+ AppendByte(Token, *c);
+ *c = sgetc(str);
+ } while (IsLetter(*c) || IsHex(*c) || (*c == '_') || (*c == '!'));
+ if (IsKeyword(Token->Value))
+ {
+ Token->Type = KEYWORD;
+ }
+ else
+ {
+ Token->Type = UNKNOWN;
+ }
+ return Token;
+
case ' ':
case '\t':
strcpy(Token->Value, "");
diff --git a/hyperdbg/script-engine/code/script-engine.c b/hyperdbg/script-engine/code/script-engine.c
index c20f1275..71dd9840 100644
--- a/hyperdbg/script-engine/code/script-engine.c
+++ b/hyperdbg/script-engine/code/script-engine.c
@@ -309,8 +309,9 @@ ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetails(const char * LocalFilePath,
PVOID
ScriptEngineParse(char * str)
{
- PSCRIPT_ENGINE_TOKEN_LIST Stack = NewTokenList();
+ char * ScriptSource = _strdup(str);
+ PSCRIPT_ENGINE_TOKEN_LIST Stack = NewTokenList();
PSCRIPT_ENGINE_TOKEN_LIST MatchedStack = NewTokenList();
PSYMBOL_BUFFER CodeBuffer = NewSymbolBuffer();
@@ -362,13 +363,13 @@ ScriptEngineParse(char * str)
Push(Stack, EndToken);
Push(Stack, StartToken);
- c = sgetc(str);
+ c = sgetc(ScriptSource);
- PSCRIPT_ENGINE_TOKEN CurrentIn = Scan(str, &c);
+ PSCRIPT_ENGINE_TOKEN CurrentIn = Scan(ScriptSource, &c);
if (CurrentIn->Type == UNKNOWN)
{
Error = SCRIPT_ENGINE_ERROR_SYNTAX;
- ErrorMessage = HandleError(&Error, str);
+ ErrorMessage = HandleError(&Error, ScriptSource);
CodeBuffer->Message = ErrorMessage;
RemoveTokenList(Stack);
@@ -421,16 +422,16 @@ ScriptEngineParse(char * str)
{
if (!strcmp(TopToken->Value, "BOOLEAN_EXPRESSION"))
{
- UINT64 BooleanExpressionSize = BooleanExpressionExtractEnd(str, &WaitForWaitStatementBooleanExpression, CurrentIn);
+ UINT64 BooleanExpressionSize = BooleanExpressionExtractEnd(ScriptSource, &WaitForWaitStatementBooleanExpression, CurrentIn);
- ScriptEngineBooleanExpresssionParse(BooleanExpressionSize, CurrentIn, MatchedStack, CodeBuffer, str, &c, &Error);
+ ScriptEngineBooleanExpresssionParse(BooleanExpressionSize, CurrentIn, MatchedStack, CodeBuffer, ScriptSource, &c, &Error);
if (Error != SCRIPT_ENGINE_ERROR_FREE)
{
break;
}
RemoveToken(&CurrentIn);
- CurrentIn = Scan(str, &c);
+ CurrentIn = Scan(ScriptSource, &c);
if (CurrentIn->Type == UNKNOWN)
{
Error = SCRIPT_ENGINE_ERROR_UNKNOWN_TOKEN;
@@ -438,7 +439,7 @@ ScriptEngineParse(char * str)
}
RemoveToken(&CurrentIn);
- CurrentIn = Scan(str, &c);
+ CurrentIn = Scan(ScriptSource, &c);
if (CurrentIn->Type == UNKNOWN)
{
Error = SCRIPT_ENGINE_ERROR_UNKNOWN_TOKEN;
@@ -494,7 +495,7 @@ ScriptEngineParse(char * str)
Push(MatchedStack, CurrentIn);
- CurrentIn = Scan(str, &c);
+ CurrentIn = Scan(ScriptSource, &c);
if (CurrentIn->Type == UNKNOWN)
{
Error = SCRIPT_ENGINE_ERROR_SYNTAX;
@@ -508,7 +509,7 @@ ScriptEngineParse(char * str)
{
WaitForWaitStatementBooleanExpression = TRUE;
}
- CodeGen(MatchedStack, CodeBuffer, TopToken, &Error);
+ CodeGen(MatchedStack, CodeBuffer, TopToken, &Error, &ScriptSource);
if (Error != SCRIPT_ENGINE_ERROR_FREE)
{
break;
@@ -525,7 +526,7 @@ ScriptEngineParse(char * str)
else
{
RemoveToken(&CurrentIn);
- CurrentIn = Scan(str, &c);
+ CurrentIn = Scan(ScriptSource, &c);
if (CurrentIn->Type == UNKNOWN)
{
@@ -543,7 +544,7 @@ ScriptEngineParse(char * str)
if (Error != SCRIPT_ENGINE_ERROR_FREE)
{
- ErrorMessage = HandleError(&Error, str);
+ ErrorMessage = HandleError(&Error, ScriptSource);
}
else
{
@@ -635,12 +636,29 @@ ScriptEngineParse(char * str)
UserDefinedFunctionHead = 0;
}
+ if (IncludeHead)
+ {
+ PINCLUDE_NODE Node = IncludeHead;
+ while (Node)
+ {
+ if (Node->FilePath)
+ free(Node->FilePath);
+
+ PINCLUDE_NODE Temp = Node;
+ Node = Node->NextNode;
+ free(Temp);
+ }
+ IncludeHead = 0;
+ }
+
if (CurrentIn)
RemoveToken(&CurrentIn);
if (TopToken)
RemoveToken(&TopToken);
+ free(ScriptSource);
+
return (PVOID)CodeBuffer;
}
@@ -653,7 +671,7 @@ ScriptEngineParse(char * str)
* @param Error
*/
void
-CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRIPT_ENGINE_TOKEN Operator, PSCRIPT_ENGINE_ERROR_TYPE Error)
+CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRIPT_ENGINE_TOKEN Operator, PSCRIPT_ENGINE_ERROR_TYPE Error, char ** ScriptSource)
{
PSCRIPT_ENGINE_TOKEN Op0 = NULL;
PSCRIPT_ENGINE_TOKEN Op1 = NULL;
@@ -692,7 +710,62 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
while (TRUE)
{
- if (!strcmp(Operator->Value, "@START_OF_USER_DEFINED_FUNCTION"))
+ if (!strcmp(Operator->Value, "@INCLUDE"))
+ {
+ char * IncludeFilePath;
+ char FullPath[MAX_PATH_LEN];
+ char * IncludeFileBuffer;
+ BOOLEAN IncludedPath = FALSE;
+
+ Temp = Pop(MatchedStack);
+ IncludeFilePath = Temp->Value;
+
+ ResolveIncludePath(IncludeFilePath, FullPath);
+
+ if (!FileExists(FullPath))
+ {
+ *Error = SCRIPT_ENGINE_ERROR_SYNTAX;
+ break;
+ }
+
+ if (!ParseIncludeFile(FullPath, &IncludeFileBuffer))
+ {
+ *Error = SCRIPT_ENGINE_ERROR_SYNTAX;
+ break;
+ }
+
+ if (!IncludeHead)
+ {
+ IncludeHead = calloc(sizeof(INCLUDE_NODE), 1);
+ IncludeHead->FilePath = _strdup(FullPath);
+ }
+ else
+ {
+ PINCLUDE_NODE Node, PrevNode = NULL;
+
+ for (Node = IncludeHead; Node; PrevNode = Node, Node = Node->NextNode)
+ {
+ if (!strcmp(Node->FilePath, FullPath))
+ {
+ IncludedPath = TRUE;
+ break;
+ }
+ }
+
+ if (!IncludedPath && PrevNode)
+ {
+ PrevNode->NextNode = calloc(sizeof(INCLUDE_NODE), 1);
+ PrevNode->NextNode->FilePath = _strdup(FullPath);
+ }
+ }
+
+ if (!IncludedPath)
+ {
+ *ScriptSource = InsertStrNew(*ScriptSource, InputIdx, IncludeFileBuffer);
+ }
+ }
+
+ else if (!strcmp(Operator->Value, "@START_OF_USER_DEFINED_FUNCTION"))
{
Op0 = Pop(MatchedStack);
VariableType = HandleType(MatchedStack);
@@ -3514,7 +3587,7 @@ ScriptEngineBooleanExpresssionParse(
}
else
{
- CodeGen(MatchedStack, CodeBuffer, SemanticRule, Error);
+ CodeGen(MatchedStack, CodeBuffer, SemanticRule, Error, &str);
if (*Error != SCRIPT_ENGINE_ERROR_FREE)
{
break;
diff --git a/hyperdbg/script-engine/header/common.h b/hyperdbg/script-engine/header/common.h
index 3cbdf947..e69de981 100644
--- a/hyperdbg/script-engine/header/common.h
+++ b/hyperdbg/script-engine/header/common.h
@@ -273,18 +273,27 @@ IsOneOperandOperator(PSCRIPT_ENGINE_TOKEN Operator);
/**
*
*/
-typedef struct USER_DEFINED_FUNCTION_NODE
+typedef struct _USER_DEFINED_FUNCTION_NODE
{
- char * Name;
- long long unsigned Address;
- long long unsigned VariableType;
- long long unsigned ParameterNumber;
- long long unsigned MaxTempNumber;
- long long unsigned LocalVariableNumber;
- long long unsigned IdTable;
- long long unsigned FunctionParameterIdTable;
- char * TempMap;
- struct USER_DEFINED_FUNCTION_NODE * NextNode;
+ char * Name;
+ long long unsigned Address;
+ long long unsigned VariableType;
+ long long unsigned ParameterNumber;
+ long long unsigned MaxTempNumber;
+ long long unsigned LocalVariableNumber;
+ long long unsigned IdTable;
+ long long unsigned FunctionParameterIdTable;
+ char * TempMap;
+ struct _USER_DEFINED_FUNCTION_NODE * NextNode;
} USER_DEFINED_FUNCTION_NODE, *PUSER_DEFINED_FUNCTION_NODE;
+/**
+ *
+ */
+typedef struct _INCLUDE_NODE
+{
+ char * FilePath;
+ struct _INCLUDE_NODE * NextNode;
+} INCLUDE_NODE, *PINCLUDE_NODE;
+
#endif // !COMMON_H
diff --git a/hyperdbg/script-engine/header/parse-table.h b/hyperdbg/script-engine/header/parse-table.h
index d35f96fb..7e6dad85 100644
--- a/hyperdbg/script-engine/header/parse-table.h
+++ b/hyperdbg/script-engine/header/parse-table.h
@@ -1,8 +1,8 @@
#pragma once
#ifndef PARSE_TABLE_H
#define PARSE_TABLE_H
-#define RULES_COUNT 271
-#define TERMINAL_COUNT 121
+#define RULES_COUNT 272
+#define TERMINAL_COUNT 122
#define NONETERMINAL_COUNT 63
#define START_VARIABLE "S"
#define MAX_RHS_LEN 15
diff --git a/hyperdbg/script-engine/header/pch.h b/hyperdbg/script-engine/header/pch.h
index cd5fdab0..4fd8d23c 100644
--- a/hyperdbg/script-engine/header/pch.h
+++ b/hyperdbg/script-engine/header/pch.h
@@ -39,6 +39,7 @@
#include "SDK/imports/user/HyperDbgSymImports.h"
#include "SDK/headers/HardwareDebugger.h"
#include "type.h"
+#include "script_include.h"
#include "common.h"
#include "scanner.h"
#include "globals.h"
diff --git a/hyperdbg/script-engine/header/scanner.h b/hyperdbg/script-engine/header/scanner.h
index f68d2a43..99894a64 100644
--- a/hyperdbg/script-engine/header/scanner.h
+++ b/hyperdbg/script-engine/header/scanner.h
@@ -26,6 +26,8 @@ PUSER_DEFINED_FUNCTION_NODE UserDefinedFunctionHead;
PUSER_DEFINED_FUNCTION_NODE CurrentUserDefinedFunction;
+PINCLUDE_NODE IncludeHead;
+
/**
* @brief number of read characters from input
*/
diff --git a/hyperdbg/script-engine/header/script-engine.h b/hyperdbg/script-engine/header/script-engine.h
index 156e89cf..6807d80e 100644
--- a/hyperdbg/script-engine/header/script-engine.h
+++ b/hyperdbg/script-engine/header/script-engine.h
@@ -76,7 +76,9 @@ CodeGen(
PSCRIPT_ENGINE_TOKEN_LIST MatchedStack,
PSYMBOL_BUFFER CodeBuffer,
PSCRIPT_ENGINE_TOKEN Operator,
- PSCRIPT_ENGINE_ERROR_TYPE Error);
+ PSCRIPT_ENGINE_ERROR_TYPE Error,
+ char** ScriptSource
+ );
unsigned long long int
RegisterToInt(char * str);
diff --git a/hyperdbg/script-engine/python/Grammar.txt b/hyperdbg/script-engine/python/Grammar.txt
index 180fab41..353fa005 100644
--- a/hyperdbg/script-engine/python/Grammar.txt
+++ b/hyperdbg/script-engine/python/Grammar.txt
@@ -67,6 +67,8 @@ STATEMENT->CALL_FUNC_STATEMENT ;
STATEMENT->break @BREAK ;
STATEMENT->continue @CONTINUE ;
STATEMENT->VARIABLE_TYPE3
+STATEMENT->#include STRING @INCLUDE ;
+
S2->STATEMENT2 S2
S2->{ STATEMENT2 S2 }
diff --git a/hyperdbg/script-engine/script-engine.vcxproj b/hyperdbg/script-engine/script-engine.vcxproj
index a97154b5..3ed0972f 100644
--- a/hyperdbg/script-engine/script-engine.vcxproj
+++ b/hyperdbg/script-engine/script-engine.vcxproj
@@ -75,8 +75,7 @@
true
-
-
+ robocopy "$(ProjectDir)script" "$(TargetDir)script" /E
@@ -105,8 +104,7 @@
true
-
-
+ robocopy "$(ProjectDir)script" "$(TargetDir)script" /E
@@ -119,6 +117,7 @@
+
@@ -132,6 +131,7 @@
+
diff --git a/hyperdbg/script-engine/script-engine.vcxproj.filters b/hyperdbg/script-engine/script-engine.vcxproj.filters
index 5c2b8b8c..fada6e95 100644
--- a/hyperdbg/script-engine/script-engine.vcxproj.filters
+++ b/hyperdbg/script-engine/script-engine.vcxproj.filters
@@ -41,6 +41,9 @@
header
+
+ header
+
@@ -67,5 +70,8 @@
code
+
+ code
+
\ No newline at end of file
diff --git a/hyperdbg/script-engine/script/fibonacci.ds b/hyperdbg/script-engine/script/fibonacci.ds
new file mode 100644
index 00000000..d9b19a27
--- /dev/null
+++ b/hyperdbg/script-engine/script/fibonacci.ds
@@ -0,0 +1,12 @@
+? {
+
+ int myfibonacci(int var1) {
+ if (var1 == 0) {
+ return 0;
+ }
+ if (var1 == 1) {
+ return 1;
+ }
+ return myfibonacci(var1 - 1) + myfibonacci(var1 - 2);
+ }
+}
diff --git a/hyperdbg/script-engine/script/test.ds b/hyperdbg/script-engine/script/test.ds
new file mode 100644
index 00000000..49dd1325
--- /dev/null
+++ b/hyperdbg/script-engine/script/test.ds
@@ -0,0 +1,8 @@
+? {
+ void my_func(int var, int var2) {
+ printf("var = %d, var2 = %d\n", var, var2);
+ return;
+ printf("this statement is never shown!\n");
+ }
+
+}
diff --git a/hyperdbg/script-engine/script_include.c b/hyperdbg/script-engine/script_include.c
new file mode 100644
index 00000000..150aab1b
--- /dev/null
+++ b/hyperdbg/script-engine/script_include.c
@@ -0,0 +1,135 @@
+#include "pch.h"
+#include "script_include.h"
+
+static void
+Ltrim(char * s)
+{
+ char * p = s;
+
+ while (*p && isspace((unsigned char)*p))
+ p++;
+
+ if (p != s)
+ memmove(s, p, strlen(p) + 1);
+}
+
+static void
+Rtrim(char * s)
+{
+ char * end = s + strlen(s);
+
+ while (end > s && isspace((unsigned char)end[-1]))
+ end--;
+
+ *end = '\0';
+}
+
+static void
+Trim(char * s)
+{
+ Ltrim(s);
+ Rtrim(s);
+}
+
+char *
+InsertStrNew(char * str, int InputIdx, const char * buf)
+{
+ size_t len_str = strlen(str);
+ size_t len_buf = strlen(buf);
+
+ if (InputIdx < 0 || InputIdx > len_str)
+ return str;
+
+ char * newstr = realloc(str, len_str + len_buf + 1);
+ if (!newstr)
+ return str;
+
+ memmove(newstr + InputIdx + len_buf,
+ newstr + InputIdx,
+ len_str - InputIdx + 1);
+
+ memcpy(newstr + InputIdx, buf, len_buf);
+
+ return newstr;
+}
+
+BOOLEAN
+IsAbsolutePath(const char * path)
+{
+ if (!path || !path[0])
+ return FALSE;
+
+ if (strlen(path) >= 3 &&
+ ((path[1] == ':' && (path[2] == '\\' || path[2] == '/'))))
+ return TRUE;
+
+ return FALSE;
+}
+
+void
+ResolveIncludePath(const char * IncludeFilePath, char * OutPath)
+{
+ if (IsAbsolutePath(IncludeFilePath))
+ {
+ strncpy(OutPath, IncludeFilePath, MAX_PATH_LEN - 1);
+ OutPath[MAX_PATH_LEN - 1] = '\0';
+ return;
+ }
+
+ char ExeDir[MAX_PATH_LEN];
+ GetModuleFileNameA(NULL, ExeDir, MAX_PATH_LEN);
+
+ char * p = strrchr(ExeDir, '\\');
+ if (p)
+ *p = '\0';
+
+ snprintf(
+ OutPath,
+ MAX_PATH_LEN,
+ "%s\\%s",
+ ExeDir,
+ IncludeFilePath);
+}
+
+BOOLEAN
+FileExists(const char * path)
+{
+ DWORD attr = GetFileAttributesA(path);
+
+ if (attr == INVALID_FILE_ATTRIBUTES)
+ return FALSE;
+
+ if (attr & FILE_ATTRIBUTE_DIRECTORY)
+ return FALSE;
+
+ return TRUE;
+}
+
+BOOLEAN
+ParseIncludeFile(char * IncludeFile, char ** Buffer)
+{
+ FILE * fp = fopen(IncludeFile, "r");
+ fseek(fp, 0, SEEK_END);
+ long size = ftell(fp);
+ rewind(fp);
+ *Buffer = calloc(size + 1, 1);
+ fread(*Buffer, 1, size, fp);
+ (*Buffer)[size] = '\0';
+ Trim(*Buffer);
+ size_t len = strlen(*Buffer);
+ if ((*Buffer)[0] == '?' &&
+ (*Buffer)[1] == ' ' &&
+ (*Buffer)[2] == '{' &&
+ (*Buffer)[len - 1] == '}')
+ {
+ memmove(
+ *Buffer,
+ *Buffer + 3,
+ len - 3 + 1);
+
+ (*Buffer)[strlen(*Buffer) - 1] = '\0';
+
+ return TRUE;
+ }
+ return FALSE;
+}
diff --git a/hyperdbg/script-engine/script_include.h b/hyperdbg/script-engine/script_include.h
new file mode 100644
index 00000000..887cf3ee
--- /dev/null
+++ b/hyperdbg/script-engine/script_include.h
@@ -0,0 +1,13 @@
+#define MAX_PATH_LEN 1024
+
+void
+ResolveIncludePath(const char * IncludeFilePath, char * OutPath);
+
+BOOLEAN
+FileExists(const char * path);
+
+BOOLEAN
+ParseIncludeFile(char * IncludeFile, char ** Buffer);
+
+char*
+InsertStrNew(char* str, int InputIdx, const char* buf);
\ No newline at end of file
From a7ceabdc3395f19fad4895af6bdb8eb4d4ed5ac0 Mon Sep 17 00:00:00 2001
From: xmaple21215
Date: Tue, 6 Jan 2026 17:03:17 +0800
Subject: [PATCH 067/323] update post-build event in script-engine
---
hyperdbg/script-engine/script-engine.vcxproj | 24 ++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/hyperdbg/script-engine/script-engine.vcxproj b/hyperdbg/script-engine/script-engine.vcxproj
index 3ed0972f..e88ad9fe 100644
--- a/hyperdbg/script-engine/script-engine.vcxproj
+++ b/hyperdbg/script-engine/script-engine.vcxproj
@@ -75,7 +75,17 @@
true
- robocopy "$(ProjectDir)script" "$(TargetDir)script" /E
+ set "SRC=$(ProjectDir)script"
+set "DST=$(TargetDir)script"
+
+if not exist "%DST%" mkdir "%DST%"
+
+robocopy "%SRC%" "%DST%" /E /NFL /NDL /NJH /NJS /NP
+set "RC=%ERRORLEVEL%"
+
+if %RC% GEQ 8 exit /b %RC%
+exit /b 0
+
@@ -104,7 +114,17 @@
true
- robocopy "$(ProjectDir)script" "$(TargetDir)script" /E
+ set "SRC=$(ProjectDir)script"
+set "DST=$(TargetDir)script"
+
+if not exist "%DST%" mkdir "%DST%"
+
+robocopy "%SRC%" "%DST%" /E /NFL /NDL /NJH /NJS /NP
+set "RC=%ERRORLEVEL%"
+
+if %RC% GEQ 8 exit /b %RC%
+exit /b 0
+
From ef705fccc7f68fa4d33eebbe7841834e875760f8 Mon Sep 17 00:00:00 2001
From: Hari Mishal
Date: Tue, 3 Feb 2026 17:29:37 +0100
Subject: [PATCH 068/323] added tracing.h and tracing.c
---
hyperdbg/hypertrace/code/Tracing.c | 515 ++++++++++++++++++++++++++-
hyperdbg/hypertrace/header/Tracing.h | 146 +++++++-
2 files changed, 648 insertions(+), 13 deletions(-)
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index fc4e6396..b4088cf0 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -2,11 +2,522 @@
* @file Tracing.c
* @author Hari Mishal (harimishal6@gmail.com)
* @brief Message logging and tracing implementation
- * @details
+ * @details Modified from LIBIHT project (Thomasaon Zhao et al) with Windows style updates.
* @version 0.18
* @date 2025-12-02
*
* @copyright This project is released under the GNU Public License v3.
- *
*/
+
#include "pch.h"
+#include "Tracing.h"
+
+//////////////////////////////////////////////////
+// Global Definitions //
+//////////////////////////////////////////////////
+
+ULONGLONG lbr_capacity = 0;
+LIST_ENTRY lbr_state_head;
+KSPIN_LOCK lbr_state_lock;
+
+// Typical Intel LBR capacities based on CPU model
+// This is a subset; you can expand this as needed
+struct cpu_lbr_map cpu_lbr_maps[] = {
+ {0x3E, 16}, // Ivy Bridge
+ {0x3C, 16}, // Haswell
+ {0x45, 16}, // Haswell
+ {0x46, 16}, // Haswell
+ {0x3F, 16}, // Haswell-E
+ {0x3D, 32}, // Broadwell
+ {0x47, 32}, // Broadwell
+ {0x4E, 32}, // Skylake
+ {0x5E, 32}, // Skylake
+ {0x8E, 32}, // Kaby/Coffee/Whiskey Lake
+ {0x9E, 32} // Kaby/Coffee Lake
+};
+
+// Note: MAX_IRQL_LEN is removed in favor of native KIRQL.
+
+void
+XWriteMsr(
+ ULONG Msr,
+ ULONGLONG Val)
+{
+ __writemsr(Msr, Val);
+}
+
+void
+LbrGetLbr(struct lbr_state * State)
+{
+ ULONG i;
+ ULONGLONG DbgCtlMsr;
+ KIRQL OldIrql;
+
+ xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
+ DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
+ xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+
+ xacquire_lock(lbr_state_lock, &OldIrql);
+ xrdmsr(MSR_LBR_SELECT, &State->config.lbr_select);
+ xrdmsr(MSR_LBR_TOS, &State->data->lbr_tos);
+
+ for (i = 0; i < (ULONG)lbr_capacity; i++)
+ {
+ xrdmsr(MSR_LBR_NHM_FROM + i, &State->data->entries[i].from);
+ xrdmsr(MSR_LBR_NHM_TO + i, &State->data->entries[i].to);
+ }
+ xrelease_lock(&lbr_state_lock, &OldIrql);
+}
+
+void
+LbrPutLbr(struct lbr_state * State)
+{
+ ULONG i;
+ ULONGLONG DbgCtlMsr;
+ KIRQL OldIrql;
+
+ xacquire_lock(&lbr_state_lock, &OldIrql);
+ xwrmsr(MSR_LBR_SELECT, State->config.lbr_select);
+ xwrmsr(MSR_LBR_TOS, State->data->lbr_tos);
+
+ for (i = 0; i < (ULONG)lbr_capacity; i++)
+ {
+ xwrmsr(MSR_LBR_NHM_FROM + i, State->data->entries[i].from);
+ xwrmsr(MSR_LBR_NHM_TO + i, State->data->entries[i].to);
+ }
+ xrelease_lock(&lbr_state_lock, &OldIrql);
+
+ xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
+ DbgCtlMsr |= DEBUGCTLMSR_LBR;
+ xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+}
+
+void
+LbrFlushLbr(
+ VOID)
+{
+ ULONG i;
+ ULONGLONG DbgCtlMsr;
+ KIRQL OldIrql;
+
+ xlock_core(&OldIrql);
+
+ // Disable LBR
+ xprintdbg("LIBIHT-COM: Flush LBR on cpu core: %d\n", xcoreid());
+ xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
+ DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
+ xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+
+ // Flush LBR registers
+ xwrmsr(MSR_LBR_SELECT, 0);
+ xwrmsr(MSR_LBR_TOS, 0);
+
+ for (i = 0; i < lbr_capacity; i++)
+ {
+ xwrmsr(MSR_LBR_NHM_FROM + i, 0);
+ xwrmsr(MSR_LBR_NHM_TO + i, 0);
+ }
+
+ xrelease_core(&OldIrql);
+}
+
+NTSTATUS
+LbrEnableLbr(
+ struct lbr_ioctl_request * Request)
+{
+ struct lbr_state * State;
+
+ State = LbrFindLbrState(Request->lbr_config.pid);
+ if (State)
+ {
+ xprintdbg("LIBIHT-COM: LBR already enabled for pid %d\n",
+ Request->lbr_config.pid);
+ return STATUS_ALREADY_REGISTERED;
+ }
+
+ State = LbrCreateLbrState();
+ if (State == NULL)
+ {
+ xprintdbg("LIBIHT-COM: Create LBR state failed\n");
+ return STATUS_INSUFFICIENT_RESOURCES;
+ }
+
+ // Setup config fields for LBR state
+ State->parent = NULL;
+ State->config.pid = Request->lbr_config.pid ? Request->lbr_config.pid : xgetcurrent_pid();
+ State->config.lbr_select = Request->lbr_config.lbr_select ? Request->lbr_config.lbr_select : LBR_SELECT;
+ LbrInsertLbrState(State);
+
+ // If the requesting process is the current process, trace it right away
+ if (State->config.pid == xgetcurrent_pid())
+ LbrPutLbr(State);
+
+ return STATUS_SUCCESS;
+}
+
+NTSTATUS
+LbrDisableLbr(
+ struct lbr_ioctl_request * Request)
+{
+ struct lbr_state * State;
+
+ State = LbrFindLbrState(Request->lbr_config.pid);
+ if (State == NULL)
+ {
+ xprintdbg("LIBIHT-COM: LBR not enabled for pid %d\n",
+ Request->lbr_config.pid);
+ return STATUS_NOT_FOUND;
+ }
+
+ if (State->config.pid == xgetcurrent_pid())
+ LbrGetLbr(State);
+
+ LbrRemoveLbrState(State);
+ return STATUS_SUCCESS;
+}
+
+NTSTATUS
+LbrDumpLbr(
+ struct lbr_ioctl_request * Request)
+{
+ ULONGLONG i, BytesLeft;
+ struct lbr_state * State;
+ struct lbr_data ReqBuf;
+ KIRQL OldIrql;
+
+ State = LbrFindLbrState(Request->lbr_config.pid);
+ if (State == NULL)
+ {
+ xprintdbg("LIBIHT-COM: LBR not enabled for pid %d\n",
+ Request->lbr_config.pid);
+ return STATUS_NOT_FOUND;
+ }
+
+ // Examine if the current process is the owner of the LBR state
+ if (State->config.pid == xgetcurrent_pid())
+ {
+ xprintdbg("LIBIHT-COM: Dump LBR for current process\n");
+ // Get fresh LBR info
+ LbrGetLbr(State);
+ LbrPutLbr(State);
+ }
+
+ xacquire_lock(lbr_state_lock, &OldIrql);
+
+ // Dump the LBR state to debug logs
+ xprintdbg("PROC_PID: %d\n", State->config.pid);
+ xprintdbg("MSR_LBR_SELECT: 0x%llx\n", State->config.lbr_select);
+ xprintdbg("MSR_LBR_TOS: %lld\n", State->data->lbr_tos);
+
+ for (i = 0; i < lbr_capacity; i++)
+ {
+ xprintdbg("MSR_LBR_NHM_FROM[%2d]: 0x%llx\n", (ULONG)i, State->data->entries[i].from);
+ xprintdbg("MSR_LBR_NHM_TO [%2d]: 0x%llx\n", (ULONG)i, State->data->entries[i].to);
+ }
+
+ xprintdbg("LIBIHT-COM: LBR info for cpuid: %d\n", xcoreid());
+
+ // Dump the LBR data to userspace buffer
+ if (Request->buffer)
+ {
+ BytesLeft = xcopy_from_user(&ReqBuf, Request->buffer, sizeof(struct lbr_data));
+ if (BytesLeft)
+ {
+ xprintdbg("LIBIHT-COM: Copy LBR data from user failed\n");
+ xrelease_lock(lbr_state_lock, &OldIrql);
+ return STATUS_UNSUCCESSFUL;
+ }
+
+ ReqBuf.lbr_tos = State->data->lbr_tos;
+ if (ReqBuf.entries)
+ {
+ BytesLeft = xcopy_to_user(ReqBuf.entries,
+ State->data->entries,
+ lbr_capacity * sizeof(struct lbr_stack_entry));
+
+ if (BytesLeft)
+ {
+ xprintdbg("LIBIHT-COM: Copy LBR data to user failed\n");
+ xrelease_lock(lbr_state_lock, &OldIrql);
+ return STATUS_UNSUCCESSFUL;
+ }
+ }
+
+ BytesLeft = xcopy_to_user(Request->buffer, &ReqBuf, sizeof(struct lbr_data));
+ if (BytesLeft)
+ {
+ xprintdbg("LIBIHT-COM: Copy LBR data to user failed\n");
+ xrelease_lock(lbr_state_lock, &OldIrql);
+ return STATUS_UNSUCCESSFUL;
+ }
+ }
+
+ xrelease_lock(lbr_state_lock, &OldIrql);
+ return STATUS_SUCCESS;
+}
+
+NTSTATUS
+LbrConfigLbr(
+ struct lbr_ioctl_request * Request)
+{
+ struct lbr_state * State;
+
+ State = LbrFindLbrState(Request->lbr_config.pid);
+ if (State == NULL)
+ {
+ xprintdbg("LIBIHT-COM: LBR not enabled for pid %d\n",
+ Request->lbr_config.pid);
+ return STATUS_NOT_FOUND;
+ }
+
+ if (State->config.pid == xgetcurrent_pid())
+ {
+ LbrGetLbr(State);
+ State->config.lbr_select = Request->lbr_config.lbr_select;
+ LbrPutLbr(State);
+ }
+ else
+ {
+ State->config.lbr_select = Request->lbr_config.lbr_select;
+ }
+
+ return STATUS_SUCCESS;
+}
+
+struct lbr_state *
+LbrCreateLbrState(
+ VOID)
+{
+ struct lbr_state * State;
+ struct lbr_data * Data;
+ struct lbr_stack_entry * Entries;
+
+ State = xmalloc(sizeof(struct lbr_state));
+ if (State == NULL)
+ return NULL;
+
+ Data = xmalloc(sizeof(struct lbr_data));
+ if (Data == NULL)
+ {
+ xfree(State);
+ return NULL;
+ }
+ SIZE_T TotalEntrySize = (SIZE_T)sizeof(struct lbr_stack_entry) * lbr_capacity;
+ Entries = xmalloc(TotalEntrySize);
+ if (Entries == NULL)
+ {
+ xfree(Data);
+ xfree(State);
+ return NULL;
+ }
+
+ xmemset(State, sizeof(struct lbr_state));
+ xmemset(Data, sizeof(struct lbr_data));
+ xmemset(Entries, TotalEntrySize);
+
+ State->data = Data;
+ Data->entries = Entries;
+
+ return State;
+}
+
+struct lbr_state *
+LbrFindLbrState(ULONG Pid)
+{
+ KIRQL OldIrql;
+ struct lbr_state * RetState = NULL;
+ PLIST_ENTRY Link;
+
+ xacquire_lock(&lbr_state_lock, &OldIrql);
+
+ // Iterating through LIST_ENTRY correctly
+ for (Link = lbr_state_head.Flink; Link != &lbr_state_head; Link = Link->Flink)
+ {
+ struct lbr_state * Curr = CONTAINING_RECORD(Link, struct lbr_state, list);
+ if (Pid != 0 && Curr->config.pid == Pid)
+ {
+ RetState = Curr;
+ break;
+ }
+ }
+
+ xrelease_lock(&lbr_state_lock, &OldIrql);
+ return RetState;
+}
+
+void
+LbrInsertLbrState(
+ struct lbr_state * NewState)
+{
+ KIRQL OldIrql;
+
+ if (NewState == NULL)
+ return;
+
+ xacquire_lock(lbr_state_lock, &OldIrql);
+ xprintdbg("LIBIHT-COM: Insert LBR state for pid %d\n", NewState->config.pid);
+ xlist_add(NewState->list, lbr_state_head);
+ xrelease_lock(lbr_state_lock, &OldIrql);
+}
+
+void
+LbrRemoveLbrState(
+ struct lbr_state * OldState)
+{
+ KIRQL OldIrql;
+
+ if (OldState == NULL)
+ return;
+
+ xacquire_lock(lbr_state_lock, &OldIrql);
+ xprintdbg("LIBIHT-COM: Remove LBR state for pid %d\n", OldState->config.pid);
+
+ xlist_del(OldState->list);
+ xfree(OldState->data->entries);
+ xfree(OldState->data);
+ xfree(OldState);
+
+ xrelease_lock(lbr_state_lock, &OldIrql);
+}
+
+void
+LbrFreeLbrStatList(VOID)
+{
+ KIRQL OldIrql;
+ struct lbr_state * CurrState;
+ PLIST_ENTRY CurrLink;
+
+ xacquire_lock(&lbr_state_lock, &OldIrql);
+
+ CurrLink = lbr_state_head.Flink;
+ while (CurrLink != &lbr_state_head)
+ {
+ CurrState = CONTAINING_RECORD(CurrLink, struct lbr_state, list);
+ CurrLink = CurrLink->Flink; // Get next before deleting
+
+ xlist_del(CurrState->list);
+ xfree(CurrState->data->entries);
+ xfree(CurrState->data);
+ xfree(CurrState);
+ }
+
+ xrelease_lock(&lbr_state_lock, &OldIrql);
+}
+
+NTSTATUS
+LbrIoctlHandler(
+ struct xioctl_request * Request)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+
+ xprintdbg("LIBIHT-COM: LBR ioctl command %d.\n", Request->cmd);
+ switch (Request->cmd)
+ {
+ case LIBIHT_IOCTL_ENABLE_LBR:
+ Status = LbrEnableLbr(&Request->body.lbr);
+ break;
+ case LIBIHT_IOCTL_DISABLE_LBR:
+ Status = LbrDisableLbr(&Request->body.lbr);
+ break;
+ case LIBIHT_IOCTL_DUMP_LBR:
+ Status = LbrDumpLbr(&Request->body.lbr);
+ break;
+ case LIBIHT_IOCTL_CONFIG_LBR:
+ Status = LbrConfigLbr(&Request->body.lbr);
+ break;
+ default:
+ xprintdbg("LIBIHT-COM: Invalid LBR ioctl command\n");
+ Status = STATUS_INVALID_DEVICE_REQUEST;
+ break;
+ }
+
+ return Status;
+}
+
+void
+LbrCswitchHandler(
+ ULONG PrevPid,
+ ULONG NextPid)
+{
+ struct lbr_state *PrevState, *NextState;
+
+ PrevState = LbrFindLbrState(PrevPid);
+ NextState = LbrFindLbrState(NextPid);
+
+ if (PrevState)
+ {
+ xprintdbg("LIBIHT-COM: LBR context switch from pid %d on cpu core %d\n",
+ PrevState->config.pid,
+ xcoreid());
+ LbrGetLbr(PrevState);
+ }
+
+ if (NextState)
+ {
+ xprintdbg("LIBIHT-COM: LBR context switch to pid %d on cpu core %d\n",
+ NextState->config.pid,
+ xcoreid());
+ LbrPutLbr(NextState);
+ }
+}
+
+void
+LbrNewprocHandler(
+ ULONG ParentPid,
+ ULONG ChildPid)
+{
+ struct lbr_state *ParentState, *ChildState;
+ KIRQL OldIrql;
+
+ ParentState = LbrFindLbrState(ParentPid);
+ if (ParentState == NULL)
+ return;
+
+ xprintdbg("LIBIHT-COM: LBR new child process pid %d, parent pid %d\n",
+ ChildPid,
+ ParentPid);
+
+ ChildState = LbrCreateLbrState();
+ if (ChildState == NULL)
+ return;
+
+ xacquire_lock(lbr_state_lock, &OldIrql);
+ ChildState->parent = ParentState;
+ ChildState->config.pid = ChildPid;
+ ChildState->config.lbr_select = ParentState->config.lbr_select;
+ xmemcpy(ChildState->data,
+ ParentState->data,
+ sizeof(struct lbr_data) + lbr_capacity * sizeof(struct lbr_stack_entry));
+ xrelease_lock(lbr_state_lock, &OldIrql);
+
+ LbrInsertLbrState(ChildState);
+
+ if (ChildPid == xgetcurrent_pid())
+ LbrPutLbr(ChildState);
+}
+
+NTSTATUS
+LbrCheck(VOID)
+{
+ ULONG a, b, c, d;
+ ULONG Family, Model;
+ ULONGLONG i;
+
+ xcpuid(1, &a, &b, &c, &d);
+
+ Family = ((a >> 8) & 0xF) + ((a >> 20) & 0xFF);
+ Model = ((a >> 4) & 0xF) | ((a >> 12) & 0xF0);
+
+ for (i = 0; i < sizeof(cpu_lbr_maps) / sizeof(cpu_lbr_maps[0]); ++i)
+ {
+ if (Model == cpu_lbr_maps[i].model)
+ {
+ lbr_capacity = cpu_lbr_maps[i].lbr_capacity;
+ break;
+ }
+ }
+
+ if (lbr_capacity == 0)
+ return STATUS_NOT_SUPPORTED;
+ return STATUS_SUCCESS;
+}
diff --git a/hyperdbg/hypertrace/header/Tracing.h b/hyperdbg/hypertrace/header/Tracing.h
index 07d818f9..4c46a596 100644
--- a/hyperdbg/hypertrace/header/Tracing.h
+++ b/hyperdbg/hypertrace/header/Tracing.h
@@ -1,25 +1,149 @@
/**
* @file Tracing.h
- * @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Headers of Message logging and tracing
- * @details
- * @version 0.1
- * @date 2020-04-11
+ * @author Hari Mishal (harimishal6@gmail.com)
+ * @brief Message logging and tracing implementation
+ * @details Modified from LIBIHT project (Thomasaon Zhao et al) with Windows style updates.
+ * @version 0.18
+ * @date 2025-12-02
*
* @copyright This project is released under the GNU Public License v3.
- *
*/
#pragma once
-//////////////////////////////////////////////////
-// Global Variables //
-//////////////////////////////////////////////////
+#include "pch.h"
+
+// Intel MSR Constants
+#define MSR_IA32_DEBUGCTLMSR 0x000001D9
+#define DEBUGCTLMSR_LBR (1ULL << 0)
+#define MSR_LBR_SELECT 0x000001C8
+#define MSR_LBR_TOS 0x000001C9
+#define MSR_LBR_NHM_FROM 0x00000680
+#define MSR_LBR_NHM_TO 0x000006C0
+#define LBR_SELECT 0x0
//////////////////////////////////////////////////
-// Structures //
+// Structures //
//////////////////////////////////////////////////
+struct lbr_stack_entry
+{
+ ULONGLONG from;
+ ULONGLONG to;
+};
+
+struct lbr_data
+{
+ ULONGLONG lbr_tos;
+ struct lbr_stack_entry * entries;
+};
+
+struct lbr_config
+{
+ ULONG pid;
+ ULONGLONG lbr_select;
+};
+
+struct lbr_state
+{
+ struct lbr_config config;
+ struct lbr_data * data;
+ struct lbr_state * parent;
+ LIST_ENTRY list;
+};
+
+struct lbr_ioctl_request
+{
+ struct lbr_config lbr_config;
+ struct lbr_data * buffer;
+};
+
+struct xioctl_request
+{
+ ULONG cmd;
+ union
+ {
+ struct lbr_ioctl_request lbr;
+ } body;
+};
+
+// IOCTL Commands
+#define LIBIHT_IOCTL_ENABLE_LBR 0x1
+#define LIBIHT_IOCTL_DISABLE_LBR 0x2
+#define LIBIHT_IOCTL_DUMP_LBR 0x3
+#define LIBIHT_IOCTL_CONFIG_LBR 0x4
+
//////////////////////////////////////////////////
-// Functions //
+// Platform Wrappers //
//////////////////////////////////////////////////
+
+#define xmalloc(sz) PlatformMemAllocateZeroedNonPagedPool(sz)
+#define xfree(p) PlatformMemFreePool(p)
+#define xmemset(ptr, sz) RtlZeroMemory(ptr, sz)
+#define xmemcpy RtlCopyMemory
+#define xrdmsr(msr, pval) (*(pval) = __readmsr(msr))
+#define xwrmsr(msr, val) __writemsr(msr, val)
+#define xprintdbg(format, ...) DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, format, __VA_ARGS__)
+#define xcoreid() KeGetCurrentProcessorNumber()
+#define xgetcurrent_pid() (ULONG)(ULONG_PTR) PsGetCurrentProcessId()
+
+// List Handling
+#define xlist_next(ptr) (ptr)->Flink
+#define xlist_add(entry, head) InsertTailList(&(head), &(entry))
+#define xlist_del(entry) RemoveEntryList(&(entry))
+
+// Spinlock & IRQL (Using Windows Native to fix VCR001)
+#define xacquire_lock(Lock, Irql) KeAcquireSpinLock((PKSPIN_LOCK)(Lock), (Irql))
+#define xrelease_lock(Lock, Irql) KeReleaseSpinLock((PKSPIN_LOCK)(Lock), *(Irql))
+
+#define xlock_core(irql) KeRaiseIrql(DISPATCH_LEVEL, irql)
+#define xrelease_core(irql) KeLowerIrql(*(irql))
+
+// Buffer Copy
+#define xcopy_from_user(dest, src, sz) (RtlCopyMemory(dest, src, sz), 0)
+#define xcopy_to_user(dest, src, sz) (RtlCopyMemory(dest, src, sz), 0)
+
+// CPUID (Fixed C6001: initialized cpuInfo)
+#define xcpuid(code, a, b, c, d) \
+ { \
+ int cpuInfo[4] = {0}; \
+ __cpuid(cpuInfo, code); \
+ *a = cpuInfo[0]; \
+ *b = cpuInfo[1]; \
+ *c = cpuInfo[2]; \
+ *d = cpuInfo[3]; \
+ }
+
+//////////////////////////////////////////////////
+// Global Variables //
+//////////////////////////////////////////////////
+
+extern ULONGLONG lbr_capacity;
+extern LIST_ENTRY lbr_state_head;
+extern KSPIN_LOCK lbr_state_lock; // Standardized to KSPIN_LOCK
+
+struct cpu_lbr_map
+{
+ ULONG model;
+ ULONG lbr_capacity;
+};
+
+extern struct cpu_lbr_map cpu_lbr_maps[];
+
+//////////////////////////////////////////////////
+// Prototypes //
+//////////////////////////////////////////////////
+
+void
+LbrGetLbr(struct lbr_state * State);
+void
+ LbrPutLbr(struct lbr_state * State);
+struct lbr_state * LbrCreateLbrState(VOID);
+struct lbr_state *
+LbrFindLbrState(ULONG Pid);
+void
+LbrInsertLbrState(struct lbr_state * NewState);
+void
+ LbrRemoveLbrState(struct lbr_state * OldState);
+void LbrFreeLbrStatList(VOID);
+NTSTATUS LbrCheck(VOID);
From cd5aae1b162ec7c407a1aed8580f3fd982582776 Mon Sep 17 00:00:00 2001
From: Hari Mishal
Date: Tue, 3 Feb 2026 17:52:53 +0100
Subject: [PATCH 069/323] added all supported cpus to tracing.c
---
hyperdbg/hypertrace/code/Tracing.c | 69 ++++++++++++++++++++++++------
1 file changed, 57 insertions(+), 12 deletions(-)
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index b4088cf0..d2f2699b 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -23,18 +23,63 @@ KSPIN_LOCK lbr_state_lock;
// Typical Intel LBR capacities based on CPU model
// This is a subset; you can expand this as needed
struct cpu_lbr_map cpu_lbr_maps[] = {
- {0x3E, 16}, // Ivy Bridge
- {0x3C, 16}, // Haswell
- {0x45, 16}, // Haswell
- {0x46, 16}, // Haswell
- {0x3F, 16}, // Haswell-E
- {0x3D, 32}, // Broadwell
- {0x47, 32}, // Broadwell
- {0x4E, 32}, // Skylake
- {0x5E, 32}, // Skylake
- {0x8E, 32}, // Kaby/Coffee/Whiskey Lake
- {0x9E, 32} // Kaby/Coffee Lake
-};
+ {0x5c, 32},
+ {0x5f, 32},
+ {0x4e, 32},
+ {0x5e, 32},
+ {0x8e, 32},
+ {0x9e, 32},
+ {0x55, 32},
+ {0x66, 32},
+ {0x7a, 32},
+ {0x67, 32},
+ {0x6a, 32},
+ {0x6c, 32},
+ {0x7d, 32},
+ {0x7e, 32},
+ {0x8c, 32},
+ {0x8d, 32},
+ {0xa5, 32},
+ {0xa6, 32},
+ {0xa7, 32},
+ {0xa8, 32},
+ {0x86, 32},
+ {0x8a, 32},
+ {0x96, 32},
+ {0x9c, 32},
+ {0x3d, 16},
+ {0x47, 16},
+ {0x4f, 16},
+ {0x56, 16},
+ {0x3c, 16},
+ {0x45, 16},
+ {0x46, 16},
+ {0x3f, 16},
+ {0x2a, 16},
+ {0x2d, 16},
+ {0x3a, 16},
+ {0x3e, 16},
+ {0x1a, 16},
+ {0x1e, 16},
+ {0x1f, 16},
+ {0x2e, 16},
+ {0x25, 16},
+ {0x2c, 16},
+ {0x2f, 16},
+ {0x17, 4},
+ {0x1d, 4},
+ {0x0f, 4},
+ {0x37, 8},
+ {0x4a, 8},
+ {0x4c, 8},
+ {0x4d, 8},
+ {0x5a, 8},
+ {0x5d, 8},
+ {0x1c, 8},
+ {0x26, 8},
+ {0x27, 8},
+ {0x35, 8},
+ {0x36, 8}};
// Note: MAX_IRQL_LEN is removed in favor of native KIRQL.
From e25209453ad3c0003f335c272606c16d3f77a330 Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 7 Feb 2026 22:29:25 +0100
Subject: [PATCH 070/323] renaming and refactoring hypertrace project
---
hyperdbg/hypertrace/code/Tracing.c | 203 +++++++++---------
hyperdbg/hypertrace/header/Tracing.h | 90 ++++----
hyperdbg/hypertrace/header/pch.h | 4 +
hyperdbg/hypertrace/hypertrace.inf | 77 -------
hyperdbg/hypertrace/hypertrace.vcxproj | 3 -
.../hypertrace/hypertrace.vcxproj.filters | 9 -
6 files changed, 154 insertions(+), 232 deletions(-)
delete mode 100644 hyperdbg/hypertrace/hypertrace.inf
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index d2f2699b..a64d144c 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -10,19 +10,20 @@
*/
#include "pch.h"
-#include "Tracing.h"
//////////////////////////////////////////////////
// Global Definitions //
//////////////////////////////////////////////////
-ULONGLONG lbr_capacity = 0;
-LIST_ENTRY lbr_state_head;
-KSPIN_LOCK lbr_state_lock;
+ULONGLONG LbrCapacity = 0;
+LIST_ENTRY LbrStateHead;
+KSPIN_LOCK LbrStateLock;
+//
// Typical Intel LBR capacities based on CPU model
// This is a subset; you can expand this as needed
-struct cpu_lbr_map cpu_lbr_maps[] = {
+//
+CPU_LBR_MAP CPU_LBR_MAPS[] = {
{0x5c, 32},
{0x5f, 32},
{0x4e, 32},
@@ -83,16 +84,15 @@ struct cpu_lbr_map cpu_lbr_maps[] = {
// Note: MAX_IRQL_LEN is removed in favor of native KIRQL.
-void
-XWriteMsr(
- ULONG Msr,
- ULONGLONG Val)
+VOID
+XWriteMsr(ULONG Msr,
+ ULONGLONG Val)
{
__writemsr(Msr, Val);
}
-void
-LbrGetLbr(struct lbr_state * State)
+VOID
+LbrGetLbr(LBR_STATE * State)
{
ULONG i;
ULONGLONG DbgCtlMsr;
@@ -102,44 +102,43 @@ LbrGetLbr(struct lbr_state * State)
DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
- xacquire_lock(lbr_state_lock, &OldIrql);
+ xacquire_lock(LbrStateLock, &OldIrql);
xrdmsr(MSR_LBR_SELECT, &State->config.lbr_select);
xrdmsr(MSR_LBR_TOS, &State->data->lbr_tos);
- for (i = 0; i < (ULONG)lbr_capacity; i++)
+ for (i = 0; i < (ULONG)LbrCapacity; i++)
{
xrdmsr(MSR_LBR_NHM_FROM + i, &State->data->entries[i].from);
xrdmsr(MSR_LBR_NHM_TO + i, &State->data->entries[i].to);
}
- xrelease_lock(&lbr_state_lock, &OldIrql);
+ xrelease_lock(&LbrStateLock, &OldIrql);
}
-void
-LbrPutLbr(struct lbr_state * State)
+VOID
+LbrPutLbr(LBR_STATE * State)
{
ULONG i;
ULONGLONG DbgCtlMsr;
KIRQL OldIrql;
- xacquire_lock(&lbr_state_lock, &OldIrql);
+ xacquire_lock(&LbrStateLock, &OldIrql);
xwrmsr(MSR_LBR_SELECT, State->config.lbr_select);
xwrmsr(MSR_LBR_TOS, State->data->lbr_tos);
- for (i = 0; i < (ULONG)lbr_capacity; i++)
+ for (i = 0; i < (ULONG)LbrCapacity; i++)
{
xwrmsr(MSR_LBR_NHM_FROM + i, State->data->entries[i].from);
xwrmsr(MSR_LBR_NHM_TO + i, State->data->entries[i].to);
}
- xrelease_lock(&lbr_state_lock, &OldIrql);
+ xrelease_lock(&LbrStateLock, &OldIrql);
xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
DbgCtlMsr |= DEBUGCTLMSR_LBR;
xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
}
-void
-LbrFlushLbr(
- VOID)
+VOID
+LbrFlushLbr()
{
ULONG i;
ULONGLONG DbgCtlMsr;
@@ -147,7 +146,9 @@ LbrFlushLbr(
xlock_core(&OldIrql);
+ //
// Disable LBR
+ //
xprintdbg("LIBIHT-COM: Flush LBR on cpu core: %d\n", xcoreid());
xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
@@ -157,7 +158,7 @@ LbrFlushLbr(
xwrmsr(MSR_LBR_SELECT, 0);
xwrmsr(MSR_LBR_TOS, 0);
- for (i = 0; i < lbr_capacity; i++)
+ for (i = 0; i < LbrCapacity; i++)
{
xwrmsr(MSR_LBR_NHM_FROM + i, 0);
xwrmsr(MSR_LBR_NHM_TO + i, 0);
@@ -167,10 +168,9 @@ LbrFlushLbr(
}
NTSTATUS
-LbrEnableLbr(
- struct lbr_ioctl_request * Request)
+LbrEnableLbr(LBR_IOCTL_REQUEST * Request)
{
- struct lbr_state * State;
+ LBR_STATE * State;
State = LbrFindLbrState(Request->lbr_config.pid);
if (State)
@@ -201,10 +201,9 @@ LbrEnableLbr(
}
NTSTATUS
-LbrDisableLbr(
- struct lbr_ioctl_request * Request)
+LbrDisableLbr(LBR_IOCTL_REQUEST * Request)
{
- struct lbr_state * State;
+ LBR_STATE * State;
State = LbrFindLbrState(Request->lbr_config.pid);
if (State == NULL)
@@ -222,13 +221,12 @@ LbrDisableLbr(
}
NTSTATUS
-LbrDumpLbr(
- struct lbr_ioctl_request * Request)
+LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
{
- ULONGLONG i, BytesLeft;
- struct lbr_state * State;
- struct lbr_data ReqBuf;
- KIRQL OldIrql;
+ ULONGLONG i, BytesLeft;
+ LBR_STATE * State;
+ LBR_DATA ReqBuf;
+ KIRQL OldIrql;
State = LbrFindLbrState(Request->lbr_config.pid);
if (State == NULL)
@@ -247,14 +245,14 @@ LbrDumpLbr(
LbrPutLbr(State);
}
- xacquire_lock(lbr_state_lock, &OldIrql);
+ xacquire_lock(LbrStateLock, &OldIrql);
// Dump the LBR state to debug logs
xprintdbg("PROC_PID: %d\n", State->config.pid);
xprintdbg("MSR_LBR_SELECT: 0x%llx\n", State->config.lbr_select);
xprintdbg("MSR_LBR_TOS: %lld\n", State->data->lbr_tos);
- for (i = 0; i < lbr_capacity; i++)
+ for (i = 0; i < LbrCapacity; i++)
{
xprintdbg("MSR_LBR_NHM_FROM[%2d]: 0x%llx\n", (ULONG)i, State->data->entries[i].from);
xprintdbg("MSR_LBR_NHM_TO [%2d]: 0x%llx\n", (ULONG)i, State->data->entries[i].to);
@@ -265,11 +263,11 @@ LbrDumpLbr(
// Dump the LBR data to userspace buffer
if (Request->buffer)
{
- BytesLeft = xcopy_from_user(&ReqBuf, Request->buffer, sizeof(struct lbr_data));
+ BytesLeft = xcopy_from_user(&ReqBuf, Request->buffer, sizeof(LBR_DATA));
if (BytesLeft)
{
xprintdbg("LIBIHT-COM: Copy LBR data from user failed\n");
- xrelease_lock(lbr_state_lock, &OldIrql);
+ xrelease_lock(LbrStateLock, &OldIrql);
return STATUS_UNSUCCESSFUL;
}
@@ -278,34 +276,33 @@ LbrDumpLbr(
{
BytesLeft = xcopy_to_user(ReqBuf.entries,
State->data->entries,
- lbr_capacity * sizeof(struct lbr_stack_entry));
+ LbrCapacity * sizeof(LBR_STACK_ENTRY));
if (BytesLeft)
{
xprintdbg("LIBIHT-COM: Copy LBR data to user failed\n");
- xrelease_lock(lbr_state_lock, &OldIrql);
+ xrelease_lock(LbrStateLock, &OldIrql);
return STATUS_UNSUCCESSFUL;
}
}
- BytesLeft = xcopy_to_user(Request->buffer, &ReqBuf, sizeof(struct lbr_data));
+ BytesLeft = xcopy_to_user(Request->buffer, &ReqBuf, sizeof(LBR_DATA));
if (BytesLeft)
{
xprintdbg("LIBIHT-COM: Copy LBR data to user failed\n");
- xrelease_lock(lbr_state_lock, &OldIrql);
+ xrelease_lock(LbrStateLock, &OldIrql);
return STATUS_UNSUCCESSFUL;
}
}
- xrelease_lock(lbr_state_lock, &OldIrql);
+ xrelease_lock(LbrStateLock, &OldIrql);
return STATUS_SUCCESS;
}
NTSTATUS
-LbrConfigLbr(
- struct lbr_ioctl_request * Request)
+LbrConfigLbr(LBR_IOCTL_REQUEST * Request)
{
- struct lbr_state * State;
+ LBR_STATE * State;
State = LbrFindLbrState(Request->lbr_config.pid);
if (State == NULL)
@@ -329,25 +326,24 @@ LbrConfigLbr(
return STATUS_SUCCESS;
}
-struct lbr_state *
-LbrCreateLbrState(
- VOID)
+LBR_STATE *
+LbrCreateLbrState()
{
- struct lbr_state * State;
- struct lbr_data * Data;
- struct lbr_stack_entry * Entries;
+ LBR_STATE * State;
+ LBR_DATA * Data;
+ LBR_STACK_ENTRY * Entries;
- State = xmalloc(sizeof(struct lbr_state));
+ State = xmalloc(sizeof(LBR_STATE));
if (State == NULL)
return NULL;
- Data = xmalloc(sizeof(struct lbr_data));
+ Data = xmalloc(sizeof(LBR_DATA));
if (Data == NULL)
{
xfree(State);
return NULL;
}
- SIZE_T TotalEntrySize = (SIZE_T)sizeof(struct lbr_stack_entry) * lbr_capacity;
+ SIZE_T TotalEntrySize = (SIZE_T)sizeof(LBR_STACK_ENTRY) * LbrCapacity;
Entries = xmalloc(TotalEntrySize);
if (Entries == NULL)
{
@@ -356,8 +352,8 @@ LbrCreateLbrState(
return NULL;
}
- xmemset(State, sizeof(struct lbr_state));
- xmemset(Data, sizeof(struct lbr_data));
+ xmemset(State, sizeof(LBR_STATE));
+ xmemset(Data, sizeof(LBR_DATA));
xmemset(Entries, TotalEntrySize);
State->data = Data;
@@ -366,19 +362,19 @@ LbrCreateLbrState(
return State;
}
-struct lbr_state *
+LBR_STATE *
LbrFindLbrState(ULONG Pid)
{
- KIRQL OldIrql;
- struct lbr_state * RetState = NULL;
- PLIST_ENTRY Link;
+ KIRQL OldIrql;
+ LBR_STATE * RetState = NULL;
+ PLIST_ENTRY Link;
- xacquire_lock(&lbr_state_lock, &OldIrql);
+ xacquire_lock(&LbrStateLock, &OldIrql);
// Iterating through LIST_ENTRY correctly
- for (Link = lbr_state_head.Flink; Link != &lbr_state_head; Link = Link->Flink)
+ for (Link = LbrStateHead.Flink; Link != &LbrStateHead; Link = Link->Flink)
{
- struct lbr_state * Curr = CONTAINING_RECORD(Link, struct lbr_state, list);
+ LBR_STATE * Curr = CONTAINING_RECORD(Link, LBR_STATE, list);
if (Pid != 0 && Curr->config.pid == Pid)
{
RetState = Curr;
@@ -386,35 +382,33 @@ LbrFindLbrState(ULONG Pid)
}
}
- xrelease_lock(&lbr_state_lock, &OldIrql);
+ xrelease_lock(&LbrStateLock, &OldIrql);
return RetState;
}
-void
-LbrInsertLbrState(
- struct lbr_state * NewState)
+VOID
+LbrInsertLbrState(LBR_STATE * NewState)
{
KIRQL OldIrql;
if (NewState == NULL)
return;
- xacquire_lock(lbr_state_lock, &OldIrql);
+ xacquire_lock(LbrStateLock, &OldIrql);
xprintdbg("LIBIHT-COM: Insert LBR state for pid %d\n", NewState->config.pid);
- xlist_add(NewState->list, lbr_state_head);
- xrelease_lock(lbr_state_lock, &OldIrql);
+ xlist_add(NewState->list, LbrStateHead);
+ xrelease_lock(LbrStateLock, &OldIrql);
}
-void
-LbrRemoveLbrState(
- struct lbr_state * OldState)
+VOID
+LbrRemoveLbrState(LBR_STATE * OldState)
{
KIRQL OldIrql;
if (OldState == NULL)
return;
- xacquire_lock(lbr_state_lock, &OldIrql);
+ xacquire_lock(LbrStateLock, &OldIrql);
xprintdbg("LIBIHT-COM: Remove LBR state for pid %d\n", OldState->config.pid);
xlist_del(OldState->list);
@@ -422,22 +416,22 @@ LbrRemoveLbrState(
xfree(OldState->data);
xfree(OldState);
- xrelease_lock(lbr_state_lock, &OldIrql);
+ xrelease_lock(LbrStateLock, &OldIrql);
}
-void
-LbrFreeLbrStatList(VOID)
+VOID
+LbrFreeLbrStatList()
{
- KIRQL OldIrql;
- struct lbr_state * CurrState;
- PLIST_ENTRY CurrLink;
+ KIRQL OldIrql;
+ LBR_STATE * CurrState;
+ PLIST_ENTRY CurrLink;
- xacquire_lock(&lbr_state_lock, &OldIrql);
+ xacquire_lock(&LbrStateLock, &OldIrql);
- CurrLink = lbr_state_head.Flink;
- while (CurrLink != &lbr_state_head)
+ CurrLink = LbrStateHead.Flink;
+ while (CurrLink != &LbrStateHead)
{
- CurrState = CONTAINING_RECORD(CurrLink, struct lbr_state, list);
+ CurrState = CONTAINING_RECORD(CurrLink, LBR_STATE, list);
CurrLink = CurrLink->Flink; // Get next before deleting
xlist_del(CurrState->list);
@@ -446,12 +440,11 @@ LbrFreeLbrStatList(VOID)
xfree(CurrState);
}
- xrelease_lock(&lbr_state_lock, &OldIrql);
+ xrelease_lock(&LbrStateLock, &OldIrql);
}
NTSTATUS
-LbrIoctlHandler(
- struct xioctl_request * Request)
+LbrIoctlHandler(XIOCTL_REQUEST * Request)
{
NTSTATUS Status = STATUS_SUCCESS;
@@ -479,12 +472,12 @@ LbrIoctlHandler(
return Status;
}
-void
-LbrCswitchHandler(
- ULONG PrevPid,
- ULONG NextPid)
+VOID
+LbrCswitchHandler(ULONG PrevPid,
+ ULONG NextPid)
{
- struct lbr_state *PrevState, *NextState;
+ LBR_STATE * PrevState;
+ LBR_STATE * NextState;
PrevState = LbrFindLbrState(PrevPid);
NextState = LbrFindLbrState(NextPid);
@@ -506,13 +499,13 @@ LbrCswitchHandler(
}
}
-void
+VOID
LbrNewprocHandler(
ULONG ParentPid,
ULONG ChildPid)
{
- struct lbr_state *ParentState, *ChildState;
- KIRQL OldIrql;
+ LBR_STATE *ParentState, *ChildState;
+ KIRQL OldIrql;
ParentState = LbrFindLbrState(ParentPid);
if (ParentState == NULL)
@@ -526,14 +519,14 @@ LbrNewprocHandler(
if (ChildState == NULL)
return;
- xacquire_lock(lbr_state_lock, &OldIrql);
+ xacquire_lock(LbrStateLock, &OldIrql);
ChildState->parent = ParentState;
ChildState->config.pid = ChildPid;
ChildState->config.lbr_select = ParentState->config.lbr_select;
xmemcpy(ChildState->data,
ParentState->data,
- sizeof(struct lbr_data) + lbr_capacity * sizeof(struct lbr_stack_entry));
- xrelease_lock(lbr_state_lock, &OldIrql);
+ sizeof(LBR_DATA) + LbrCapacity * sizeof(LBR_STACK_ENTRY));
+ xrelease_lock(LbrStateLock, &OldIrql);
LbrInsertLbrState(ChildState);
@@ -542,7 +535,7 @@ LbrNewprocHandler(
}
NTSTATUS
-LbrCheck(VOID)
+LbrCheck()
{
ULONG a, b, c, d;
ULONG Family, Model;
@@ -553,16 +546,16 @@ LbrCheck(VOID)
Family = ((a >> 8) & 0xF) + ((a >> 20) & 0xFF);
Model = ((a >> 4) & 0xF) | ((a >> 12) & 0xF0);
- for (i = 0; i < sizeof(cpu_lbr_maps) / sizeof(cpu_lbr_maps[0]); ++i)
+ for (i = 0; i < sizeof(CPU_LBR_MAPS) / sizeof(CPU_LBR_MAPS[0]); ++i)
{
- if (Model == cpu_lbr_maps[i].model)
+ if (Model == CPU_LBR_MAPS[i].model)
{
- lbr_capacity = cpu_lbr_maps[i].lbr_capacity;
+ LbrCapacity = CPU_LBR_MAPS[i].lbr_capacity;
break;
}
}
- if (lbr_capacity == 0)
+ if (LbrCapacity == 0)
return STATUS_NOT_SUPPORTED;
return STATUS_SUCCESS;
}
diff --git a/hyperdbg/hypertrace/header/Tracing.h b/hyperdbg/hypertrace/header/Tracing.h
index 4c46a596..ed55f653 100644
--- a/hyperdbg/hypertrace/header/Tracing.h
+++ b/hyperdbg/hypertrace/header/Tracing.h
@@ -11,8 +11,6 @@
#pragma once
-#include "pch.h"
-
// Intel MSR Constants
#define MSR_IA32_DEBUGCTLMSR 0x000001D9
#define DEBUGCTLMSR_LBR (1ULL << 0)
@@ -26,46 +24,52 @@
// Structures //
//////////////////////////////////////////////////
-struct lbr_stack_entry
+typedef struct _LBR_STACK_ENTRY
{
ULONGLONG from;
ULONGLONG to;
-};
-struct lbr_data
+} LBR_STACK_ENTRY, PLBR_STACK_ENTRY;
+
+typedef struct _LBR_DATA
{
- ULONGLONG lbr_tos;
- struct lbr_stack_entry * entries;
-};
+ ULONGLONG lbr_tos;
+ LBR_STACK_ENTRY * entries;
-struct lbr_config
+} LBR_DATA, *PLBR_DATA;
+
+typedef struct _LBR_CONFIG
{
ULONG pid;
ULONGLONG lbr_select;
-};
-struct lbr_state
+} LBR_CONFIG, *PLBR_CONFIG;
+
+typedef struct _LBR_STATE
{
- struct lbr_config config;
- struct lbr_data * data;
- struct lbr_state * parent;
- LIST_ENTRY list;
-};
+ LBR_CONFIG config;
+ LBR_DATA * data;
+ PVOID parent;
+ LIST_ENTRY list;
-struct lbr_ioctl_request
+} LBR_STATE, *PLBR_STATE;
+
+typedef struct _LBR_IOCTL_REQUEST
{
- struct lbr_config lbr_config;
- struct lbr_data * buffer;
-};
+ LBR_CONFIG lbr_config;
+ LBR_DATA * buffer;
-struct xioctl_request
+} LBR_IOCTL_REQUEST, *PLBR_IOCTL_REQUEST;
+
+typedef struct _XIOCTL_REQUEST
{
ULONG cmd;
union
{
- struct lbr_ioctl_request lbr;
+ LBR_IOCTL_REQUEST lbr;
} body;
-};
+
+} XIOCTL_REQUEST, *PXIOCTL_REQUEST;
// IOCTL Commands
#define LIBIHT_IOCTL_ENABLE_LBR 0x1
@@ -122,28 +126,38 @@ extern ULONGLONG lbr_capacity;
extern LIST_ENTRY lbr_state_head;
extern KSPIN_LOCK lbr_state_lock; // Standardized to KSPIN_LOCK
-struct cpu_lbr_map
+typedef struct _CPU_LBR_MAP
{
ULONG model;
ULONG lbr_capacity;
-};
+} CPU_LBR_MAP, *PCPU_LBR_MAP;
-extern struct cpu_lbr_map cpu_lbr_maps[];
+extern CPU_LBR_MAP CPU_LBR_MAPS[];
//////////////////////////////////////////////////
// Prototypes //
//////////////////////////////////////////////////
-void
-LbrGetLbr(struct lbr_state * State);
-void
- LbrPutLbr(struct lbr_state * State);
-struct lbr_state * LbrCreateLbrState(VOID);
-struct lbr_state *
+VOID
+LbrGetLbr(LBR_STATE * State);
+
+VOID
+LbrPutLbr(LBR_STATE * State);
+
+LBR_STATE *
+LbrCreateLbrState();
+
+LBR_STATE *
LbrFindLbrState(ULONG Pid);
-void
-LbrInsertLbrState(struct lbr_state * NewState);
-void
- LbrRemoveLbrState(struct lbr_state * OldState);
-void LbrFreeLbrStatList(VOID);
-NTSTATUS LbrCheck(VOID);
+
+VOID
+LbrInsertLbrState(LBR_STATE * NewState);
+
+VOID
+LbrRemoveLbrState(LBR_STATE * OldState);
+
+VOID
+LbrFreeLbrStatList();
+
+NTSTATUS
+LbrCheck();
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index d9ec55b6..ea25409b 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -43,6 +43,10 @@
#include "SDK/modules/HyperLog.h"
#include "SDK/imports/kernel/HyperDbgHyperLogImports.h"
#include "components/spinlock/header/Spinlock.h"
+
+//
+//
+//
#include "Tracing.h"
//
diff --git a/hyperdbg/hypertrace/hypertrace.inf b/hyperdbg/hypertrace/hypertrace.inf
deleted file mode 100644
index 7fe4240f..00000000
--- a/hyperdbg/hypertrace/hypertrace.inf
+++ /dev/null
@@ -1,77 +0,0 @@
-;
-; hypertrace.inf
-;
-
-[Version]
-Signature="$WINDOWS NT$"
-Class=System ; TODO: specify appropriate Class
-ClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318} ; TODO: specify appropriate ClassGuid
-Provider=%ManufacturerName%
-CatalogFile=hypertrace.cat
-DriverVer= ; TODO: set DriverVer in stampinf property pages
-PnpLockdown=1
-
-[DestinationDirs]
-DefaultDestDir = 12
-hypertrace_Device_CoInstaller_CopyFiles = 11
-
-[SourceDisksNames]
-1 = %DiskName%,,,""
-
-[SourceDisksFiles]
-hypertrace.sys = 1,,
-WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll=1 ; make sure the number matches with SourceDisksNames
-
-;*****************************************
-; Install Section
-;*****************************************
-
-[Manufacturer]
-%ManufacturerName%=Standard,NT$ARCH$
-
-[Standard.NT$ARCH$]
-%hypertrace.DeviceDesc%=hypertrace_Device, Root\hypertrace ; TODO: edit hw-id
-
-[hypertrace_Device.NT]
-CopyFiles=Drivers_Dir
-
-[Drivers_Dir]
-hypertrace.sys
-
-;-------------- Service installation
-[hypertrace_Device.NT.Services]
-AddService = hypertrace,%SPSVCINST_ASSOCSERVICE%, hypertrace_Service_Inst
-
-; -------------- hypertrace driver install sections
-[hypertrace_Service_Inst]
-DisplayName = %hypertrace.SVCDESC%
-ServiceType = 1 ; SERVICE_KERNEL_DRIVER
-StartType = 3 ; SERVICE_DEMAND_START
-ErrorControl = 1 ; SERVICE_ERROR_NORMAL
-ServiceBinary = %12%\hypertrace.sys
-
-;
-;--- hypertrace_Device Coinstaller installation ------
-;
-
-[hypertrace_Device.NT.CoInstallers]
-AddReg=hypertrace_Device_CoInstaller_AddReg
-CopyFiles=hypertrace_Device_CoInstaller_CopyFiles
-
-[hypertrace_Device_CoInstaller_AddReg]
-HKR,,CoInstallers32,0x00010000, "WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll,WdfCoInstaller"
-
-[hypertrace_Device_CoInstaller_CopyFiles]
-WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll
-
-[hypertrace_Device.NT.Wdf]
-KmdfService = hypertrace, hypertrace_wdfsect
-[hypertrace_wdfsect]
-KmdfLibraryVersion = $KMDFVERSION$
-
-[Strings]
-SPSVCINST_ASSOCSERVICE= 0x00000002
-ManufacturerName="" ;TODO: Replace with your manufacturer name
-DiskName = "hypertrace Installation Disk"
-hypertrace.DeviceDesc = "hypertrace Device"
-hypertrace.SVCDESC = "hypertrace Service"
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index b0848af2..b561bfd8 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -96,9 +96,6 @@
hypertrace.def
-
-
-
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
index 47593d3d..de56cf93 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj.filters
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -1,10 +1,6 @@
-
- {8E41214B-6785-4CFE-B992-037D68949A14}
- inf;inv;inx;mof;mc;
-
{4FC737F1-C7A5-4376-A066-2A32D752A2FF}
cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
@@ -20,11 +16,6 @@
{21f0281e-fc2a-4e13-97ac-e4b35a05a31e}
-
-
- Driver Files
-
-
code
From 569881c1c198e966c40b0bcd853eb8d6d0bf1624 Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 7 Feb 2026 23:33:36 +0100
Subject: [PATCH 071/323] refactoring and add function information
---
hyperdbg/hypertrace/code/Tracing.c | 255 +++++++++++++++++++--------
hyperdbg/hypertrace/header/Tracing.h | 38 ++--
hyperdbg/script-engine/code/common.c | 7 +
3 files changed, 204 insertions(+), 96 deletions(-)
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index a64d144c..12c4bda0 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -82,15 +82,12 @@ CPU_LBR_MAP CPU_LBR_MAPS[] = {
{0x35, 8},
{0x36, 8}};
-// Note: MAX_IRQL_LEN is removed in favor of native KIRQL.
-
-VOID
-XWriteMsr(ULONG Msr,
- ULONGLONG Val)
-{
- __writemsr(Msr, Val);
-}
-
+/**
+ * @brief Read LBR MSRs and store the values in the provided LBR_STATE structure
+ *
+ * @param State
+ * @return VOID
+ */
VOID
LbrGetLbr(LBR_STATE * State)
{
@@ -103,17 +100,23 @@ LbrGetLbr(LBR_STATE * State)
xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
xacquire_lock(LbrStateLock, &OldIrql);
- xrdmsr(MSR_LBR_SELECT, &State->config.lbr_select);
- xrdmsr(MSR_LBR_TOS, &State->data->lbr_tos);
+ xrdmsr(MSR_LBR_SELECT, &State->Config.LbrSelect);
+ xrdmsr(MSR_LBR_TOS, &State->Data->LbrTos);
for (i = 0; i < (ULONG)LbrCapacity; i++)
{
- xrdmsr(MSR_LBR_NHM_FROM + i, &State->data->entries[i].from);
- xrdmsr(MSR_LBR_NHM_TO + i, &State->data->entries[i].to);
+ xrdmsr(MSR_LBR_NHM_FROM + i, &State->Data->Entries[i].From);
+ xrdmsr(MSR_LBR_NHM_TO + i, &State->Data->Entries[i].To);
}
xrelease_lock(&LbrStateLock, &OldIrql);
}
+/**
+ * @brief Write LBR MSRs from the provided LBR_STATE structure
+ *
+ * @param State
+ * @return VOID
+ */
VOID
LbrPutLbr(LBR_STATE * State)
{
@@ -122,13 +125,13 @@ LbrPutLbr(LBR_STATE * State)
KIRQL OldIrql;
xacquire_lock(&LbrStateLock, &OldIrql);
- xwrmsr(MSR_LBR_SELECT, State->config.lbr_select);
- xwrmsr(MSR_LBR_TOS, State->data->lbr_tos);
+ xwrmsr(MSR_LBR_SELECT, State->Config.LbrSelect);
+ xwrmsr(MSR_LBR_TOS, State->Data->LbrTos);
for (i = 0; i < (ULONG)LbrCapacity; i++)
{
- xwrmsr(MSR_LBR_NHM_FROM + i, State->data->entries[i].from);
- xwrmsr(MSR_LBR_NHM_TO + i, State->data->entries[i].to);
+ xwrmsr(MSR_LBR_NHM_FROM + i, State->Data->Entries[i].From);
+ xwrmsr(MSR_LBR_NHM_TO + i, State->Data->Entries[i].To);
}
xrelease_lock(&LbrStateLock, &OldIrql);
@@ -137,6 +140,11 @@ LbrPutLbr(LBR_STATE * State)
xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
}
+/**
+ * @brief Flush LBR MSRs by disabling LBR and clearing all LBR entries
+ *
+ * @return VOID
+ */
VOID
LbrFlushLbr()
{
@@ -154,7 +162,9 @@ LbrFlushLbr()
DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+ //
// Flush LBR registers
+ //
xwrmsr(MSR_LBR_SELECT, 0);
xwrmsr(MSR_LBR_TOS, 0);
@@ -167,16 +177,22 @@ LbrFlushLbr()
xrelease_core(&OldIrql);
}
+/**
+ * @brief Enable LBR for a specific process and store the configuration in the global LBR state list
+ *
+ * @param Request
+ * @return NTSTATUS
+ */
NTSTATUS
LbrEnableLbr(LBR_IOCTL_REQUEST * Request)
{
LBR_STATE * State;
- State = LbrFindLbrState(Request->lbr_config.pid);
+ State = LbrFindLbrState(Request->LbrConfig.Pid);
if (State)
{
xprintdbg("LIBIHT-COM: LBR already enabled for pid %d\n",
- Request->lbr_config.pid);
+ Request->LbrConfig.Pid);
return STATUS_ALREADY_REGISTERED;
}
@@ -187,39 +203,55 @@ LbrEnableLbr(LBR_IOCTL_REQUEST * Request)
return STATUS_INSUFFICIENT_RESOURCES;
}
+ //
// Setup config fields for LBR state
- State->parent = NULL;
- State->config.pid = Request->lbr_config.pid ? Request->lbr_config.pid : xgetcurrent_pid();
- State->config.lbr_select = Request->lbr_config.lbr_select ? Request->lbr_config.lbr_select : LBR_SELECT;
+ //
+ State->Parent = NULL;
+ State->Config.Pid = Request->LbrConfig.Pid ? Request->LbrConfig.Pid : xgetcurrent_pid();
+ State->Config.LbrSelect = Request->LbrConfig.LbrSelect ? Request->LbrConfig.LbrSelect : LBR_SELECT;
LbrInsertLbrState(State);
+ //
// If the requesting process is the current process, trace it right away
- if (State->config.pid == xgetcurrent_pid())
+ //
+ if (State->Config.Pid == xgetcurrent_pid())
LbrPutLbr(State);
return STATUS_SUCCESS;
}
+/**
+ * @brief Disable LBR for a specific process and remove the corresponding LBR state from the global list
+ *
+ * @param Request
+ * @return NTSTATUS
+ */
NTSTATUS
LbrDisableLbr(LBR_IOCTL_REQUEST * Request)
{
LBR_STATE * State;
- State = LbrFindLbrState(Request->lbr_config.pid);
+ State = LbrFindLbrState(Request->LbrConfig.Pid);
if (State == NULL)
{
xprintdbg("LIBIHT-COM: LBR not enabled for pid %d\n",
- Request->lbr_config.pid);
+ Request->LbrConfig.Pid);
return STATUS_NOT_FOUND;
}
- if (State->config.pid == xgetcurrent_pid())
+ if (State->Config.Pid == xgetcurrent_pid())
LbrGetLbr(State);
LbrRemoveLbrState(State);
return STATUS_SUCCESS;
}
+/**
+ * @brief Dump LBR info for a specific process to debug logs and optionally copy the LBR data to user buffer
+ *
+ * @param Request
+ * @return NTSTATUS
+ */
NTSTATUS
LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
{
@@ -228,42 +260,51 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
LBR_DATA ReqBuf;
KIRQL OldIrql;
- State = LbrFindLbrState(Request->lbr_config.pid);
+ State = LbrFindLbrState(Request->LbrConfig.Pid);
if (State == NULL)
{
xprintdbg("LIBIHT-COM: LBR not enabled for pid %d\n",
- Request->lbr_config.pid);
+ Request->LbrConfig.Pid);
return STATUS_NOT_FOUND;
}
+ //
// Examine if the current process is the owner of the LBR state
- if (State->config.pid == xgetcurrent_pid())
+ //
+ if (State->Config.Pid == xgetcurrent_pid())
{
xprintdbg("LIBIHT-COM: Dump LBR for current process\n");
+
+ //
// Get fresh LBR info
+ //
LbrGetLbr(State);
LbrPutLbr(State);
}
xacquire_lock(LbrStateLock, &OldIrql);
+ //
// Dump the LBR state to debug logs
- xprintdbg("PROC_PID: %d\n", State->config.pid);
- xprintdbg("MSR_LBR_SELECT: 0x%llx\n", State->config.lbr_select);
- xprintdbg("MSR_LBR_TOS: %lld\n", State->data->lbr_tos);
+ //
+ xprintdbg("PROC_PID: %d\n", State->Config.Pid);
+ xprintdbg("MSR_LBR_SELECT: 0x%llx\n", State->Config.LbrSelect);
+ xprintdbg("MSR_LBR_TOS: %lld\n", State->Data->LbrTos);
for (i = 0; i < LbrCapacity; i++)
{
- xprintdbg("MSR_LBR_NHM_FROM[%2d]: 0x%llx\n", (ULONG)i, State->data->entries[i].from);
- xprintdbg("MSR_LBR_NHM_TO [%2d]: 0x%llx\n", (ULONG)i, State->data->entries[i].to);
+ xprintdbg("MSR_LBR_NHM_FROM[%2d]: 0x%llx\n", (ULONG)i, State->Data->Entries[i].From);
+ xprintdbg("MSR_LBR_NHM_TO [%2d]: 0x%llx\n", (ULONG)i, State->Data->Entries[i].To);
}
xprintdbg("LIBIHT-COM: LBR info for cpuid: %d\n", xcoreid());
+ //
// Dump the LBR data to userspace buffer
- if (Request->buffer)
+ //
+ if (Request->Buffer)
{
- BytesLeft = xcopy_from_user(&ReqBuf, Request->buffer, sizeof(LBR_DATA));
+ BytesLeft = xcopy_from_user(&ReqBuf, Request->Buffer, sizeof(LBR_DATA));
if (BytesLeft)
{
xprintdbg("LIBIHT-COM: Copy LBR data from user failed\n");
@@ -271,11 +312,11 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
return STATUS_UNSUCCESSFUL;
}
- ReqBuf.lbr_tos = State->data->lbr_tos;
- if (ReqBuf.entries)
+ ReqBuf.LbrTos = State->Data->LbrTos;
+ if (ReqBuf.Entries)
{
- BytesLeft = xcopy_to_user(ReqBuf.entries,
- State->data->entries,
+ BytesLeft = xcopy_to_user(ReqBuf.Entries,
+ State->Data->Entries,
LbrCapacity * sizeof(LBR_STACK_ENTRY));
if (BytesLeft)
@@ -286,7 +327,7 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
}
}
- BytesLeft = xcopy_to_user(Request->buffer, &ReqBuf, sizeof(LBR_DATA));
+ BytesLeft = xcopy_to_user(Request->Buffer, &ReqBuf, sizeof(LBR_DATA));
if (BytesLeft)
{
xprintdbg("LIBIHT-COM: Copy LBR data to user failed\n");
@@ -299,33 +340,44 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
return STATUS_SUCCESS;
}
+/**
+ * @brief Update LBR configuration for a specific process and optionally refresh the LBR MSRs if the current process is the owner
+ *
+ * @param Request
+ * @return NTSTATUS
+ */
NTSTATUS
LbrConfigLbr(LBR_IOCTL_REQUEST * Request)
{
LBR_STATE * State;
- State = LbrFindLbrState(Request->lbr_config.pid);
+ State = LbrFindLbrState(Request->LbrConfig.Pid);
if (State == NULL)
{
xprintdbg("LIBIHT-COM: LBR not enabled for pid %d\n",
- Request->lbr_config.pid);
+ Request->LbrConfig.Pid);
return STATUS_NOT_FOUND;
}
- if (State->config.pid == xgetcurrent_pid())
+ if (State->Config.Pid == xgetcurrent_pid())
{
LbrGetLbr(State);
- State->config.lbr_select = Request->lbr_config.lbr_select;
+ State->Config.LbrSelect = Request->LbrConfig.LbrSelect;
LbrPutLbr(State);
}
else
{
- State->config.lbr_select = Request->lbr_config.lbr_select;
+ State->Config.LbrSelect = Request->LbrConfig.LbrSelect;
}
return STATUS_SUCCESS;
}
+/**
+ * @brief Create a new LBR_STATE structure with allocated memory for LBR data and entries
+ *
+ * @return LBR_STATE*
+ */
LBR_STATE *
LbrCreateLbrState()
{
@@ -356,12 +408,18 @@ LbrCreateLbrState()
xmemset(Data, sizeof(LBR_DATA));
xmemset(Entries, TotalEntrySize);
- State->data = Data;
- Data->entries = Entries;
+ State->Data = Data;
+ Data->Entries = Entries;
return State;
}
+/**
+ * @brief Find the LBR_STATE structure for a specific process ID from the global list
+ *
+ * @param Pid
+ * @return LBR_STATE*
+ */
LBR_STATE *
LbrFindLbrState(ULONG Pid)
{
@@ -371,11 +429,13 @@ LbrFindLbrState(ULONG Pid)
xacquire_lock(&LbrStateLock, &OldIrql);
+ //
// Iterating through LIST_ENTRY correctly
+ //
for (Link = LbrStateHead.Flink; Link != &LbrStateHead; Link = Link->Flink)
{
- LBR_STATE * Curr = CONTAINING_RECORD(Link, LBR_STATE, list);
- if (Pid != 0 && Curr->config.pid == Pid)
+ LBR_STATE * Curr = CONTAINING_RECORD(Link, LBR_STATE, List);
+ if (Pid != 0 && Curr->Config.Pid == Pid)
{
RetState = Curr;
break;
@@ -386,6 +446,12 @@ LbrFindLbrState(ULONG Pid)
return RetState;
}
+/**
+ * @brief Insert a new LBR_STATE structure into the global list with proper locking
+ *
+ * @param NewState
+ * @return VOID
+ */
VOID
LbrInsertLbrState(LBR_STATE * NewState)
{
@@ -395,11 +461,17 @@ LbrInsertLbrState(LBR_STATE * NewState)
return;
xacquire_lock(LbrStateLock, &OldIrql);
- xprintdbg("LIBIHT-COM: Insert LBR state for pid %d\n", NewState->config.pid);
- xlist_add(NewState->list, LbrStateHead);
+ xprintdbg("LIBIHT-COM: Insert LBR state for pid %d\n", NewState->Config.Pid);
+ xlist_add(NewState->List, LbrStateHead);
xrelease_lock(LbrStateLock, &OldIrql);
}
+/**
+ * @brief Remove an existing LBR_STATE structure from the global list and free its associated memory with proper locking
+ *
+ * @param OldState
+ * @return VOID
+ */
VOID
LbrRemoveLbrState(LBR_STATE * OldState)
{
@@ -409,16 +481,21 @@ LbrRemoveLbrState(LBR_STATE * OldState)
return;
xacquire_lock(LbrStateLock, &OldIrql);
- xprintdbg("LIBIHT-COM: Remove LBR state for pid %d\n", OldState->config.pid);
+ xprintdbg("LIBIHT-COM: Remove LBR state for pid %d\n", OldState->Config.Pid);
- xlist_del(OldState->list);
- xfree(OldState->data->entries);
- xfree(OldState->data);
+ xlist_del(OldState->List);
+ xfree(OldState->Data->Entries);
+ xfree(OldState->Data);
xfree(OldState);
xrelease_lock(LbrStateLock, &OldIrql);
}
+/**
+ * @brief Free all LBR_STATE structures in the global list and their associated memory with proper locking
+ *
+ * @return VOID
+ */
VOID
LbrFreeLbrStatList()
{
@@ -431,37 +508,43 @@ LbrFreeLbrStatList()
CurrLink = LbrStateHead.Flink;
while (CurrLink != &LbrStateHead)
{
- CurrState = CONTAINING_RECORD(CurrLink, LBR_STATE, list);
+ CurrState = CONTAINING_RECORD(CurrLink, LBR_STATE, List);
CurrLink = CurrLink->Flink; // Get next before deleting
- xlist_del(CurrState->list);
- xfree(CurrState->data->entries);
- xfree(CurrState->data);
+ xlist_del(CurrState->List);
+ xfree(CurrState->Data->Entries);
+ xfree(CurrState->Data);
xfree(CurrState);
}
xrelease_lock(&LbrStateLock, &OldIrql);
}
+/**
+ * @brief Handle IOCTL requests for LBR operations by dispatching to the appropriate function based on the command
+ *
+ * @param Request
+ * @return NTSTATUS
+ */
NTSTATUS
LbrIoctlHandler(XIOCTL_REQUEST * Request)
{
NTSTATUS Status = STATUS_SUCCESS;
- xprintdbg("LIBIHT-COM: LBR ioctl command %d.\n", Request->cmd);
- switch (Request->cmd)
+ xprintdbg("LIBIHT-COM: LBR ioctl command %d.\n", Request->Cmd);
+ switch (Request->Cmd)
{
case LIBIHT_IOCTL_ENABLE_LBR:
- Status = LbrEnableLbr(&Request->body.lbr);
+ Status = LbrEnableLbr(&Request->Body.Lbr);
break;
case LIBIHT_IOCTL_DISABLE_LBR:
- Status = LbrDisableLbr(&Request->body.lbr);
+ Status = LbrDisableLbr(&Request->Body.Lbr);
break;
case LIBIHT_IOCTL_DUMP_LBR:
- Status = LbrDumpLbr(&Request->body.lbr);
+ Status = LbrDumpLbr(&Request->Body.Lbr);
break;
case LIBIHT_IOCTL_CONFIG_LBR:
- Status = LbrConfigLbr(&Request->body.lbr);
+ Status = LbrConfigLbr(&Request->Body.Lbr);
break;
default:
xprintdbg("LIBIHT-COM: Invalid LBR ioctl command\n");
@@ -472,6 +555,13 @@ LbrIoctlHandler(XIOCTL_REQUEST * Request)
return Status;
}
+/**
+ * @brief Handle context switch events by saving the LBR state of the previous process and restoring the LBR state of the next process if they are being traced
+ *
+ * @param PrevPid
+ * @param NextPid
+ * @return VOID
+ */
VOID
LbrCswitchHandler(ULONG PrevPid,
ULONG NextPid)
@@ -485,7 +575,7 @@ LbrCswitchHandler(ULONG PrevPid,
if (PrevState)
{
xprintdbg("LIBIHT-COM: LBR context switch from pid %d on cpu core %d\n",
- PrevState->config.pid,
+ PrevState->Config.Pid,
xcoreid());
LbrGetLbr(PrevState);
}
@@ -493,12 +583,19 @@ LbrCswitchHandler(ULONG PrevPid,
if (NextState)
{
xprintdbg("LIBIHT-COM: LBR context switch to pid %d on cpu core %d\n",
- NextState->config.pid,
+ NextState->Config.Pid,
xcoreid());
LbrPutLbr(NextState);
}
}
+/**
+ * @brief Handle new process creation events by inheriting the LBR state from the parent process if it is being traced
+ *
+ * @param ParentPid
+ * @param ChildPid
+ * @return VOID
+ */
VOID
LbrNewprocHandler(
ULONG ParentPid,
@@ -520,11 +617,11 @@ LbrNewprocHandler(
return;
xacquire_lock(LbrStateLock, &OldIrql);
- ChildState->parent = ParentState;
- ChildState->config.pid = ChildPid;
- ChildState->config.lbr_select = ParentState->config.lbr_select;
- xmemcpy(ChildState->data,
- ParentState->data,
+ ChildState->Parent = ParentState;
+ ChildState->Config.Pid = ChildPid;
+ ChildState->Config.LbrSelect = ParentState->Config.LbrSelect;
+ xmemcpy(ChildState->Data,
+ ParentState->Data,
sizeof(LBR_DATA) + LbrCapacity * sizeof(LBR_STACK_ENTRY));
xrelease_lock(LbrStateLock, &OldIrql);
@@ -534,6 +631,11 @@ LbrNewprocHandler(
LbrPutLbr(ChildState);
}
+/**
+ * @brief Check if the current CPU supports LBR by examining the CPU family and model and looking up the corresponding LBR capacity
+ *
+ * @return NTSTATUS
+ */
NTSTATUS
LbrCheck()
{
@@ -548,14 +650,17 @@ LbrCheck()
for (i = 0; i < sizeof(CPU_LBR_MAPS) / sizeof(CPU_LBR_MAPS[0]); ++i)
{
- if (Model == CPU_LBR_MAPS[i].model)
+ if (Model == CPU_LBR_MAPS[i].Model)
{
- LbrCapacity = CPU_LBR_MAPS[i].lbr_capacity;
+ LbrCapacity = CPU_LBR_MAPS[i].LbrCapacity;
break;
}
}
if (LbrCapacity == 0)
+ {
return STATUS_NOT_SUPPORTED;
+ }
+
return STATUS_SUCCESS;
}
diff --git a/hyperdbg/hypertrace/header/Tracing.h b/hyperdbg/hypertrace/header/Tracing.h
index ed55f653..52c6ad94 100644
--- a/hyperdbg/hypertrace/header/Tracing.h
+++ b/hyperdbg/hypertrace/header/Tracing.h
@@ -26,48 +26,48 @@
typedef struct _LBR_STACK_ENTRY
{
- ULONGLONG from;
- ULONGLONG to;
+ ULONGLONG From;
+ ULONGLONG To;
} LBR_STACK_ENTRY, PLBR_STACK_ENTRY;
typedef struct _LBR_DATA
{
- ULONGLONG lbr_tos;
- LBR_STACK_ENTRY * entries;
+ ULONGLONG LbrTos;
+ LBR_STACK_ENTRY * Entries;
} LBR_DATA, *PLBR_DATA;
typedef struct _LBR_CONFIG
{
- ULONG pid;
- ULONGLONG lbr_select;
+ ULONG Pid;
+ ULONGLONG LbrSelect;
} LBR_CONFIG, *PLBR_CONFIG;
typedef struct _LBR_STATE
{
- LBR_CONFIG config;
- LBR_DATA * data;
- PVOID parent;
- LIST_ENTRY list;
+ LBR_CONFIG Config;
+ LBR_DATA * Data;
+ PVOID Parent;
+ LIST_ENTRY List;
} LBR_STATE, *PLBR_STATE;
typedef struct _LBR_IOCTL_REQUEST
{
- LBR_CONFIG lbr_config;
- LBR_DATA * buffer;
+ LBR_CONFIG LbrConfig;
+ LBR_DATA * Buffer;
} LBR_IOCTL_REQUEST, *PLBR_IOCTL_REQUEST;
typedef struct _XIOCTL_REQUEST
{
- ULONG cmd;
+ ULONG Cmd;
union
{
- LBR_IOCTL_REQUEST lbr;
- } body;
+ LBR_IOCTL_REQUEST Lbr;
+ } Body;
} XIOCTL_REQUEST, *PXIOCTL_REQUEST;
@@ -122,14 +122,10 @@ typedef struct _XIOCTL_REQUEST
// Global Variables //
//////////////////////////////////////////////////
-extern ULONGLONG lbr_capacity;
-extern LIST_ENTRY lbr_state_head;
-extern KSPIN_LOCK lbr_state_lock; // Standardized to KSPIN_LOCK
-
typedef struct _CPU_LBR_MAP
{
- ULONG model;
- ULONG lbr_capacity;
+ ULONG Model;
+ ULONG LbrCapacity;
} CPU_LBR_MAP, *PCPU_LBR_MAP;
extern CPU_LBR_MAP CPU_LBR_MAPS[];
diff --git a/hyperdbg/script-engine/code/common.c b/hyperdbg/script-engine/code/common.c
index 249f6464..be1c159c 100644
--- a/hyperdbg/script-engine/code/common.c
+++ b/hyperdbg/script-engine/code/common.c
@@ -58,6 +58,13 @@ NewUnknownToken()
return Token;
}
+/**
+ * @brief Allocates a new token with given type and value
+ *
+ * @param Type
+ * @param Value
+ * @return Token
+ */
PSCRIPT_ENGINE_TOKEN
NewToken(SCRIPT_ENGINE_TOKEN_TYPE Type, char * Value)
{
From 5e3e0d4081d691ff2b2779843d69007df8ca5c87 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 8 Feb 2026 03:02:43 +0100
Subject: [PATCH 072/323] import hyperlog into hypertrace and import and export
hypertrace routines
---
hyperdbg/hyperdbg.sln | 6 +
hyperdbg/hyperkd/header/pch.h | 6 +
hyperdbg/hypertrace/code/Tracing.c | 61 +++++-----
hyperdbg/hypertrace/header/Tracing.h | 3 -
hyperdbg/hypertrace/header/pch.h | 11 +-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 27 +++++
hyperdbg/include/SDK/modules/HyperEvade.h | 2 +-
hyperdbg/include/SDK/modules/HyperTrace.h | 109 ++++++++++++++++++
hyperdbg/include/SDK/modules/VMM.h | 2 +-
9 files changed, 192 insertions(+), 35 deletions(-)
create mode 100644 hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
create mode 100644 hyperdbg/include/SDK/modules/HyperTrace.h
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 678b9c62..f2e48124 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -87,6 +87,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "imports", "imports", "{B3D9
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hyperkd", "hyperkd\hyperkd.vcxproj", "{AFDD7028-1ED9-442E-8A3D-01CFA3AA1CAA}"
ProjectSection(ProjectDependencies) = postProject
+ {9FA45E25-DAEB-4C2D-806C-7908A180195D} = {9FA45E25-DAEB-4C2D-806C-7908A180195D}
{AFDE69E9-EE3D-470E-8407-C1F0D98F9E3D} = {AFDE69E9-EE3D-470E-8407-C1F0D98F9E3D}
{BB17323A-2460-4AE1-8AFE-B367400B934F} = {BB17323A-2460-4AE1-8AFE-B367400B934F}
EndProjectSection
@@ -97,6 +98,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{13E4
ProjectSection(SolutionItems) = preProject
include\SDK\modules\HyperEvade.h = include\SDK\modules\HyperEvade.h
include\SDK\Modules\HyperLog.h = include\SDK\Modules\HyperLog.h
+ include\SDK\modules\HyperTrace.h = include\SDK\modules\HyperTrace.h
include\SDK\Modules\VMM.h = include\SDK\Modules\VMM.h
EndProjectSection
EndProject
@@ -173,6 +175,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "kernel", "kernel", "{947577
include\SDK\imports\kernel\HyperDbgHyperEvade.h = include\SDK\imports\kernel\HyperDbgHyperEvade.h
include\SDK\Imports\Kernel\HyperDbgHyperLogImports.h = include\SDK\Imports\Kernel\HyperDbgHyperLogImports.h
include\SDK\Imports\Kernel\HyperDbgHyperLogIntrinsics.h = include\SDK\Imports\Kernel\HyperDbgHyperLogIntrinsics.h
+ include\SDK\imports\kernel\HyperDbgHyperTrace.h = include\SDK\imports\kernel\HyperDbgHyperTrace.h
include\SDK\Imports\Kernel\HyperDbgVmmImports.h = include\SDK\Imports\Kernel\HyperDbgVmmImports.h
EndProjectSection
EndProject
@@ -214,6 +217,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hyperdbg_app", "..\examples
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hyperevade", "hyperevade\hyperevade.vcxproj", "{B226530A-14B1-40AC-B82E-D9057400E7EE}"
+ ProjectSection(ProjectDependencies) = postProject
+ {AFDE69E9-EE3D-470E-8407-C1F0D98F9E3D} = {AFDE69E9-EE3D-470E-8407-C1F0D98F9E3D}
+ EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "hyper-v", "hyper-v", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
ProjectSection(SolutionItems) = preProject
diff --git a/hyperdbg/hyperkd/header/pch.h b/hyperdbg/hyperkd/header/pch.h
index 524fdaef..2c5375fe 100644
--- a/hyperdbg/hyperkd/header/pch.h
+++ b/hyperdbg/hyperkd/header/pch.h
@@ -154,6 +154,12 @@
//
#include "../script-eval/header/ScriptEngineHeader.h"
+//
+// Tracing (hypertrace) headers
+//
+#include "SDK/modules/HyperTrace.h"
+#include "SDK/imports/kernel/HyperDbgHyperTrace.h"
+
//
// Global variables
//
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 12c4bda0..898bc34f 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -181,9 +181,9 @@ LbrFlushLbr()
* @brief Enable LBR for a specific process and store the configuration in the global LBR state list
*
* @param Request
- * @return NTSTATUS
+ * @return BOOLEAN
*/
-NTSTATUS
+BOOLEAN
LbrEnableLbr(LBR_IOCTL_REQUEST * Request)
{
LBR_STATE * State;
@@ -193,14 +193,14 @@ LbrEnableLbr(LBR_IOCTL_REQUEST * Request)
{
xprintdbg("LIBIHT-COM: LBR already enabled for pid %d\n",
Request->LbrConfig.Pid);
- return STATUS_ALREADY_REGISTERED;
+ return FALSE;
}
State = LbrCreateLbrState();
if (State == NULL)
{
xprintdbg("LIBIHT-COM: Create LBR state failed\n");
- return STATUS_INSUFFICIENT_RESOURCES;
+ return FALSE;
}
//
@@ -217,16 +217,16 @@ LbrEnableLbr(LBR_IOCTL_REQUEST * Request)
if (State->Config.Pid == xgetcurrent_pid())
LbrPutLbr(State);
- return STATUS_SUCCESS;
+ return TRUE;
}
/**
* @brief Disable LBR for a specific process and remove the corresponding LBR state from the global list
*
* @param Request
- * @return NTSTATUS
+ * @return BOOLEAN
*/
-NTSTATUS
+BOOLEAN
LbrDisableLbr(LBR_IOCTL_REQUEST * Request)
{
LBR_STATE * State;
@@ -236,23 +236,26 @@ LbrDisableLbr(LBR_IOCTL_REQUEST * Request)
{
xprintdbg("LIBIHT-COM: LBR not enabled for pid %d\n",
Request->LbrConfig.Pid);
- return STATUS_NOT_FOUND;
+ return FALSE;
}
if (State->Config.Pid == xgetcurrent_pid())
+ {
LbrGetLbr(State);
+ }
LbrRemoveLbrState(State);
- return STATUS_SUCCESS;
+
+ return TRUE;
}
/**
* @brief Dump LBR info for a specific process to debug logs and optionally copy the LBR data to user buffer
*
* @param Request
- * @return NTSTATUS
+ * @return BOOLEAN
*/
-NTSTATUS
+BOOLEAN
LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
{
ULONGLONG i, BytesLeft;
@@ -261,11 +264,12 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
KIRQL OldIrql;
State = LbrFindLbrState(Request->LbrConfig.Pid);
+
if (State == NULL)
{
xprintdbg("LIBIHT-COM: LBR not enabled for pid %d\n",
Request->LbrConfig.Pid);
- return STATUS_NOT_FOUND;
+ return FALSE;
}
//
@@ -309,7 +313,7 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
{
xprintdbg("LIBIHT-COM: Copy LBR data from user failed\n");
xrelease_lock(LbrStateLock, &OldIrql);
- return STATUS_UNSUCCESSFUL;
+ return FALSE;
}
ReqBuf.LbrTos = State->Data->LbrTos;
@@ -323,7 +327,7 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
{
xprintdbg("LIBIHT-COM: Copy LBR data to user failed\n");
xrelease_lock(LbrStateLock, &OldIrql);
- return STATUS_UNSUCCESSFUL;
+ return FALSE;
}
}
@@ -332,31 +336,32 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
{
xprintdbg("LIBIHT-COM: Copy LBR data to user failed\n");
xrelease_lock(LbrStateLock, &OldIrql);
- return STATUS_UNSUCCESSFUL;
+ return FALSE;
}
}
xrelease_lock(LbrStateLock, &OldIrql);
- return STATUS_SUCCESS;
+ return TRUE;
}
/**
* @brief Update LBR configuration for a specific process and optionally refresh the LBR MSRs if the current process is the owner
*
* @param Request
- * @return NTSTATUS
+ * @return BOOLEAN
*/
-NTSTATUS
+BOOLEAN
LbrConfigLbr(LBR_IOCTL_REQUEST * Request)
{
LBR_STATE * State;
State = LbrFindLbrState(Request->LbrConfig.Pid);
+
if (State == NULL)
{
xprintdbg("LIBIHT-COM: LBR not enabled for pid %d\n",
Request->LbrConfig.Pid);
- return STATUS_NOT_FOUND;
+ return FALSE;
}
if (State->Config.Pid == xgetcurrent_pid())
@@ -370,7 +375,7 @@ LbrConfigLbr(LBR_IOCTL_REQUEST * Request)
State->Config.LbrSelect = Request->LbrConfig.LbrSelect;
}
- return STATUS_SUCCESS;
+ return TRUE;
}
/**
@@ -524,12 +529,12 @@ LbrFreeLbrStatList()
* @brief Handle IOCTL requests for LBR operations by dispatching to the appropriate function based on the command
*
* @param Request
- * @return NTSTATUS
+ * @return BOOLEAN
*/
-NTSTATUS
+BOOLEAN
LbrIoctlHandler(XIOCTL_REQUEST * Request)
{
- NTSTATUS Status = STATUS_SUCCESS;
+ BOOLEAN Status = TRUE;
xprintdbg("LIBIHT-COM: LBR ioctl command %d.\n", Request->Cmd);
switch (Request->Cmd)
@@ -548,7 +553,7 @@ LbrIoctlHandler(XIOCTL_REQUEST * Request)
break;
default:
xprintdbg("LIBIHT-COM: Invalid LBR ioctl command\n");
- Status = STATUS_INVALID_DEVICE_REQUEST;
+ Status = FALSE;
break;
}
@@ -634,9 +639,9 @@ LbrNewprocHandler(
/**
* @brief Check if the current CPU supports LBR by examining the CPU family and model and looking up the corresponding LBR capacity
*
- * @return NTSTATUS
+ * @return BOOLEAN
*/
-NTSTATUS
+BOOLEAN
LbrCheck()
{
ULONG a, b, c, d;
@@ -659,8 +664,8 @@ LbrCheck()
if (LbrCapacity == 0)
{
- return STATUS_NOT_SUPPORTED;
+ return FALSE;
}
- return STATUS_SUCCESS;
+ return TRUE;
}
diff --git a/hyperdbg/hypertrace/header/Tracing.h b/hyperdbg/hypertrace/header/Tracing.h
index 52c6ad94..8ff3f8b9 100644
--- a/hyperdbg/hypertrace/header/Tracing.h
+++ b/hyperdbg/hypertrace/header/Tracing.h
@@ -154,6 +154,3 @@ LbrRemoveLbrState(LBR_STATE * OldState);
VOID
LbrFreeLbrStatList();
-
-NTSTATUS
-LbrCheck();
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index ea25409b..7ad4c799 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -36,16 +36,18 @@
// Scope definitions
//
#define HYPERDBG_KERNEL_MODE
-#define HYPERDBG_HYPER_LOG
+#define HYPERDBG_HYPERTRACE
#include "UnloadDll.h"
#include "SDK/HyperDbgSdk.h"
#include "SDK/modules/HyperLog.h"
#include "SDK/imports/kernel/HyperDbgHyperLogImports.h"
+#include "SDK/imports/kernel/HyperDbgHyperLogIntrinsics.h"
+
#include "components/spinlock/header/Spinlock.h"
//
-//
+// Definition of tracing types and structures
//
#include "Tracing.h"
@@ -53,3 +55,8 @@
// Platform independent headers
//
#include "platform/kernel/header/Mem.h"
+
+//
+// Export functions
+//
+#include "SDK/imports/kernel/HyperDbgHyperTrace.h"
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
new file mode 100644
index 00000000..303a3bcf
--- /dev/null
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -0,0 +1,27 @@
+/**
+ * @file HyperDbgHyperTrace.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Headers relating exported functions from hypertrace (tracing) module
+ * @version 0.18
+ * @date 2026-02-08
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#ifdef HYPERDBG_HYPERTRACE
+# define IMPORT_EXPORT_HYPERTRACE __declspec(dllexport)
+#else
+# define IMPORT_EXPORT_HYPERTRACE __declspec(dllimport)
+#endif
+
+//////////////////////////////////////////////////
+// hypertrace functions //
+//////////////////////////////////////////////////
+
+//
+// Check if LBR is supported and initialize LBR state list and lock
+//
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+LbrCheck();
diff --git a/hyperdbg/include/SDK/modules/HyperEvade.h b/hyperdbg/include/SDK/modules/HyperEvade.h
index b1368348..1a42befb 100644
--- a/hyperdbg/include/SDK/modules/HyperEvade.h
+++ b/hyperdbg/include/SDK/modules/HyperEvade.h
@@ -2,7 +2,7 @@
* @file HyperEvade.h
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief HyperDbg's SDK for hyperevade project
- * @details This file contains definitions of HyperLog routines
+ * @details This file contains definitions of HyperEvade routines
* @version 0.14
* @date 2025-06-07
*
diff --git a/hyperdbg/include/SDK/modules/HyperTrace.h b/hyperdbg/include/SDK/modules/HyperTrace.h
new file mode 100644
index 00000000..0efc8c10
--- /dev/null
+++ b/hyperdbg/include/SDK/modules/HyperTrace.h
@@ -0,0 +1,109 @@
+/**
+ * @file HyperTrace.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief HyperDbg's SDK for hypertrace project
+ * @details This file contains definitions of HyperTrace routines
+ * @version 0.14
+ * @date 2025-06-07
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Callback Types //
+//////////////////////////////////////////////////
+
+/**
+ * @brief A function from the message tracer that send the inputs to the
+ * queue of the messages
+ *
+ */
+typedef BOOLEAN (*LOG_CALLBACK_PREPARE_AND_SEND_MESSAGE_TO_QUEUE)(UINT32 OperationCode,
+ BOOLEAN IsImmediateMessage,
+ BOOLEAN ShowCurrentSystemTime,
+ BOOLEAN Priority,
+ const char * Fmt,
+ va_list ArgList);
+
+/**
+ * @brief A function that sends the messages to message tracer buffers
+ *
+ */
+typedef BOOLEAN (*LOG_CALLBACK_SEND_MESSAGE_TO_QUEUE)(UINT32 OperationCode, BOOLEAN IsImmediateMessage, CHAR * LogMessage, UINT32 BufferLen, BOOLEAN Priority);
+
+/**
+ * @brief A function that sends the messages to message tracer buffers
+ *
+ */
+typedef BOOLEAN (*LOG_CALLBACK_SEND_BUFFER)(_In_ UINT32 OperationCode,
+ _In_reads_bytes_(BufferLength) PVOID Buffer,
+ _In_ UINT32 BufferLength,
+ _In_ BOOLEAN Priority);
+
+/**
+ * @brief A function that checks whether the priority or regular buffer is full or not
+ *
+ */
+typedef BOOLEAN (*LOG_CALLBACK_CHECK_IF_BUFFER_IS_FULL)(BOOLEAN Priority);
+
+/**
+ * @brief A function that checks the validity and safety of the target address
+ *
+ */
+typedef BOOLEAN (*CHECK_ACCESS_VALIDITY_AND_SAFETY)(UINT64 TargetAddress, UINT32 Size);
+
+/**
+ * @brief A function that reads memory safely on the target process
+ *
+ */
+typedef BOOLEAN (*MEMORY_MAPPER_READ_MEMORY_SAFE_ON_TARGET_PROCESS)(UINT64 VaAddressToRead, PVOID BufferToSaveMemory, SIZE_T SizeToRead);
+
+/**
+ * @brief A function that writes memory safely on the target process
+ *
+ */
+typedef BOOLEAN (*MEMORY_MAPPER_WRITE_MEMORY_SAFE_ON_TARGET_PROCESS)(UINT64 Destination, PVOID Source, SIZE_T Size);
+
+/**
+ * @brief A function that gets the process name from the process control block
+ *
+ */
+typedef PCHAR (*COMMON_GET_PROCESS_NAME_FROM_PROCESS_CONTROL_BLOCK)(PVOID Eprocess);
+
+//////////////////////////////////////////////////
+// Callback Structure //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Prototype of each function needed by hypertrace module
+ *
+ */
+typedef struct _HYPERTRACE_CALLBACKS
+{
+ //
+ // *** Log (Hyperlog) callbacks ***
+ //
+ LOG_CALLBACK_PREPARE_AND_SEND_MESSAGE_TO_QUEUE LogCallbackPrepareAndSendMessageToQueueWrapper;
+ LOG_CALLBACK_SEND_MESSAGE_TO_QUEUE LogCallbackSendMessageToQueue;
+ LOG_CALLBACK_SEND_BUFFER LogCallbackSendBuffer;
+ LOG_CALLBACK_CHECK_IF_BUFFER_IS_FULL LogCallbackCheckIfBufferIsFull;
+
+ //
+ // *** HYPERTRACE callbacks ***
+ //
+
+ //
+ // Memory callbacks
+ //
+ CHECK_ACCESS_VALIDITY_AND_SAFETY CheckAccessValidityAndSafety;
+ MEMORY_MAPPER_READ_MEMORY_SAFE_ON_TARGET_PROCESS MemoryMapperReadMemorySafeOnTargetProcess;
+ MEMORY_MAPPER_WRITE_MEMORY_SAFE_ON_TARGET_PROCESS MemoryMapperWriteMemorySafeOnTargetProcess;
+
+ //
+ // Common callbacks
+ //
+ COMMON_GET_PROCESS_NAME_FROM_PROCESS_CONTROL_BLOCK CommonGetProcessNameFromProcessControlBlock;
+
+} HYPERTRACE_CALLBACKS, *PHYPERTRACE_CALLBACKS;
diff --git a/hyperdbg/include/SDK/modules/VMM.h b/hyperdbg/include/SDK/modules/VMM.h
index ebdf3b53..9aa3a487 100644
--- a/hyperdbg/include/SDK/modules/VMM.h
+++ b/hyperdbg/include/SDK/modules/VMM.h
@@ -2,7 +2,7 @@
* @file VMM.h
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief HyperDbg's SDK for VMM project
- * @details This file contains definitions of HyperLog routines
+ * @details This file contains definitions of VMM routines
* @version 0.2
* @date 2023-01-15
*
From a0bd050330e0f7cea6af740f216ba1f9edb71e97 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 8 Feb 2026 03:35:04 +0100
Subject: [PATCH 073/323] Fix hyperlog linking issues and redirect DbgPrints to
LogInfo in hypertrace project
---
README.md | 2 +-
hyperdbg/hypertrace/code/Tracing.c | 98 ++++++++++++-------
hyperdbg/hypertrace/header/Tracing.h | 27 +++--
hyperdbg/hypertrace/header/pch.h | 27 ++++-
hyperdbg/hypertrace/hypertrace.vcxproj | 2 +
.../hypertrace/hypertrace.vcxproj.filters | 12 +++
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 6 ++
7 files changed, 129 insertions(+), 45 deletions(-)
diff --git a/README.md b/README.md
index a726f145..c5d6e03a 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
# HyperDbg Debugger
-**HyperDbg Debugger** is a free (as in free beer and freedom), open-source, community-driven, hypervisor-assisted, user-mode, and kernel-mode Windows debugger with a focus on using modern hardware technologies. It is a debugger designed for analyzing, fuzzing, and reversing.
+**HyperDbg Debugger** is a free (as in free beer), open-source, community-driven, hypervisor-assisted, user-mode, and kernel-mode Windows debugger with a focus on using modern hardware technologies. It is a debugger designed for analyzing, fuzzing, and reversing.
You can follow **HyperDbg** on **[Twitter](https://twitter.com/HyperDbg)** or **[Mastodon](https://infosec.exchange/@hyperdbg)** to get notified about new releases, or join any of the HyperDbg groups, where you can ask developers and open-source reversing enthusiasts for help setting up and using HyperDbg.
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 898bc34f..78bde9b4 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -82,6 +82,38 @@ CPU_LBR_MAP CPU_LBR_MAPS[] = {
{0x35, 8},
{0x36, 8}};
+/**
+ * @brief Hide debugger on transparent-mode (activate transparent-mode)
+ *
+ * @param HypertraceCallbacks
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
+{
+ //
+ // Check if any of the required callbacks are NULL
+ //
+ for (UINT32 i = 0; i < sizeof(HYPERTRACE_CALLBACKS) / sizeof(UINT64); i++)
+ {
+ if (((PVOID *)HypertraceCallbacks)[i] == NULL)
+ {
+ //
+ // The callback has null entry, so we cannot proceed
+ //
+ return FALSE;
+ }
+ }
+
+ //
+ // Save the callbacks
+ //
+ RtlCopyMemory(&g_Callbacks, HypertraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
+
+ return TRUE;
+}
+
/**
* @brief Read LBR MSRs and store the values in the provided LBR_STATE structure
*
@@ -157,7 +189,7 @@ LbrFlushLbr()
//
// Disable LBR
//
- xprintdbg("LIBIHT-COM: Flush LBR on cpu core: %d\n", xcoreid());
+ LogInfo("LIBIHT-COM: Flush LBR on cpu core: %d\n", xcoreid());
xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
@@ -191,15 +223,15 @@ LbrEnableLbr(LBR_IOCTL_REQUEST * Request)
State = LbrFindLbrState(Request->LbrConfig.Pid);
if (State)
{
- xprintdbg("LIBIHT-COM: LBR already enabled for pid %d\n",
- Request->LbrConfig.Pid);
+ LogInfo("LIBIHT-COM: LBR already enabled for pid %d\n",
+ Request->LbrConfig.Pid);
return FALSE;
}
State = LbrCreateLbrState();
if (State == NULL)
{
- xprintdbg("LIBIHT-COM: Create LBR state failed\n");
+ LogInfo("LIBIHT-COM: Create LBR state failed\n");
return FALSE;
}
@@ -234,8 +266,8 @@ LbrDisableLbr(LBR_IOCTL_REQUEST * Request)
State = LbrFindLbrState(Request->LbrConfig.Pid);
if (State == NULL)
{
- xprintdbg("LIBIHT-COM: LBR not enabled for pid %d\n",
- Request->LbrConfig.Pid);
+ LogInfo("LIBIHT-COM: LBR not enabled for pid %d\n",
+ Request->LbrConfig.Pid);
return FALSE;
}
@@ -267,8 +299,8 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
if (State == NULL)
{
- xprintdbg("LIBIHT-COM: LBR not enabled for pid %d\n",
- Request->LbrConfig.Pid);
+ LogInfo("LIBIHT-COM: LBR not enabled for pid %d\n",
+ Request->LbrConfig.Pid);
return FALSE;
}
@@ -277,7 +309,7 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
//
if (State->Config.Pid == xgetcurrent_pid())
{
- xprintdbg("LIBIHT-COM: Dump LBR for current process\n");
+ LogInfo("LIBIHT-COM: Dump LBR for current process\n");
//
// Get fresh LBR info
@@ -291,17 +323,17 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
//
// Dump the LBR state to debug logs
//
- xprintdbg("PROC_PID: %d\n", State->Config.Pid);
- xprintdbg("MSR_LBR_SELECT: 0x%llx\n", State->Config.LbrSelect);
- xprintdbg("MSR_LBR_TOS: %lld\n", State->Data->LbrTos);
+ LogInfo("PROC_PID: %d\n", State->Config.Pid);
+ LogInfo("MSR_LBR_SELECT: 0x%llx\n", State->Config.LbrSelect);
+ LogInfo("MSR_LBR_TOS: %lld\n", State->Data->LbrTos);
for (i = 0; i < LbrCapacity; i++)
{
- xprintdbg("MSR_LBR_NHM_FROM[%2d]: 0x%llx\n", (ULONG)i, State->Data->Entries[i].From);
- xprintdbg("MSR_LBR_NHM_TO [%2d]: 0x%llx\n", (ULONG)i, State->Data->Entries[i].To);
+ LogInfo("MSR_LBR_NHM_FROM[%2d]: 0x%llx\n", (ULONG)i, State->Data->Entries[i].From);
+ LogInfo("MSR_LBR_NHM_TO [%2d]: 0x%llx\n", (ULONG)i, State->Data->Entries[i].To);
}
- xprintdbg("LIBIHT-COM: LBR info for cpuid: %d\n", xcoreid());
+ LogInfo("LIBIHT-COM: LBR info for cpuid: %d\n", xcoreid());
//
// Dump the LBR data to userspace buffer
@@ -311,7 +343,7 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
BytesLeft = xcopy_from_user(&ReqBuf, Request->Buffer, sizeof(LBR_DATA));
if (BytesLeft)
{
- xprintdbg("LIBIHT-COM: Copy LBR data from user failed\n");
+ LogInfo("LIBIHT-COM: Copy LBR data from user failed\n");
xrelease_lock(LbrStateLock, &OldIrql);
return FALSE;
}
@@ -325,7 +357,7 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
if (BytesLeft)
{
- xprintdbg("LIBIHT-COM: Copy LBR data to user failed\n");
+ LogInfo("LIBIHT-COM: Copy LBR data to user failed\n");
xrelease_lock(LbrStateLock, &OldIrql);
return FALSE;
}
@@ -334,7 +366,7 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
BytesLeft = xcopy_to_user(Request->Buffer, &ReqBuf, sizeof(LBR_DATA));
if (BytesLeft)
{
- xprintdbg("LIBIHT-COM: Copy LBR data to user failed\n");
+ LogInfo("LIBIHT-COM: Copy LBR data to user failed\n");
xrelease_lock(LbrStateLock, &OldIrql);
return FALSE;
}
@@ -359,8 +391,8 @@ LbrConfigLbr(LBR_IOCTL_REQUEST * Request)
if (State == NULL)
{
- xprintdbg("LIBIHT-COM: LBR not enabled for pid %d\n",
- Request->LbrConfig.Pid);
+ LogInfo("LIBIHT-COM: LBR not enabled for pid %d\n",
+ Request->LbrConfig.Pid);
return FALSE;
}
@@ -466,7 +498,7 @@ LbrInsertLbrState(LBR_STATE * NewState)
return;
xacquire_lock(LbrStateLock, &OldIrql);
- xprintdbg("LIBIHT-COM: Insert LBR state for pid %d\n", NewState->Config.Pid);
+ LogInfo("LIBIHT-COM: Insert LBR state for pid %d\n", NewState->Config.Pid);
xlist_add(NewState->List, LbrStateHead);
xrelease_lock(LbrStateLock, &OldIrql);
}
@@ -486,7 +518,7 @@ LbrRemoveLbrState(LBR_STATE * OldState)
return;
xacquire_lock(LbrStateLock, &OldIrql);
- xprintdbg("LIBIHT-COM: Remove LBR state for pid %d\n", OldState->Config.Pid);
+ LogInfo("LIBIHT-COM: Remove LBR state for pid %d\n", OldState->Config.Pid);
xlist_del(OldState->List);
xfree(OldState->Data->Entries);
@@ -536,7 +568,7 @@ LbrIoctlHandler(XIOCTL_REQUEST * Request)
{
BOOLEAN Status = TRUE;
- xprintdbg("LIBIHT-COM: LBR ioctl command %d.\n", Request->Cmd);
+ LogInfo("LIBIHT-COM: LBR ioctl command %d.\n", Request->Cmd);
switch (Request->Cmd)
{
case LIBIHT_IOCTL_ENABLE_LBR:
@@ -552,7 +584,7 @@ LbrIoctlHandler(XIOCTL_REQUEST * Request)
Status = LbrConfigLbr(&Request->Body.Lbr);
break;
default:
- xprintdbg("LIBIHT-COM: Invalid LBR ioctl command\n");
+ LogInfo("LIBIHT-COM: Invalid LBR ioctl command\n");
Status = FALSE;
break;
}
@@ -579,17 +611,17 @@ LbrCswitchHandler(ULONG PrevPid,
if (PrevState)
{
- xprintdbg("LIBIHT-COM: LBR context switch from pid %d on cpu core %d\n",
- PrevState->Config.Pid,
- xcoreid());
+ LogInfo("LIBIHT-COM: LBR context switch from pid %d on cpu core %d\n",
+ PrevState->Config.Pid,
+ xcoreid());
LbrGetLbr(PrevState);
}
if (NextState)
{
- xprintdbg("LIBIHT-COM: LBR context switch to pid %d on cpu core %d\n",
- NextState->Config.Pid,
- xcoreid());
+ LogInfo("LIBIHT-COM: LBR context switch to pid %d on cpu core %d\n",
+ NextState->Config.Pid,
+ xcoreid());
LbrPutLbr(NextState);
}
}
@@ -613,9 +645,9 @@ LbrNewprocHandler(
if (ParentState == NULL)
return;
- xprintdbg("LIBIHT-COM: LBR new child process pid %d, parent pid %d\n",
- ChildPid,
- ParentPid);
+ LogInfo("LIBIHT-COM: LBR new child process pid %d, parent pid %d\n",
+ ChildPid,
+ ParentPid);
ChildState = LbrCreateLbrState();
if (ChildState == NULL)
diff --git a/hyperdbg/hypertrace/header/Tracing.h b/hyperdbg/hypertrace/header/Tracing.h
index 8ff3f8b9..d877e382 100644
--- a/hyperdbg/hypertrace/header/Tracing.h
+++ b/hyperdbg/hypertrace/header/Tracing.h
@@ -11,6 +11,16 @@
#pragma once
+//////////////////////////////////////////////////
+// Globals //
+//////////////////////////////////////////////////
+
+/**
+ * @brief List of callbacks
+ *
+ */
+HYPERTRACE_CALLBACKS g_Callbacks;
+
// Intel MSR Constants
#define MSR_IA32_DEBUGCTLMSR 0x000001D9
#define DEBUGCTLMSR_LBR (1ULL << 0)
@@ -81,15 +91,14 @@ typedef struct _XIOCTL_REQUEST
// Platform Wrappers //
//////////////////////////////////////////////////
-#define xmalloc(sz) PlatformMemAllocateZeroedNonPagedPool(sz)
-#define xfree(p) PlatformMemFreePool(p)
-#define xmemset(ptr, sz) RtlZeroMemory(ptr, sz)
-#define xmemcpy RtlCopyMemory
-#define xrdmsr(msr, pval) (*(pval) = __readmsr(msr))
-#define xwrmsr(msr, val) __writemsr(msr, val)
-#define xprintdbg(format, ...) DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, format, __VA_ARGS__)
-#define xcoreid() KeGetCurrentProcessorNumber()
-#define xgetcurrent_pid() (ULONG)(ULONG_PTR) PsGetCurrentProcessId()
+#define xmalloc(sz) PlatformMemAllocateZeroedNonPagedPool(sz)
+#define xfree(p) PlatformMemFreePool(p)
+#define xmemset(ptr, sz) RtlZeroMemory(ptr, sz)
+#define xmemcpy RtlCopyMemory
+#define xrdmsr(msr, pval) (*(pval) = __readmsr(msr))
+#define xwrmsr(msr, val) __writemsr(msr, val)
+#define xcoreid() KeGetCurrentProcessorNumber()
+#define xgetcurrent_pid() (ULONG)(ULONG_PTR) PsGetCurrentProcessId()
// List Handling
#define xlist_next(ptr) (ptr)->Flink
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 7ad4c799..95c0c8a4 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -38,14 +38,37 @@
#define HYPERDBG_KERNEL_MODE
#define HYPERDBG_HYPERTRACE
+//
+// Unload function (to be called when the driver is unloaded)
+//
#include "UnloadDll.h"
+
+//
+// SDK headers
+//
#include "SDK/HyperDbgSdk.h"
-#include "SDK/modules/HyperLog.h"
-#include "SDK/imports/kernel/HyperDbgHyperLogImports.h"
+
+//
+// Configuration
+//
+#include "config/Configuration.h"
+
+//
+// Hyperlog headers
+//
+#include "components/interface/HyperLogCallback.h"
#include "SDK/imports/kernel/HyperDbgHyperLogIntrinsics.h"
+//
+// Spinlock headers
+//
#include "components/spinlock/header/Spinlock.h"
+//
+// Hypertrace Callbacks
+//
+#include "SDK/modules/HyperTrace.h"
+
//
// Definition of tracing types and structures
//
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index b561bfd8..509ef4ad 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -100,12 +100,14 @@
+
+
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
index de56cf93..cc62d74b 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj.filters
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -15,6 +15,12 @@
{21f0281e-fc2a-4e13-97ac-e4b35a05a31e}
+
+ {a78ce9ac-3c19-4f57-889a-3c5ec3234cb4}
+
+
+ {50dcf65c-eea2-4bf3-b57e-d6689999b39d}
+
@@ -29,6 +35,9 @@
code\platform
+
+ code\interface
+
@@ -49,5 +58,8 @@
header\platform
+
+ header\interface
+
\ No newline at end of file
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 303a3bcf..12f07278 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -20,6 +20,12 @@
// hypertrace functions //
//////////////////////////////////////////////////
+//
+// Initialize the hypertrace module with the provided callbacks
+//
+BOOLEAN
+HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks);
+
//
// Check if LBR is supported and initialize LBR state list and lock
//
From 37569a3ae62c01e5a773e0051a91a503ed0d530c Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 8 Feb 2026 03:50:25 +0100
Subject: [PATCH 074/323] separate LBR from general tracing routine in
hypertrace
---
hyperdbg/hypertrace/code/Lbr.c | 671 ++++++++++++++++++
hyperdbg/hypertrace/code/Tracing.c | 663 +----------------
hyperdbg/hypertrace/header/Lbr.h | 160 +++++
hyperdbg/hypertrace/header/Tracing.h | 143 ----
hyperdbg/hypertrace/header/pch.h | 1 +
hyperdbg/hypertrace/hypertrace.vcxproj | 2 +
.../hypertrace/hypertrace.vcxproj.filters | 6 +
7 files changed, 842 insertions(+), 804 deletions(-)
create mode 100644 hyperdbg/hypertrace/code/Lbr.c
create mode 100644 hyperdbg/hypertrace/header/Lbr.h
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
new file mode 100644
index 00000000..a9d87cf0
--- /dev/null
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -0,0 +1,671 @@
+/**
+ * @file Lbr.c
+ * @author Hari Mishal (harimishal6@gmail.com)
+ * @brief Message logging and tracing implementation
+ * @details Modified from LIBIHT project (Thomasaon Zhao et al) with Windows style updates.
+ * @version 0.18
+ * @date 2025-12-02
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ */
+
+#include "pch.h"
+
+//////////////////////////////////////////////////
+// Global Definitions //
+//////////////////////////////////////////////////
+
+ULONGLONG LbrCapacity = 0;
+LIST_ENTRY LbrStateHead;
+KSPIN_LOCK LbrStateLock;
+
+//
+// Typical Intel LBR capacities based on CPU model
+// This is a subset; you can expand this as needed
+//
+CPU_LBR_MAP CPU_LBR_MAPS[] = {
+ {0x5c, 32},
+ {0x5f, 32},
+ {0x4e, 32},
+ {0x5e, 32},
+ {0x8e, 32},
+ {0x9e, 32},
+ {0x55, 32},
+ {0x66, 32},
+ {0x7a, 32},
+ {0x67, 32},
+ {0x6a, 32},
+ {0x6c, 32},
+ {0x7d, 32},
+ {0x7e, 32},
+ {0x8c, 32},
+ {0x8d, 32},
+ {0xa5, 32},
+ {0xa6, 32},
+ {0xa7, 32},
+ {0xa8, 32},
+ {0x86, 32},
+ {0x8a, 32},
+ {0x96, 32},
+ {0x9c, 32},
+ {0x3d, 16},
+ {0x47, 16},
+ {0x4f, 16},
+ {0x56, 16},
+ {0x3c, 16},
+ {0x45, 16},
+ {0x46, 16},
+ {0x3f, 16},
+ {0x2a, 16},
+ {0x2d, 16},
+ {0x3a, 16},
+ {0x3e, 16},
+ {0x1a, 16},
+ {0x1e, 16},
+ {0x1f, 16},
+ {0x2e, 16},
+ {0x25, 16},
+ {0x2c, 16},
+ {0x2f, 16},
+ {0x17, 4},
+ {0x1d, 4},
+ {0x0f, 4},
+ {0x37, 8},
+ {0x4a, 8},
+ {0x4c, 8},
+ {0x4d, 8},
+ {0x5a, 8},
+ {0x5d, 8},
+ {0x1c, 8},
+ {0x26, 8},
+ {0x27, 8},
+ {0x35, 8},
+ {0x36, 8}};
+
+/**
+ * @brief Read LBR MSRs and store the values in the provided LBR_STATE structure
+ *
+ * @param State
+ * @return VOID
+ */
+VOID
+LbrGetLbr(LBR_STATE * State)
+{
+ ULONG i;
+ ULONGLONG DbgCtlMsr;
+ KIRQL OldIrql;
+
+ xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
+ DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
+ xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+
+ xacquire_lock(LbrStateLock, &OldIrql);
+ xrdmsr(MSR_LBR_SELECT, &State->Config.LbrSelect);
+ xrdmsr(MSR_LBR_TOS, &State->Data->LbrTos);
+
+ for (i = 0; i < (ULONG)LbrCapacity; i++)
+ {
+ xrdmsr(MSR_LBR_NHM_FROM + i, &State->Data->Entries[i].From);
+ xrdmsr(MSR_LBR_NHM_TO + i, &State->Data->Entries[i].To);
+ }
+ xrelease_lock(&LbrStateLock, &OldIrql);
+}
+
+/**
+ * @brief Write LBR MSRs from the provided LBR_STATE structure
+ *
+ * @param State
+ * @return VOID
+ */
+VOID
+LbrPutLbr(LBR_STATE * State)
+{
+ ULONG i;
+ ULONGLONG DbgCtlMsr;
+ KIRQL OldIrql;
+
+ xacquire_lock(&LbrStateLock, &OldIrql);
+ xwrmsr(MSR_LBR_SELECT, State->Config.LbrSelect);
+ xwrmsr(MSR_LBR_TOS, State->Data->LbrTos);
+
+ for (i = 0; i < (ULONG)LbrCapacity; i++)
+ {
+ xwrmsr(MSR_LBR_NHM_FROM + i, State->Data->Entries[i].From);
+ xwrmsr(MSR_LBR_NHM_TO + i, State->Data->Entries[i].To);
+ }
+ xrelease_lock(&LbrStateLock, &OldIrql);
+
+ xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
+ DbgCtlMsr |= DEBUGCTLMSR_LBR;
+ xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+}
+
+/**
+ * @brief Flush LBR MSRs by disabling LBR and clearing all LBR entries
+ *
+ * @return VOID
+ */
+VOID
+LbrFlushLbr()
+{
+ ULONG i;
+ ULONGLONG DbgCtlMsr;
+ KIRQL OldIrql;
+
+ xlock_core(&OldIrql);
+
+ //
+ // Disable LBR
+ //
+ LogInfo("LIBIHT-COM: Flush LBR on cpu core: %d\n", xcoreid());
+ xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
+ DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
+ xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+
+ //
+ // Flush LBR registers
+ //
+ xwrmsr(MSR_LBR_SELECT, 0);
+ xwrmsr(MSR_LBR_TOS, 0);
+
+ for (i = 0; i < LbrCapacity; i++)
+ {
+ xwrmsr(MSR_LBR_NHM_FROM + i, 0);
+ xwrmsr(MSR_LBR_NHM_TO + i, 0);
+ }
+
+ xrelease_core(&OldIrql);
+}
+
+/**
+ * @brief Enable LBR for a specific process and store the configuration in the global LBR state list
+ *
+ * @param Request
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrEnableLbr(LBR_IOCTL_REQUEST * Request)
+{
+ LBR_STATE * State;
+
+ State = LbrFindLbrState(Request->LbrConfig.Pid);
+ if (State)
+ {
+ LogInfo("LIBIHT-COM: LBR already enabled for pid %d\n",
+ Request->LbrConfig.Pid);
+ return FALSE;
+ }
+
+ State = LbrCreateLbrState();
+ if (State == NULL)
+ {
+ LogInfo("LIBIHT-COM: Create LBR state failed\n");
+ return FALSE;
+ }
+
+ //
+ // Setup config fields for LBR state
+ //
+ State->Parent = NULL;
+ State->Config.Pid = Request->LbrConfig.Pid ? Request->LbrConfig.Pid : xgetcurrent_pid();
+ State->Config.LbrSelect = Request->LbrConfig.LbrSelect ? Request->LbrConfig.LbrSelect : LBR_SELECT;
+ LbrInsertLbrState(State);
+
+ //
+ // If the requesting process is the current process, trace it right away
+ //
+ if (State->Config.Pid == xgetcurrent_pid())
+ LbrPutLbr(State);
+
+ return TRUE;
+}
+
+/**
+ * @brief Disable LBR for a specific process and remove the corresponding LBR state from the global list
+ *
+ * @param Request
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrDisableLbr(LBR_IOCTL_REQUEST * Request)
+{
+ LBR_STATE * State;
+
+ State = LbrFindLbrState(Request->LbrConfig.Pid);
+ if (State == NULL)
+ {
+ LogInfo("LIBIHT-COM: LBR not enabled for pid %d\n",
+ Request->LbrConfig.Pid);
+ return FALSE;
+ }
+
+ if (State->Config.Pid == xgetcurrent_pid())
+ {
+ LbrGetLbr(State);
+ }
+
+ LbrRemoveLbrState(State);
+
+ return TRUE;
+}
+
+/**
+ * @brief Dump LBR info for a specific process to debug logs and optionally copy the LBR data to user buffer
+ *
+ * @param Request
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
+{
+ ULONGLONG i, BytesLeft;
+ LBR_STATE * State;
+ LBR_DATA ReqBuf;
+ KIRQL OldIrql;
+
+ State = LbrFindLbrState(Request->LbrConfig.Pid);
+
+ if (State == NULL)
+ {
+ LogInfo("LIBIHT-COM: LBR not enabled for pid %d\n",
+ Request->LbrConfig.Pid);
+ return FALSE;
+ }
+
+ //
+ // Examine if the current process is the owner of the LBR state
+ //
+ if (State->Config.Pid == xgetcurrent_pid())
+ {
+ LogInfo("LIBIHT-COM: Dump LBR for current process\n");
+
+ //
+ // Get fresh LBR info
+ //
+ LbrGetLbr(State);
+ LbrPutLbr(State);
+ }
+
+ xacquire_lock(LbrStateLock, &OldIrql);
+
+ //
+ // Dump the LBR state to debug logs
+ //
+ LogInfo("PROC_PID: %d\n", State->Config.Pid);
+ LogInfo("MSR_LBR_SELECT: 0x%llx\n", State->Config.LbrSelect);
+ LogInfo("MSR_LBR_TOS: %lld\n", State->Data->LbrTos);
+
+ for (i = 0; i < LbrCapacity; i++)
+ {
+ LogInfo("MSR_LBR_NHM_FROM[%2d]: 0x%llx\n", (ULONG)i, State->Data->Entries[i].From);
+ LogInfo("MSR_LBR_NHM_TO [%2d]: 0x%llx\n", (ULONG)i, State->Data->Entries[i].To);
+ }
+
+ LogInfo("LIBIHT-COM: LBR info for cpuid: %d\n", xcoreid());
+
+ //
+ // Dump the LBR data to userspace buffer
+ //
+ if (Request->Buffer)
+ {
+ BytesLeft = xcopy_from_user(&ReqBuf, Request->Buffer, sizeof(LBR_DATA));
+ if (BytesLeft)
+ {
+ LogInfo("LIBIHT-COM: Copy LBR data from user failed\n");
+ xrelease_lock(LbrStateLock, &OldIrql);
+ return FALSE;
+ }
+
+ ReqBuf.LbrTos = State->Data->LbrTos;
+ if (ReqBuf.Entries)
+ {
+ BytesLeft = xcopy_to_user(ReqBuf.Entries,
+ State->Data->Entries,
+ LbrCapacity * sizeof(LBR_STACK_ENTRY));
+
+ if (BytesLeft)
+ {
+ LogInfo("LIBIHT-COM: Copy LBR data to user failed\n");
+ xrelease_lock(LbrStateLock, &OldIrql);
+ return FALSE;
+ }
+ }
+
+ BytesLeft = xcopy_to_user(Request->Buffer, &ReqBuf, sizeof(LBR_DATA));
+ if (BytesLeft)
+ {
+ LogInfo("LIBIHT-COM: Copy LBR data to user failed\n");
+ xrelease_lock(LbrStateLock, &OldIrql);
+ return FALSE;
+ }
+ }
+
+ xrelease_lock(LbrStateLock, &OldIrql);
+ return TRUE;
+}
+
+/**
+ * @brief Update LBR configuration for a specific process and optionally refresh the LBR MSRs if the current process is the owner
+ *
+ * @param Request
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrConfigLbr(LBR_IOCTL_REQUEST * Request)
+{
+ LBR_STATE * State;
+
+ State = LbrFindLbrState(Request->LbrConfig.Pid);
+
+ if (State == NULL)
+ {
+ LogInfo("LIBIHT-COM: LBR not enabled for pid %d\n",
+ Request->LbrConfig.Pid);
+ return FALSE;
+ }
+
+ if (State->Config.Pid == xgetcurrent_pid())
+ {
+ LbrGetLbr(State);
+ State->Config.LbrSelect = Request->LbrConfig.LbrSelect;
+ LbrPutLbr(State);
+ }
+ else
+ {
+ State->Config.LbrSelect = Request->LbrConfig.LbrSelect;
+ }
+
+ return TRUE;
+}
+
+/**
+ * @brief Create a new LBR_STATE structure with allocated memory for LBR data and entries
+ *
+ * @return LBR_STATE*
+ */
+LBR_STATE *
+LbrCreateLbrState()
+{
+ LBR_STATE * State;
+ LBR_DATA * Data;
+ LBR_STACK_ENTRY * Entries;
+
+ State = xmalloc(sizeof(LBR_STATE));
+ if (State == NULL)
+ return NULL;
+
+ Data = xmalloc(sizeof(LBR_DATA));
+ if (Data == NULL)
+ {
+ xfree(State);
+ return NULL;
+ }
+ SIZE_T TotalEntrySize = (SIZE_T)sizeof(LBR_STACK_ENTRY) * LbrCapacity;
+ Entries = xmalloc(TotalEntrySize);
+ if (Entries == NULL)
+ {
+ xfree(Data);
+ xfree(State);
+ return NULL;
+ }
+
+ xmemset(State, sizeof(LBR_STATE));
+ xmemset(Data, sizeof(LBR_DATA));
+ xmemset(Entries, TotalEntrySize);
+
+ State->Data = Data;
+ Data->Entries = Entries;
+
+ return State;
+}
+
+/**
+ * @brief Find the LBR_STATE structure for a specific process ID from the global list
+ *
+ * @param Pid
+ * @return LBR_STATE*
+ */
+LBR_STATE *
+LbrFindLbrState(ULONG Pid)
+{
+ KIRQL OldIrql;
+ LBR_STATE * RetState = NULL;
+ PLIST_ENTRY Link;
+
+ xacquire_lock(&LbrStateLock, &OldIrql);
+
+ //
+ // Iterating through LIST_ENTRY correctly
+ //
+ for (Link = LbrStateHead.Flink; Link != &LbrStateHead; Link = Link->Flink)
+ {
+ LBR_STATE * Curr = CONTAINING_RECORD(Link, LBR_STATE, List);
+ if (Pid != 0 && Curr->Config.Pid == Pid)
+ {
+ RetState = Curr;
+ break;
+ }
+ }
+
+ xrelease_lock(&LbrStateLock, &OldIrql);
+ return RetState;
+}
+
+/**
+ * @brief Insert a new LBR_STATE structure into the global list with proper locking
+ *
+ * @param NewState
+ * @return VOID
+ */
+VOID
+LbrInsertLbrState(LBR_STATE * NewState)
+{
+ KIRQL OldIrql;
+
+ if (NewState == NULL)
+ return;
+
+ xacquire_lock(LbrStateLock, &OldIrql);
+ LogInfo("LIBIHT-COM: Insert LBR state for pid %d\n", NewState->Config.Pid);
+ xlist_add(NewState->List, LbrStateHead);
+ xrelease_lock(LbrStateLock, &OldIrql);
+}
+
+/**
+ * @brief Remove an existing LBR_STATE structure from the global list and free its associated memory with proper locking
+ *
+ * @param OldState
+ * @return VOID
+ */
+VOID
+LbrRemoveLbrState(LBR_STATE * OldState)
+{
+ KIRQL OldIrql;
+
+ if (OldState == NULL)
+ return;
+
+ xacquire_lock(LbrStateLock, &OldIrql);
+ LogInfo("LIBIHT-COM: Remove LBR state for pid %d\n", OldState->Config.Pid);
+
+ xlist_del(OldState->List);
+ xfree(OldState->Data->Entries);
+ xfree(OldState->Data);
+ xfree(OldState);
+
+ xrelease_lock(LbrStateLock, &OldIrql);
+}
+
+/**
+ * @brief Free all LBR_STATE structures in the global list and their associated memory with proper locking
+ *
+ * @return VOID
+ */
+VOID
+LbrFreeLbrStatList()
+{
+ KIRQL OldIrql;
+ LBR_STATE * CurrState;
+ PLIST_ENTRY CurrLink;
+
+ xacquire_lock(&LbrStateLock, &OldIrql);
+
+ CurrLink = LbrStateHead.Flink;
+ while (CurrLink != &LbrStateHead)
+ {
+ CurrState = CONTAINING_RECORD(CurrLink, LBR_STATE, List);
+ CurrLink = CurrLink->Flink; // Get next before deleting
+
+ xlist_del(CurrState->List);
+ xfree(CurrState->Data->Entries);
+ xfree(CurrState->Data);
+ xfree(CurrState);
+ }
+
+ xrelease_lock(&LbrStateLock, &OldIrql);
+}
+
+/**
+ * @brief Handle IOCTL requests for LBR operations by dispatching to the appropriate function based on the command
+ *
+ * @param Request
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrIoctlHandler(XIOCTL_REQUEST * Request)
+{
+ BOOLEAN Status = TRUE;
+
+ LogInfo("LIBIHT-COM: LBR ioctl command %d.\n", Request->Cmd);
+ switch (Request->Cmd)
+ {
+ case LIBIHT_IOCTL_ENABLE_LBR:
+ Status = LbrEnableLbr(&Request->Body.Lbr);
+ break;
+ case LIBIHT_IOCTL_DISABLE_LBR:
+ Status = LbrDisableLbr(&Request->Body.Lbr);
+ break;
+ case LIBIHT_IOCTL_DUMP_LBR:
+ Status = LbrDumpLbr(&Request->Body.Lbr);
+ break;
+ case LIBIHT_IOCTL_CONFIG_LBR:
+ Status = LbrConfigLbr(&Request->Body.Lbr);
+ break;
+ default:
+ LogInfo("LIBIHT-COM: Invalid LBR ioctl command\n");
+ Status = FALSE;
+ break;
+ }
+
+ return Status;
+}
+
+/**
+ * @brief Handle context switch events by saving the LBR state of the previous process and restoring the LBR state of the next process if they are being traced
+ *
+ * @param PrevPid
+ * @param NextPid
+ * @return VOID
+ */
+VOID
+LbrCswitchHandler(ULONG PrevPid,
+ ULONG NextPid)
+{
+ LBR_STATE * PrevState;
+ LBR_STATE * NextState;
+
+ PrevState = LbrFindLbrState(PrevPid);
+ NextState = LbrFindLbrState(NextPid);
+
+ if (PrevState)
+ {
+ LogInfo("LIBIHT-COM: LBR context switch from pid %d on cpu core %d\n",
+ PrevState->Config.Pid,
+ xcoreid());
+ LbrGetLbr(PrevState);
+ }
+
+ if (NextState)
+ {
+ LogInfo("LIBIHT-COM: LBR context switch to pid %d on cpu core %d\n",
+ NextState->Config.Pid,
+ xcoreid());
+ LbrPutLbr(NextState);
+ }
+}
+
+/**
+ * @brief Handle new process creation events by inheriting the LBR state from the parent process if it is being traced
+ *
+ * @param ParentPid
+ * @param ChildPid
+ * @return VOID
+ */
+VOID
+LbrNewprocHandler(
+ ULONG ParentPid,
+ ULONG ChildPid)
+{
+ LBR_STATE *ParentState, *ChildState;
+ KIRQL OldIrql;
+
+ ParentState = LbrFindLbrState(ParentPid);
+ if (ParentState == NULL)
+ return;
+
+ LogInfo("LIBIHT-COM: LBR new child process pid %d, parent pid %d\n",
+ ChildPid,
+ ParentPid);
+
+ ChildState = LbrCreateLbrState();
+ if (ChildState == NULL)
+ return;
+
+ xacquire_lock(LbrStateLock, &OldIrql);
+ ChildState->Parent = ParentState;
+ ChildState->Config.Pid = ChildPid;
+ ChildState->Config.LbrSelect = ParentState->Config.LbrSelect;
+ xmemcpy(ChildState->Data,
+ ParentState->Data,
+ sizeof(LBR_DATA) + LbrCapacity * sizeof(LBR_STACK_ENTRY));
+ xrelease_lock(LbrStateLock, &OldIrql);
+
+ LbrInsertLbrState(ChildState);
+
+ if (ChildPid == xgetcurrent_pid())
+ LbrPutLbr(ChildState);
+}
+
+/**
+ * @brief Check if the current CPU supports LBR by examining the CPU family and model and looking up the corresponding LBR capacity
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrCheck()
+{
+ ULONG a, b, c, d;
+ ULONG Family, Model;
+ ULONGLONG i;
+
+ xcpuid(1, &a, &b, &c, &d);
+
+ Family = ((a >> 8) & 0xF) + ((a >> 20) & 0xFF);
+ Model = ((a >> 4) & 0xF) | ((a >> 12) & 0xF0);
+
+ for (i = 0; i < sizeof(CPU_LBR_MAPS) / sizeof(CPU_LBR_MAPS[0]); ++i)
+ {
+ if (Model == CPU_LBR_MAPS[i].Model)
+ {
+ LbrCapacity = CPU_LBR_MAPS[i].LbrCapacity;
+ break;
+ }
+ }
+
+ if (LbrCapacity == 0)
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 78bde9b4..990b03bd 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -1,8 +1,8 @@
/**
* @file Tracing.c
* @author Hari Mishal (harimishal6@gmail.com)
- * @brief Message logging and tracing implementation
- * @details Modified from LIBIHT project (Thomasaon Zhao et al) with Windows style updates.
+ * @brief Tracing routines for HyperTrace module
+ * @details
* @version 0.18
* @date 2025-12-02
*
@@ -11,77 +11,6 @@
#include "pch.h"
-//////////////////////////////////////////////////
-// Global Definitions //
-//////////////////////////////////////////////////
-
-ULONGLONG LbrCapacity = 0;
-LIST_ENTRY LbrStateHead;
-KSPIN_LOCK LbrStateLock;
-
-//
-// Typical Intel LBR capacities based on CPU model
-// This is a subset; you can expand this as needed
-//
-CPU_LBR_MAP CPU_LBR_MAPS[] = {
- {0x5c, 32},
- {0x5f, 32},
- {0x4e, 32},
- {0x5e, 32},
- {0x8e, 32},
- {0x9e, 32},
- {0x55, 32},
- {0x66, 32},
- {0x7a, 32},
- {0x67, 32},
- {0x6a, 32},
- {0x6c, 32},
- {0x7d, 32},
- {0x7e, 32},
- {0x8c, 32},
- {0x8d, 32},
- {0xa5, 32},
- {0xa6, 32},
- {0xa7, 32},
- {0xa8, 32},
- {0x86, 32},
- {0x8a, 32},
- {0x96, 32},
- {0x9c, 32},
- {0x3d, 16},
- {0x47, 16},
- {0x4f, 16},
- {0x56, 16},
- {0x3c, 16},
- {0x45, 16},
- {0x46, 16},
- {0x3f, 16},
- {0x2a, 16},
- {0x2d, 16},
- {0x3a, 16},
- {0x3e, 16},
- {0x1a, 16},
- {0x1e, 16},
- {0x1f, 16},
- {0x2e, 16},
- {0x25, 16},
- {0x2c, 16},
- {0x2f, 16},
- {0x17, 4},
- {0x1d, 4},
- {0x0f, 4},
- {0x37, 8},
- {0x4a, 8},
- {0x4c, 8},
- {0x4d, 8},
- {0x5a, 8},
- {0x5d, 8},
- {0x1c, 8},
- {0x26, 8},
- {0x27, 8},
- {0x35, 8},
- {0x36, 8}};
-
/**
* @brief Hide debugger on transparent-mode (activate transparent-mode)
*
@@ -113,591 +42,3 @@ HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
return TRUE;
}
-
-/**
- * @brief Read LBR MSRs and store the values in the provided LBR_STATE structure
- *
- * @param State
- * @return VOID
- */
-VOID
-LbrGetLbr(LBR_STATE * State)
-{
- ULONG i;
- ULONGLONG DbgCtlMsr;
- KIRQL OldIrql;
-
- xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
- DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
- xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
-
- xacquire_lock(LbrStateLock, &OldIrql);
- xrdmsr(MSR_LBR_SELECT, &State->Config.LbrSelect);
- xrdmsr(MSR_LBR_TOS, &State->Data->LbrTos);
-
- for (i = 0; i < (ULONG)LbrCapacity; i++)
- {
- xrdmsr(MSR_LBR_NHM_FROM + i, &State->Data->Entries[i].From);
- xrdmsr(MSR_LBR_NHM_TO + i, &State->Data->Entries[i].To);
- }
- xrelease_lock(&LbrStateLock, &OldIrql);
-}
-
-/**
- * @brief Write LBR MSRs from the provided LBR_STATE structure
- *
- * @param State
- * @return VOID
- */
-VOID
-LbrPutLbr(LBR_STATE * State)
-{
- ULONG i;
- ULONGLONG DbgCtlMsr;
- KIRQL OldIrql;
-
- xacquire_lock(&LbrStateLock, &OldIrql);
- xwrmsr(MSR_LBR_SELECT, State->Config.LbrSelect);
- xwrmsr(MSR_LBR_TOS, State->Data->LbrTos);
-
- for (i = 0; i < (ULONG)LbrCapacity; i++)
- {
- xwrmsr(MSR_LBR_NHM_FROM + i, State->Data->Entries[i].From);
- xwrmsr(MSR_LBR_NHM_TO + i, State->Data->Entries[i].To);
- }
- xrelease_lock(&LbrStateLock, &OldIrql);
-
- xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
- DbgCtlMsr |= DEBUGCTLMSR_LBR;
- xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
-}
-
-/**
- * @brief Flush LBR MSRs by disabling LBR and clearing all LBR entries
- *
- * @return VOID
- */
-VOID
-LbrFlushLbr()
-{
- ULONG i;
- ULONGLONG DbgCtlMsr;
- KIRQL OldIrql;
-
- xlock_core(&OldIrql);
-
- //
- // Disable LBR
- //
- LogInfo("LIBIHT-COM: Flush LBR on cpu core: %d\n", xcoreid());
- xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
- DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
- xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
-
- //
- // Flush LBR registers
- //
- xwrmsr(MSR_LBR_SELECT, 0);
- xwrmsr(MSR_LBR_TOS, 0);
-
- for (i = 0; i < LbrCapacity; i++)
- {
- xwrmsr(MSR_LBR_NHM_FROM + i, 0);
- xwrmsr(MSR_LBR_NHM_TO + i, 0);
- }
-
- xrelease_core(&OldIrql);
-}
-
-/**
- * @brief Enable LBR for a specific process and store the configuration in the global LBR state list
- *
- * @param Request
- * @return BOOLEAN
- */
-BOOLEAN
-LbrEnableLbr(LBR_IOCTL_REQUEST * Request)
-{
- LBR_STATE * State;
-
- State = LbrFindLbrState(Request->LbrConfig.Pid);
- if (State)
- {
- LogInfo("LIBIHT-COM: LBR already enabled for pid %d\n",
- Request->LbrConfig.Pid);
- return FALSE;
- }
-
- State = LbrCreateLbrState();
- if (State == NULL)
- {
- LogInfo("LIBIHT-COM: Create LBR state failed\n");
- return FALSE;
- }
-
- //
- // Setup config fields for LBR state
- //
- State->Parent = NULL;
- State->Config.Pid = Request->LbrConfig.Pid ? Request->LbrConfig.Pid : xgetcurrent_pid();
- State->Config.LbrSelect = Request->LbrConfig.LbrSelect ? Request->LbrConfig.LbrSelect : LBR_SELECT;
- LbrInsertLbrState(State);
-
- //
- // If the requesting process is the current process, trace it right away
- //
- if (State->Config.Pid == xgetcurrent_pid())
- LbrPutLbr(State);
-
- return TRUE;
-}
-
-/**
- * @brief Disable LBR for a specific process and remove the corresponding LBR state from the global list
- *
- * @param Request
- * @return BOOLEAN
- */
-BOOLEAN
-LbrDisableLbr(LBR_IOCTL_REQUEST * Request)
-{
- LBR_STATE * State;
-
- State = LbrFindLbrState(Request->LbrConfig.Pid);
- if (State == NULL)
- {
- LogInfo("LIBIHT-COM: LBR not enabled for pid %d\n",
- Request->LbrConfig.Pid);
- return FALSE;
- }
-
- if (State->Config.Pid == xgetcurrent_pid())
- {
- LbrGetLbr(State);
- }
-
- LbrRemoveLbrState(State);
-
- return TRUE;
-}
-
-/**
- * @brief Dump LBR info for a specific process to debug logs and optionally copy the LBR data to user buffer
- *
- * @param Request
- * @return BOOLEAN
- */
-BOOLEAN
-LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
-{
- ULONGLONG i, BytesLeft;
- LBR_STATE * State;
- LBR_DATA ReqBuf;
- KIRQL OldIrql;
-
- State = LbrFindLbrState(Request->LbrConfig.Pid);
-
- if (State == NULL)
- {
- LogInfo("LIBIHT-COM: LBR not enabled for pid %d\n",
- Request->LbrConfig.Pid);
- return FALSE;
- }
-
- //
- // Examine if the current process is the owner of the LBR state
- //
- if (State->Config.Pid == xgetcurrent_pid())
- {
- LogInfo("LIBIHT-COM: Dump LBR for current process\n");
-
- //
- // Get fresh LBR info
- //
- LbrGetLbr(State);
- LbrPutLbr(State);
- }
-
- xacquire_lock(LbrStateLock, &OldIrql);
-
- //
- // Dump the LBR state to debug logs
- //
- LogInfo("PROC_PID: %d\n", State->Config.Pid);
- LogInfo("MSR_LBR_SELECT: 0x%llx\n", State->Config.LbrSelect);
- LogInfo("MSR_LBR_TOS: %lld\n", State->Data->LbrTos);
-
- for (i = 0; i < LbrCapacity; i++)
- {
- LogInfo("MSR_LBR_NHM_FROM[%2d]: 0x%llx\n", (ULONG)i, State->Data->Entries[i].From);
- LogInfo("MSR_LBR_NHM_TO [%2d]: 0x%llx\n", (ULONG)i, State->Data->Entries[i].To);
- }
-
- LogInfo("LIBIHT-COM: LBR info for cpuid: %d\n", xcoreid());
-
- //
- // Dump the LBR data to userspace buffer
- //
- if (Request->Buffer)
- {
- BytesLeft = xcopy_from_user(&ReqBuf, Request->Buffer, sizeof(LBR_DATA));
- if (BytesLeft)
- {
- LogInfo("LIBIHT-COM: Copy LBR data from user failed\n");
- xrelease_lock(LbrStateLock, &OldIrql);
- return FALSE;
- }
-
- ReqBuf.LbrTos = State->Data->LbrTos;
- if (ReqBuf.Entries)
- {
- BytesLeft = xcopy_to_user(ReqBuf.Entries,
- State->Data->Entries,
- LbrCapacity * sizeof(LBR_STACK_ENTRY));
-
- if (BytesLeft)
- {
- LogInfo("LIBIHT-COM: Copy LBR data to user failed\n");
- xrelease_lock(LbrStateLock, &OldIrql);
- return FALSE;
- }
- }
-
- BytesLeft = xcopy_to_user(Request->Buffer, &ReqBuf, sizeof(LBR_DATA));
- if (BytesLeft)
- {
- LogInfo("LIBIHT-COM: Copy LBR data to user failed\n");
- xrelease_lock(LbrStateLock, &OldIrql);
- return FALSE;
- }
- }
-
- xrelease_lock(LbrStateLock, &OldIrql);
- return TRUE;
-}
-
-/**
- * @brief Update LBR configuration for a specific process and optionally refresh the LBR MSRs if the current process is the owner
- *
- * @param Request
- * @return BOOLEAN
- */
-BOOLEAN
-LbrConfigLbr(LBR_IOCTL_REQUEST * Request)
-{
- LBR_STATE * State;
-
- State = LbrFindLbrState(Request->LbrConfig.Pid);
-
- if (State == NULL)
- {
- LogInfo("LIBIHT-COM: LBR not enabled for pid %d\n",
- Request->LbrConfig.Pid);
- return FALSE;
- }
-
- if (State->Config.Pid == xgetcurrent_pid())
- {
- LbrGetLbr(State);
- State->Config.LbrSelect = Request->LbrConfig.LbrSelect;
- LbrPutLbr(State);
- }
- else
- {
- State->Config.LbrSelect = Request->LbrConfig.LbrSelect;
- }
-
- return TRUE;
-}
-
-/**
- * @brief Create a new LBR_STATE structure with allocated memory for LBR data and entries
- *
- * @return LBR_STATE*
- */
-LBR_STATE *
-LbrCreateLbrState()
-{
- LBR_STATE * State;
- LBR_DATA * Data;
- LBR_STACK_ENTRY * Entries;
-
- State = xmalloc(sizeof(LBR_STATE));
- if (State == NULL)
- return NULL;
-
- Data = xmalloc(sizeof(LBR_DATA));
- if (Data == NULL)
- {
- xfree(State);
- return NULL;
- }
- SIZE_T TotalEntrySize = (SIZE_T)sizeof(LBR_STACK_ENTRY) * LbrCapacity;
- Entries = xmalloc(TotalEntrySize);
- if (Entries == NULL)
- {
- xfree(Data);
- xfree(State);
- return NULL;
- }
-
- xmemset(State, sizeof(LBR_STATE));
- xmemset(Data, sizeof(LBR_DATA));
- xmemset(Entries, TotalEntrySize);
-
- State->Data = Data;
- Data->Entries = Entries;
-
- return State;
-}
-
-/**
- * @brief Find the LBR_STATE structure for a specific process ID from the global list
- *
- * @param Pid
- * @return LBR_STATE*
- */
-LBR_STATE *
-LbrFindLbrState(ULONG Pid)
-{
- KIRQL OldIrql;
- LBR_STATE * RetState = NULL;
- PLIST_ENTRY Link;
-
- xacquire_lock(&LbrStateLock, &OldIrql);
-
- //
- // Iterating through LIST_ENTRY correctly
- //
- for (Link = LbrStateHead.Flink; Link != &LbrStateHead; Link = Link->Flink)
- {
- LBR_STATE * Curr = CONTAINING_RECORD(Link, LBR_STATE, List);
- if (Pid != 0 && Curr->Config.Pid == Pid)
- {
- RetState = Curr;
- break;
- }
- }
-
- xrelease_lock(&LbrStateLock, &OldIrql);
- return RetState;
-}
-
-/**
- * @brief Insert a new LBR_STATE structure into the global list with proper locking
- *
- * @param NewState
- * @return VOID
- */
-VOID
-LbrInsertLbrState(LBR_STATE * NewState)
-{
- KIRQL OldIrql;
-
- if (NewState == NULL)
- return;
-
- xacquire_lock(LbrStateLock, &OldIrql);
- LogInfo("LIBIHT-COM: Insert LBR state for pid %d\n", NewState->Config.Pid);
- xlist_add(NewState->List, LbrStateHead);
- xrelease_lock(LbrStateLock, &OldIrql);
-}
-
-/**
- * @brief Remove an existing LBR_STATE structure from the global list and free its associated memory with proper locking
- *
- * @param OldState
- * @return VOID
- */
-VOID
-LbrRemoveLbrState(LBR_STATE * OldState)
-{
- KIRQL OldIrql;
-
- if (OldState == NULL)
- return;
-
- xacquire_lock(LbrStateLock, &OldIrql);
- LogInfo("LIBIHT-COM: Remove LBR state for pid %d\n", OldState->Config.Pid);
-
- xlist_del(OldState->List);
- xfree(OldState->Data->Entries);
- xfree(OldState->Data);
- xfree(OldState);
-
- xrelease_lock(LbrStateLock, &OldIrql);
-}
-
-/**
- * @brief Free all LBR_STATE structures in the global list and their associated memory with proper locking
- *
- * @return VOID
- */
-VOID
-LbrFreeLbrStatList()
-{
- KIRQL OldIrql;
- LBR_STATE * CurrState;
- PLIST_ENTRY CurrLink;
-
- xacquire_lock(&LbrStateLock, &OldIrql);
-
- CurrLink = LbrStateHead.Flink;
- while (CurrLink != &LbrStateHead)
- {
- CurrState = CONTAINING_RECORD(CurrLink, LBR_STATE, List);
- CurrLink = CurrLink->Flink; // Get next before deleting
-
- xlist_del(CurrState->List);
- xfree(CurrState->Data->Entries);
- xfree(CurrState->Data);
- xfree(CurrState);
- }
-
- xrelease_lock(&LbrStateLock, &OldIrql);
-}
-
-/**
- * @brief Handle IOCTL requests for LBR operations by dispatching to the appropriate function based on the command
- *
- * @param Request
- * @return BOOLEAN
- */
-BOOLEAN
-LbrIoctlHandler(XIOCTL_REQUEST * Request)
-{
- BOOLEAN Status = TRUE;
-
- LogInfo("LIBIHT-COM: LBR ioctl command %d.\n", Request->Cmd);
- switch (Request->Cmd)
- {
- case LIBIHT_IOCTL_ENABLE_LBR:
- Status = LbrEnableLbr(&Request->Body.Lbr);
- break;
- case LIBIHT_IOCTL_DISABLE_LBR:
- Status = LbrDisableLbr(&Request->Body.Lbr);
- break;
- case LIBIHT_IOCTL_DUMP_LBR:
- Status = LbrDumpLbr(&Request->Body.Lbr);
- break;
- case LIBIHT_IOCTL_CONFIG_LBR:
- Status = LbrConfigLbr(&Request->Body.Lbr);
- break;
- default:
- LogInfo("LIBIHT-COM: Invalid LBR ioctl command\n");
- Status = FALSE;
- break;
- }
-
- return Status;
-}
-
-/**
- * @brief Handle context switch events by saving the LBR state of the previous process and restoring the LBR state of the next process if they are being traced
- *
- * @param PrevPid
- * @param NextPid
- * @return VOID
- */
-VOID
-LbrCswitchHandler(ULONG PrevPid,
- ULONG NextPid)
-{
- LBR_STATE * PrevState;
- LBR_STATE * NextState;
-
- PrevState = LbrFindLbrState(PrevPid);
- NextState = LbrFindLbrState(NextPid);
-
- if (PrevState)
- {
- LogInfo("LIBIHT-COM: LBR context switch from pid %d on cpu core %d\n",
- PrevState->Config.Pid,
- xcoreid());
- LbrGetLbr(PrevState);
- }
-
- if (NextState)
- {
- LogInfo("LIBIHT-COM: LBR context switch to pid %d on cpu core %d\n",
- NextState->Config.Pid,
- xcoreid());
- LbrPutLbr(NextState);
- }
-}
-
-/**
- * @brief Handle new process creation events by inheriting the LBR state from the parent process if it is being traced
- *
- * @param ParentPid
- * @param ChildPid
- * @return VOID
- */
-VOID
-LbrNewprocHandler(
- ULONG ParentPid,
- ULONG ChildPid)
-{
- LBR_STATE *ParentState, *ChildState;
- KIRQL OldIrql;
-
- ParentState = LbrFindLbrState(ParentPid);
- if (ParentState == NULL)
- return;
-
- LogInfo("LIBIHT-COM: LBR new child process pid %d, parent pid %d\n",
- ChildPid,
- ParentPid);
-
- ChildState = LbrCreateLbrState();
- if (ChildState == NULL)
- return;
-
- xacquire_lock(LbrStateLock, &OldIrql);
- ChildState->Parent = ParentState;
- ChildState->Config.Pid = ChildPid;
- ChildState->Config.LbrSelect = ParentState->Config.LbrSelect;
- xmemcpy(ChildState->Data,
- ParentState->Data,
- sizeof(LBR_DATA) + LbrCapacity * sizeof(LBR_STACK_ENTRY));
- xrelease_lock(LbrStateLock, &OldIrql);
-
- LbrInsertLbrState(ChildState);
-
- if (ChildPid == xgetcurrent_pid())
- LbrPutLbr(ChildState);
-}
-
-/**
- * @brief Check if the current CPU supports LBR by examining the CPU family and model and looking up the corresponding LBR capacity
- *
- * @return BOOLEAN
- */
-BOOLEAN
-LbrCheck()
-{
- ULONG a, b, c, d;
- ULONG Family, Model;
- ULONGLONG i;
-
- xcpuid(1, &a, &b, &c, &d);
-
- Family = ((a >> 8) & 0xF) + ((a >> 20) & 0xFF);
- Model = ((a >> 4) & 0xF) | ((a >> 12) & 0xF0);
-
- for (i = 0; i < sizeof(CPU_LBR_MAPS) / sizeof(CPU_LBR_MAPS[0]); ++i)
- {
- if (Model == CPU_LBR_MAPS[i].Model)
- {
- LbrCapacity = CPU_LBR_MAPS[i].LbrCapacity;
- break;
- }
- }
-
- if (LbrCapacity == 0)
- {
- return FALSE;
- }
-
- return TRUE;
-}
diff --git a/hyperdbg/hypertrace/header/Lbr.h b/hyperdbg/hypertrace/header/Lbr.h
new file mode 100644
index 00000000..4a97f9ef
--- /dev/null
+++ b/hyperdbg/hypertrace/header/Lbr.h
@@ -0,0 +1,160 @@
+/**
+ * @file Lbr.h
+ * @author Hari Mishal (harimishal6@gmail.com)
+ * @brief Message logging and tracing implementation
+ * @details Modified from LIBIHT project (Thomasaon Zhao et al) with Windows style updates.
+ * @version 0.18
+ * @date 2025-12-02
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ */
+
+#pragma once
+
+//////////////////////////////////////////////////
+// Globals //
+//////////////////////////////////////////////////
+
+
+// Intel MSR Constants
+#define MSR_IA32_DEBUGCTLMSR 0x000001D9
+#define DEBUGCTLMSR_LBR (1ULL << 0)
+#define MSR_LBR_SELECT 0x000001C8
+#define MSR_LBR_TOS 0x000001C9
+#define MSR_LBR_NHM_FROM 0x00000680
+#define MSR_LBR_NHM_TO 0x000006C0
+#define LBR_SELECT 0x0
+
+//////////////////////////////////////////////////
+// Structures //
+//////////////////////////////////////////////////
+
+typedef struct _LBR_STACK_ENTRY
+{
+ ULONGLONG From;
+ ULONGLONG To;
+
+} LBR_STACK_ENTRY, PLBR_STACK_ENTRY;
+
+typedef struct _LBR_DATA
+{
+ ULONGLONG LbrTos;
+ LBR_STACK_ENTRY * Entries;
+
+} LBR_DATA, *PLBR_DATA;
+
+typedef struct _LBR_CONFIG
+{
+ ULONG Pid;
+ ULONGLONG LbrSelect;
+
+} LBR_CONFIG, *PLBR_CONFIG;
+
+typedef struct _LBR_STATE
+{
+ LBR_CONFIG Config;
+ LBR_DATA * Data;
+ PVOID Parent;
+ LIST_ENTRY List;
+
+} LBR_STATE, *PLBR_STATE;
+
+typedef struct _LBR_IOCTL_REQUEST
+{
+ LBR_CONFIG LbrConfig;
+ LBR_DATA * Buffer;
+
+} LBR_IOCTL_REQUEST, *PLBR_IOCTL_REQUEST;
+
+typedef struct _XIOCTL_REQUEST
+{
+ ULONG Cmd;
+ union
+ {
+ LBR_IOCTL_REQUEST Lbr;
+ } Body;
+
+} XIOCTL_REQUEST, *PXIOCTL_REQUEST;
+
+// IOCTL Commands
+#define LIBIHT_IOCTL_ENABLE_LBR 0x1
+#define LIBIHT_IOCTL_DISABLE_LBR 0x2
+#define LIBIHT_IOCTL_DUMP_LBR 0x3
+#define LIBIHT_IOCTL_CONFIG_LBR 0x4
+
+//////////////////////////////////////////////////
+// Platform Wrappers //
+//////////////////////////////////////////////////
+
+#define xmalloc(sz) PlatformMemAllocateZeroedNonPagedPool(sz)
+#define xfree(p) PlatformMemFreePool(p)
+#define xmemset(ptr, sz) RtlZeroMemory(ptr, sz)
+#define xmemcpy RtlCopyMemory
+#define xrdmsr(msr, pval) (*(pval) = __readmsr(msr))
+#define xwrmsr(msr, val) __writemsr(msr, val)
+#define xcoreid() KeGetCurrentProcessorNumber()
+#define xgetcurrent_pid() (ULONG)(ULONG_PTR) PsGetCurrentProcessId()
+
+// List Handling
+#define xlist_next(ptr) (ptr)->Flink
+#define xlist_add(entry, head) InsertTailList(&(head), &(entry))
+#define xlist_del(entry) RemoveEntryList(&(entry))
+
+// Spinlock & IRQL (Using Windows Native to fix VCR001)
+#define xacquire_lock(Lock, Irql) KeAcquireSpinLock((PKSPIN_LOCK)(Lock), (Irql))
+#define xrelease_lock(Lock, Irql) KeReleaseSpinLock((PKSPIN_LOCK)(Lock), *(Irql))
+
+#define xlock_core(irql) KeRaiseIrql(DISPATCH_LEVEL, irql)
+#define xrelease_core(irql) KeLowerIrql(*(irql))
+
+// Buffer Copy
+#define xcopy_from_user(dest, src, sz) (RtlCopyMemory(dest, src, sz), 0)
+#define xcopy_to_user(dest, src, sz) (RtlCopyMemory(dest, src, sz), 0)
+
+// CPUID (Fixed C6001: initialized cpuInfo)
+#define xcpuid(code, a, b, c, d) \
+ { \
+ int cpuInfo[4] = {0}; \
+ __cpuid(cpuInfo, code); \
+ *a = cpuInfo[0]; \
+ *b = cpuInfo[1]; \
+ *c = cpuInfo[2]; \
+ *d = cpuInfo[3]; \
+ }
+
+//////////////////////////////////////////////////
+// Global Variables //
+//////////////////////////////////////////////////
+
+typedef struct _CPU_LBR_MAP
+{
+ ULONG Model;
+ ULONG LbrCapacity;
+} CPU_LBR_MAP, *PCPU_LBR_MAP;
+
+extern CPU_LBR_MAP CPU_LBR_MAPS[];
+
+//////////////////////////////////////////////////
+// Prototypes //
+//////////////////////////////////////////////////
+
+VOID
+LbrGetLbr(LBR_STATE * State);
+
+VOID
+LbrPutLbr(LBR_STATE * State);
+
+LBR_STATE *
+LbrCreateLbrState();
+
+LBR_STATE *
+LbrFindLbrState(ULONG Pid);
+
+VOID
+LbrInsertLbrState(LBR_STATE * NewState);
+
+VOID
+LbrRemoveLbrState(LBR_STATE * OldState);
+
+VOID
+LbrFreeLbrStatList();
diff --git a/hyperdbg/hypertrace/header/Tracing.h b/hyperdbg/hypertrace/header/Tracing.h
index d877e382..d2405bbe 100644
--- a/hyperdbg/hypertrace/header/Tracing.h
+++ b/hyperdbg/hypertrace/header/Tracing.h
@@ -20,146 +20,3 @@
*
*/
HYPERTRACE_CALLBACKS g_Callbacks;
-
-// Intel MSR Constants
-#define MSR_IA32_DEBUGCTLMSR 0x000001D9
-#define DEBUGCTLMSR_LBR (1ULL << 0)
-#define MSR_LBR_SELECT 0x000001C8
-#define MSR_LBR_TOS 0x000001C9
-#define MSR_LBR_NHM_FROM 0x00000680
-#define MSR_LBR_NHM_TO 0x000006C0
-#define LBR_SELECT 0x0
-
-//////////////////////////////////////////////////
-// Structures //
-//////////////////////////////////////////////////
-
-typedef struct _LBR_STACK_ENTRY
-{
- ULONGLONG From;
- ULONGLONG To;
-
-} LBR_STACK_ENTRY, PLBR_STACK_ENTRY;
-
-typedef struct _LBR_DATA
-{
- ULONGLONG LbrTos;
- LBR_STACK_ENTRY * Entries;
-
-} LBR_DATA, *PLBR_DATA;
-
-typedef struct _LBR_CONFIG
-{
- ULONG Pid;
- ULONGLONG LbrSelect;
-
-} LBR_CONFIG, *PLBR_CONFIG;
-
-typedef struct _LBR_STATE
-{
- LBR_CONFIG Config;
- LBR_DATA * Data;
- PVOID Parent;
- LIST_ENTRY List;
-
-} LBR_STATE, *PLBR_STATE;
-
-typedef struct _LBR_IOCTL_REQUEST
-{
- LBR_CONFIG LbrConfig;
- LBR_DATA * Buffer;
-
-} LBR_IOCTL_REQUEST, *PLBR_IOCTL_REQUEST;
-
-typedef struct _XIOCTL_REQUEST
-{
- ULONG Cmd;
- union
- {
- LBR_IOCTL_REQUEST Lbr;
- } Body;
-
-} XIOCTL_REQUEST, *PXIOCTL_REQUEST;
-
-// IOCTL Commands
-#define LIBIHT_IOCTL_ENABLE_LBR 0x1
-#define LIBIHT_IOCTL_DISABLE_LBR 0x2
-#define LIBIHT_IOCTL_DUMP_LBR 0x3
-#define LIBIHT_IOCTL_CONFIG_LBR 0x4
-
-//////////////////////////////////////////////////
-// Platform Wrappers //
-//////////////////////////////////////////////////
-
-#define xmalloc(sz) PlatformMemAllocateZeroedNonPagedPool(sz)
-#define xfree(p) PlatformMemFreePool(p)
-#define xmemset(ptr, sz) RtlZeroMemory(ptr, sz)
-#define xmemcpy RtlCopyMemory
-#define xrdmsr(msr, pval) (*(pval) = __readmsr(msr))
-#define xwrmsr(msr, val) __writemsr(msr, val)
-#define xcoreid() KeGetCurrentProcessorNumber()
-#define xgetcurrent_pid() (ULONG)(ULONG_PTR) PsGetCurrentProcessId()
-
-// List Handling
-#define xlist_next(ptr) (ptr)->Flink
-#define xlist_add(entry, head) InsertTailList(&(head), &(entry))
-#define xlist_del(entry) RemoveEntryList(&(entry))
-
-// Spinlock & IRQL (Using Windows Native to fix VCR001)
-#define xacquire_lock(Lock, Irql) KeAcquireSpinLock((PKSPIN_LOCK)(Lock), (Irql))
-#define xrelease_lock(Lock, Irql) KeReleaseSpinLock((PKSPIN_LOCK)(Lock), *(Irql))
-
-#define xlock_core(irql) KeRaiseIrql(DISPATCH_LEVEL, irql)
-#define xrelease_core(irql) KeLowerIrql(*(irql))
-
-// Buffer Copy
-#define xcopy_from_user(dest, src, sz) (RtlCopyMemory(dest, src, sz), 0)
-#define xcopy_to_user(dest, src, sz) (RtlCopyMemory(dest, src, sz), 0)
-
-// CPUID (Fixed C6001: initialized cpuInfo)
-#define xcpuid(code, a, b, c, d) \
- { \
- int cpuInfo[4] = {0}; \
- __cpuid(cpuInfo, code); \
- *a = cpuInfo[0]; \
- *b = cpuInfo[1]; \
- *c = cpuInfo[2]; \
- *d = cpuInfo[3]; \
- }
-
-//////////////////////////////////////////////////
-// Global Variables //
-//////////////////////////////////////////////////
-
-typedef struct _CPU_LBR_MAP
-{
- ULONG Model;
- ULONG LbrCapacity;
-} CPU_LBR_MAP, *PCPU_LBR_MAP;
-
-extern CPU_LBR_MAP CPU_LBR_MAPS[];
-
-//////////////////////////////////////////////////
-// Prototypes //
-//////////////////////////////////////////////////
-
-VOID
-LbrGetLbr(LBR_STATE * State);
-
-VOID
-LbrPutLbr(LBR_STATE * State);
-
-LBR_STATE *
-LbrCreateLbrState();
-
-LBR_STATE *
-LbrFindLbrState(ULONG Pid);
-
-VOID
-LbrInsertLbrState(LBR_STATE * NewState);
-
-VOID
-LbrRemoveLbrState(LBR_STATE * OldState);
-
-VOID
-LbrFreeLbrStatList();
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 95c0c8a4..24fcbd01 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -73,6 +73,7 @@
// Definition of tracing types and structures
//
#include "Tracing.h"
+#include "Lbr.h"
//
// Platform independent headers
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index 509ef4ad..60bb63d2 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -103,6 +103,7 @@
+
@@ -111,6 +112,7 @@
+
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
index cc62d74b..d291223a 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj.filters
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -38,6 +38,9 @@
code\interface
+
+ code
+
@@ -61,5 +64,8 @@
header\interface
+
+ header
+
\ No newline at end of file
From 5a42d00a1f185a66d3b0348fe1c5c017670bd331 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 8 Feb 2026 04:09:47 +0100
Subject: [PATCH 075/323] Link hypertrace to hyperkd
---
hyperdbg/hyperkd/code/driver/Loader.c | 49 +++++++++++++++++--
hyperdbg/hyperkd/hyperkd.vcxproj | 4 +-
hyperdbg/hypertrace/code/Tracing.c | 2 +
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 2 +-
4 files changed, 51 insertions(+), 6 deletions(-)
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index d9ab3408..d8f056fb 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -20,6 +20,7 @@ LoaderInitVmmAndDebugger()
{
MESSAGE_TRACING_CALLBACKS MsgTracingCallbacks = {0};
VMM_CALLBACKS VmmCallbacks = {0};
+ HYPERTRACE_CALLBACKS HyperTraceCallbacks = {0};
//
// Allow to server IOCTL
@@ -27,14 +28,14 @@ LoaderInitVmmAndDebugger()
g_AllowIOCTLFromUsermode = TRUE;
//
- // Fill the callbacks for the message tracer
+ // *** Fill the callbacks for the message tracer ***
//
MsgTracingCallbacks.VmxOperationCheck = VmFuncVmxGetCurrentExecutionMode;
MsgTracingCallbacks.CheckImmediateMessageSending = KdCheckImmediateMessagingMechanism;
MsgTracingCallbacks.SendImmediateMessage = KdLoggingResponsePacketToDebugger;
//
- // Fill the callbacks for using hyperlog in VMM
+ // *** Fill the callbacks for using hyperlog in VMM ***
//
VmmCallbacks.LogCallbackPrepareAndSendMessageToQueueWrapper = LogCallbackPrepareAndSendMessageToQueueWrapper;
VmmCallbacks.LogCallbackSendMessageToQueue = LogCallbackSendMessageToQueue;
@@ -69,13 +70,38 @@ LoaderInitVmmAndDebugger()
//
VmmCallbacks.InterceptionCallbackTriggerCr3ProcessChange = ProcessTriggerCr3ProcessChange;
+ //
+ // *** Fill the callbacks for using hypertrace ***
+ //
+
+ //
+ // Fill the callbacks for using hyperlog in hypertrace
+ // We use the callbacks directly to avoid two calls to the same function
+ //
+ HyperTraceCallbacks.LogCallbackPrepareAndSendMessageToQueueWrapper = LogCallbackPrepareAndSendMessageToQueueWrapper;
+ HyperTraceCallbacks.LogCallbackSendMessageToQueue = LogCallbackSendMessageToQueue;
+ HyperTraceCallbacks.LogCallbackSendBuffer = LogCallbackSendBuffer;
+ HyperTraceCallbacks.LogCallbackCheckIfBufferIsFull = LogCallbackCheckIfBufferIsFull;
+
+ //
+ // Memory callbacks
+ //
+ HyperTraceCallbacks.CheckAccessValidityAndSafety = CheckAccessValidityAndSafety;
+ HyperTraceCallbacks.MemoryMapperReadMemorySafeOnTargetProcess = MemoryMapperReadMemorySafeOnTargetProcess;
+ HyperTraceCallbacks.MemoryMapperWriteMemorySafeOnTargetProcess = MemoryMapperWriteMemorySafeOnTargetProcess;
+
+ //
+ // Common callbacks
+ //
+ HyperTraceCallbacks.CommonGetProcessNameFromProcessControlBlock = CommonGetProcessNameFromProcessControlBlock;
+
//
// Initialize message tracer
//
if (LogInitialize(&MsgTracingCallbacks))
{
//
- // Initialize Vmx
+ // Initialize VMX
//
if (VmFuncInitVmm(&VmmCallbacks))
{
@@ -93,6 +119,23 @@ LoaderInitVmmAndDebugger()
//
g_HandleInUse = TRUE;
+ //
+ // Initialize hypertrace module
+ //
+ /*
+ if (HyperTraceInit(&HyperTraceCallbacks))
+ {
+ LogDebugInfo("HyperDbg's hypertrace loaded successfully");
+ }
+ else
+ {
+ //
+ // We won't fail the loading just because of hypertrace, so we just log the error and continue without loading hypertrace
+ //
+ LogDebugInfo("Err, HyperDbg's hypertrace was not loaded");
+ }
+ */
+
return TRUE;
}
else
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj b/hyperdbg/hyperkd/hyperkd.vcxproj
index c2102bc7..e1b3f224 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj
@@ -76,7 +76,7 @@
true
DriverEntry
- $(SolutionDir)build\bin\$(Configuration)\hyperlog.lib;$(SolutionDir)build\bin\$(Configuration)\hyperhv.lib;$(SolutionDir)build\bin\$(Configuration)\kdserial.lib;%(AdditionalDependencies)
+ $(SolutionDir)build\bin\$(Configuration)\hyperlog.lib;$(SolutionDir)build\bin\$(Configuration)\hyperhv.lib;$(SolutionDir)build\bin\$(Configuration)\kdserial.lib;$(SolutionDir)build\bin\$(Configuration)\hypertrace.lib;%(AdditionalDependencies)
@@ -96,7 +96,7 @@
true
DriverEntry
- $(SolutionDir)build\bin\$(Configuration)\hyperlog.lib;$(SolutionDir)build\bin\$(Configuration)\hyperhv.lib;$(SolutionDir)build\bin\$(Configuration)\kdserial.lib;%(AdditionalDependencies)
+ $(SolutionDir)build\bin\$(Configuration)\hyperlog.lib;$(SolutionDir)build\bin\$(Configuration)\hyperhv.lib;$(SolutionDir)build\bin\$(Configuration)\kdserial.lib;$(SolutionDir)build\bin\$(Configuration)\hypertrace.lib;%(AdditionalDependencies)
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 990b03bd..f51cd85a 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -40,5 +40,7 @@ HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
//
RtlCopyMemory(&g_Callbacks, HypertraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
+ LogInfo("HyperTrace module initialized successfully with provided callbacks.\n");
+
return TRUE;
}
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 12f07278..2a190e7c 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -23,7 +23,7 @@
//
// Initialize the hypertrace module with the provided callbacks
//
-BOOLEAN
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks);
//
From 20984b36b5df0fa08587b45feeebf8c09586f76e Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 8 Feb 2026 19:49:22 +0100
Subject: [PATCH 076/323] update version and changelog
---
CHANGELOG.md | 12 ++++++++++++
README.md | 1 +
hyperdbg/hyperdbg.sln | 2 --
hyperdbg/include/SDK/headers/Constants.h | 2 +-
4 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5bf8ff11..1c841d39 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.18.0.0] - 2026-XX-XX
+New release of the HyperDbg Debugger. All credit for this release goes to [@xmaple555](https://github.com/xmaple555).
+
+### Added
+- Script engine now supports writing libraries using the '#include' keyword thanks to [@xmaple555](https://github.com/xmaple555) ([link](https://docs.hyperdbg.org/commands/scripting-language/casting-and-inclusion))([link](https://github.com/HyperDbg/HyperDbg/issues/557))([link](https://github.com/HyperDbg/HyperDbg/pull/561))
+- Initial codes for the hypertrace project by using Intel Last Branch Record (LBR) and Branch Trace Store (BTS) thanks to [@harimishal1](https://github.com/harimishal1) ([link](https://github.com/HyperDbg/HyperDbg/tree/master/hyperdbg/hypertrace))
+
+### Changed
+- Fix bugs for interpreting 'db_pa, 'dd_pa', 'eb_pa', and 'ed_pa' keywords in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/assumptions-and-evaluations#keywords))([link](https://github.com/HyperDbg/HyperDbg/pull/507))
+- Fix variable types in the script engine ([link](https://github.com/HyperDbg/HyperDbg/commit/43b0245fa11b5c73ce4cd21d8b8787b86a05f89d))
+- Fix and update array index for boolean expressions in the script engine ([link](https://github.com/HyperDbg/HyperDbg/commit/ba2cec3c12c3ff45ddc0004051884983ff62a0b3))
+
## [0.17.0.0] - 2025-11-10
New release of the HyperDbg Debugger. All credit for this release goes to [@xmaple555](https://github.com/xmaple555).
diff --git a/README.md b/README.md
index c5d6e03a..ad745bfc 100644
--- a/README.md
+++ b/README.md
@@ -150,6 +150,7 @@ You can also read [this article](https://research.hyperdbg.org/debugger/kernel-d
* Triggering and Counting System Management Mode (SMM) Interrupts (SMIs) [link ]
* Attaching to the User-mode Process and Preventing Execution [link ]
* Intercepting Execution of XSETBV Instructions [link ]
+* Writing Library Script Files [link ]
## How does it work?
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index f2e48124..ebcb85a6 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -289,10 +289,8 @@ Global
{B226530A-14B1-40AC-B82E-D9057400E7EE}.release|x64.Build.0 = release|x64
{9FA45E25-DAEB-4C2D-806C-7908A180195D}.debug|x64.ActiveCfg = debug|x64
{9FA45E25-DAEB-4C2D-806C-7908A180195D}.debug|x64.Build.0 = debug|x64
- {9FA45E25-DAEB-4C2D-806C-7908A180195D}.debug|x64.Deploy.0 = debug|x64
{9FA45E25-DAEB-4C2D-806C-7908A180195D}.release|x64.ActiveCfg = release|x64
{9FA45E25-DAEB-4C2D-806C-7908A180195D}.release|x64.Build.0 = release|x64
- {9FA45E25-DAEB-4C2D-806C-7908A180195D}.release|x64.Deploy.0 = release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h
index abed5d72..dc306339 100644
--- a/hyperdbg/include/SDK/headers/Constants.h
+++ b/hyperdbg/include/SDK/headers/Constants.h
@@ -17,7 +17,7 @@
//////////////////////////////////////////////////
#define VERSION_MAJOR 0
-#define VERSION_MINOR 17
+#define VERSION_MINOR 18
#define VERSION_PATCH 0
//
From 1924385156bb4eb3e1da1bc807db7e6e7be4f635 Mon Sep 17 00:00:00 2001
From: Hari Mishal
Date: Wed, 11 Feb 2026 02:54:02 +0100
Subject: [PATCH 077/323] Uncommented call to hypertrace in Loader.c and added
dependencies (lbr.h, lbr.c) and code (tracing.c) to print lbr buffer.
---
hyperdbg/hyperkd/code/driver/Loader.c | 3 +-
hyperdbg/hypertrace/code/Lbr.c | 23 +++++++++++---
hyperdbg/hypertrace/code/Tracing.c | 45 ++++++++++++++++++++++++++-
hyperdbg/hypertrace/header/Lbr.h | 17 +++++++++-
4 files changed, 79 insertions(+), 9 deletions(-)
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index d8f056fb..152f62ca 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -122,7 +122,7 @@ LoaderInitVmmAndDebugger()
//
// Initialize hypertrace module
//
- /*
+
if (HyperTraceInit(&HyperTraceCallbacks))
{
LogDebugInfo("HyperDbg's hypertrace loaded successfully");
@@ -134,7 +134,6 @@ LoaderInitVmmAndDebugger()
//
LogDebugInfo("Err, HyperDbg's hypertrace was not loaded");
}
- */
return TRUE;
}
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index a9d87cf0..cdf35f1c 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -82,6 +82,19 @@ CPU_LBR_MAP CPU_LBR_MAPS[] = {
{0x35, 8},
{0x36, 8}};
+/**
+ * @brief Initialize LBR state list and spinlock
+ *
+ * @param State
+ * @return VOID
+ */
+VOID
+LbrInitialize()
+{
+ InitializeListHead(&LbrStateHead);
+ KeInitializeSpinLock(&LbrStateLock);
+}
+
/**
* @brief Read LBR MSRs and store the values in the provided LBR_STATE structure
*
@@ -99,7 +112,7 @@ LbrGetLbr(LBR_STATE * State)
DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
- xacquire_lock(LbrStateLock, &OldIrql);
+ xacquire_lock(&LbrStateLock, &OldIrql);
xrdmsr(MSR_LBR_SELECT, &State->Config.LbrSelect);
xrdmsr(MSR_LBR_TOS, &State->Data->LbrTos);
@@ -286,7 +299,7 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
LbrPutLbr(State);
}
- xacquire_lock(LbrStateLock, &OldIrql);
+ xacquire_lock(&LbrStateLock, &OldIrql);
//
// Dump the LBR state to debug logs
@@ -465,7 +478,7 @@ LbrInsertLbrState(LBR_STATE * NewState)
if (NewState == NULL)
return;
- xacquire_lock(LbrStateLock, &OldIrql);
+ xacquire_lock(&LbrStateLock, &OldIrql);
LogInfo("LIBIHT-COM: Insert LBR state for pid %d\n", NewState->Config.Pid);
xlist_add(NewState->List, LbrStateHead);
xrelease_lock(LbrStateLock, &OldIrql);
@@ -485,7 +498,7 @@ LbrRemoveLbrState(LBR_STATE * OldState)
if (OldState == NULL)
return;
- xacquire_lock(LbrStateLock, &OldIrql);
+ xacquire_lock(&LbrStateLock, &OldIrql);
LogInfo("LIBIHT-COM: Remove LBR state for pid %d\n", OldState->Config.Pid);
xlist_del(OldState->List);
@@ -621,7 +634,7 @@ LbrNewprocHandler(
if (ChildState == NULL)
return;
- xacquire_lock(LbrStateLock, &OldIrql);
+ xacquire_lock(&LbrStateLock, &OldIrql);
ChildState->Parent = ParentState;
ChildState->Config.Pid = ChildPid;
ChildState->Config.LbrSelect = ParentState->Config.LbrSelect;
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index f51cd85a..d45057d2 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -10,7 +10,7 @@
*/
#include "pch.h"
-
+#include "Lbr.h"
/**
* @brief Hide debugger on transparent-mode (activate transparent-mode)
*
@@ -18,6 +18,48 @@
*
* @return BOOLEAN
*/
+
+VOID
+PerformLbrTraceAfterEnable()
+{
+ LBR_IOCTL_REQUEST Request;
+ RtlZeroMemory(&Request, sizeof(LBR_IOCTL_REQUEST));
+ LbrInitialize();
+
+ // Check if LBR is supported
+ // This populates LbrCapacity based on the CPU Model
+ if (!LbrCheck())
+ {
+ LogInfo("LBR is not supported on this CPU model.\n");
+ return;
+ }
+ LogInfo("LBR Support detected. Capacity: %llu entries.\n", LbrCapacity);
+
+ // Enable LBR
+ // We set Pid to 0 to target the current process
+ Request.LbrConfig.Pid = 0;
+ Request.LbrConfig.LbrSelect = 0; // Uses default LBR_SELECT defined in your headers
+
+ if (LbrEnableLbr(&Request))
+ {
+ LogInfo("LBR successfully enabled for current process.\n");
+
+ // LbrDumpLbr prints directly to LogInfo inside Lbr.c
+ LogInfo("Dumping LBR Buffer:\n");
+ LbrDumpLbr(&Request);
+
+ // This cleans up the LBR_STATE and stops the tracing
+ if (LbrDisableLbr(&Request))
+ {
+ LogInfo("LBR successfully disabled.\n");
+ }
+ }
+ else
+ {
+ LogInfo("Failed to enable LBR.\n");
+ }
+}
+
BOOLEAN
HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
{
@@ -41,6 +83,7 @@ HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
RtlCopyMemory(&g_Callbacks, HypertraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
LogInfo("HyperTrace module initialized successfully with provided callbacks.\n");
+ PerformLbrTraceAfterEnable();
return TRUE;
}
diff --git a/hyperdbg/hypertrace/header/Lbr.h b/hyperdbg/hypertrace/header/Lbr.h
index 4a97f9ef..8273347f 100644
--- a/hyperdbg/hypertrace/header/Lbr.h
+++ b/hyperdbg/hypertrace/header/Lbr.h
@@ -15,7 +15,6 @@
// Globals //
//////////////////////////////////////////////////
-
// Intel MSR Constants
#define MSR_IA32_DEBUGCTLMSR 0x000001D9
#define DEBUGCTLMSR_LBR (1ULL << 0)
@@ -158,3 +157,19 @@ LbrRemoveLbrState(LBR_STATE * OldState);
VOID
LbrFreeLbrStatList();
+
+VOID
+LbrInitialize();
+
+BOOLEAN
+LbrEnableLbr(LBR_IOCTL_REQUEST * Request);
+
+BOOLEAN
+LbrDisableLbr(LBR_IOCTL_REQUEST * Request);
+
+BOOLEAN
+LbrDumpLbr(LBR_IOCTL_REQUEST * Request);
+
+extern ULONGLONG LbrCapacity;
+extern LIST_ENTRY LbrStateHead;
+extern KSPIN_LOCK LbrStateLock;
From 207772f0e721f855d3268bb10ed0bbbbd47b8ff6 Mon Sep 17 00:00:00 2001
From: sina
Date: Wed, 11 Feb 2026 18:16:04 +0100
Subject: [PATCH 078/323] edit changelog
---
CHANGELOG.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1c841d39..fdd153e5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,11 +5,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.18.0.0] - 2026-XX-XX
-New release of the HyperDbg Debugger. All credit for this release goes to [@xmaple555](https://github.com/xmaple555).
+New release of the HyperDbg Debugger.
### Added
- Script engine now supports writing libraries using the '#include' keyword thanks to [@xmaple555](https://github.com/xmaple555) ([link](https://docs.hyperdbg.org/commands/scripting-language/casting-and-inclusion))([link](https://github.com/HyperDbg/HyperDbg/issues/557))([link](https://github.com/HyperDbg/HyperDbg/pull/561))
- Initial codes for the hypertrace project by using Intel Last Branch Record (LBR) and Branch Trace Store (BTS) thanks to [@harimishal1](https://github.com/harimishal1) ([link](https://github.com/HyperDbg/HyperDbg/tree/master/hyperdbg/hypertrace))
+- The hypertrace project is now linked to the hyperkd
### Changed
- Fix bugs for interpreting 'db_pa, 'dd_pa', 'eb_pa', and 'ed_pa' keywords in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/assumptions-and-evaluations#keywords))([link](https://github.com/HyperDbg/HyperDbg/pull/507))
From 91c558e43b9ffa4fd4317dab11f133e475cedcec Mon Sep 17 00:00:00 2001
From: sina
Date: Wed, 11 Feb 2026 18:17:09 +0100
Subject: [PATCH 079/323] disable hypertrace callback by default
---
hyperdbg/dependencies/zydis | 2 +-
hyperdbg/hyperkd/code/driver/Loader.c | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/hyperdbg/dependencies/zydis b/hyperdbg/dependencies/zydis
index d45e7416..9bfadd6a 160000
--- a/hyperdbg/dependencies/zydis
+++ b/hyperdbg/dependencies/zydis
@@ -1 +1 @@
-Subproject commit d45e7416b2123706c3695fa802e6b29543f1a549
+Subproject commit 9bfadd6a55fc92dbd37fa3ba089bf8b36622df4f
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index 152f62ca..d8f056fb 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -122,7 +122,7 @@ LoaderInitVmmAndDebugger()
//
// Initialize hypertrace module
//
-
+ /*
if (HyperTraceInit(&HyperTraceCallbacks))
{
LogDebugInfo("HyperDbg's hypertrace loaded successfully");
@@ -134,6 +134,7 @@ LoaderInitVmmAndDebugger()
//
LogDebugInfo("Err, HyperDbg's hypertrace was not loaded");
}
+ */
return TRUE;
}
From 1eb72d162114458da82ea8a97193eb035de36718 Mon Sep 17 00:00:00 2001
From: Alireza moradi
Date: Fri, 26 Dec 2025 18:34:42 +0330
Subject: [PATCH 080/323] linux kernel module mock added
---
hyperdbg/linux/mock/Makefile | 10 ++++++++
hyperdbg/linux/mock/mem.c | 36 ++++++++++++++++++++++++++++
hyperdbg/linux/mock/mem.h | 16 +++++++++++++
hyperdbg/linux/mock/mock.c | 39 +++++++++++++++++++++++++++++++
hyperdbg/linux/mock/module_info.h | 13 +++++++++++
5 files changed, 114 insertions(+)
create mode 100644 hyperdbg/linux/mock/Makefile
create mode 100644 hyperdbg/linux/mock/mem.c
create mode 100644 hyperdbg/linux/mock/mem.h
create mode 100644 hyperdbg/linux/mock/mock.c
create mode 100644 hyperdbg/linux/mock/module_info.h
diff --git a/hyperdbg/linux/mock/Makefile b/hyperdbg/linux/mock/Makefile
new file mode 100644
index 00000000..0680d315
--- /dev/null
+++ b/hyperdbg/linux/mock/Makefile
@@ -0,0 +1,10 @@
+obj-m += mymodule.o
+mymodule-objs := mock.o mem.o
+
+PWD := $(CURDIR)
+
+all:
+ $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
+
+clean:
+ $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
diff --git a/hyperdbg/linux/mock/mem.c b/hyperdbg/linux/mock/mem.c
new file mode 100644
index 00000000..8f22ccc4
--- /dev/null
+++ b/hyperdbg/linux/mock/mem.c
@@ -0,0 +1,36 @@
+#include
+#include
+#include
+#include "module_info.h"
+#include "mem.h"
+
+void* MemAllocKernel(size_t Size)
+{
+ void* ptr = kzalloc(Size, GFP_KERNEL);
+
+ if (ptr)
+ printk(KERN_INFO "MemAllocKernel: Allocated %zu bytes at %px\n", Size, ptr);
+ else
+ printk(KERN_ERR "MemAllocKernel: failed to allocate %zu bytes\n", Size);
+
+ return ptr;
+}
+
+void MemFree(void* Ptr)
+{
+ if (Ptr) {
+ printk(KERN_INFO "MemFree: Freeing memory at %px\n", Ptr);
+ kfree(Ptr);
+ }
+}
+
+void MemCopy(void* Destination, const void* Source, size_t Size)
+{
+ memcpy(Destination, Source, Size);
+}
+
+void MemSet(void* Destination, int Value, size_t Size)
+{
+ memset(Destination, Value, Size);
+}
+
diff --git a/hyperdbg/linux/mock/mem.h b/hyperdbg/linux/mock/mem.h
new file mode 100644
index 00000000..b170ea5c
--- /dev/null
+++ b/hyperdbg/linux/mock/mem.h
@@ -0,0 +1,16 @@
+#ifndef MEM_LINUX_H
+#define MEM_LINUX_H
+
+#if !defined(__linux__) || !defined(__KERNEL__)
+#error "This code must be compiled for Linux kernel only"
+#endif
+
+#include
+
+void* MemAllocKernel(size_t Size);
+void MemFree(void* Ptr);
+void MemCopy(void* Destination, const void* Source, size_t Size);
+void MemSet(void* Destination, int Value, size_t Size);
+
+#endif
+
diff --git a/hyperdbg/linux/mock/mock.c b/hyperdbg/linux/mock/mock.c
new file mode 100644
index 00000000..1cafa619
--- /dev/null
+++ b/hyperdbg/linux/mock/mock.c
@@ -0,0 +1,39 @@
+#include
+#include
+#include
+#include
+#include "module_info.h"
+#include "mem.h"
+
+
+static void* g_AllocatedBuffer;
+static size_t g_BufferSize = 4096;
+
+static int mock_init(void)
+{
+ char source_data[] = "This is a test string from Linux kernel module";
+
+ printk(KERN_INFO "Mock module loading\n");
+
+ g_AllocatedBuffer = MemAllocKernel(g_BufferSize);
+ if (!g_AllocatedBuffer)
+ return -ENOMEM;
+
+ MemCopy(g_AllocatedBuffer, source_data, sizeof(source_data));
+ printk(KERN_INFO "Copied data: %s\n", (char*)g_AllocatedBuffer);
+
+ MemSet(g_AllocatedBuffer, 0, g_BufferSize);
+ printk(KERN_INFO "Buffer zeroed\n");
+
+ return 0;
+}
+
+static void mock_exit(void)
+{
+ printk(KERN_INFO "Mock module unloading\n");
+ MemFree(g_AllocatedBuffer);
+}
+
+module_init(mock_init);
+module_exit(mock_exit);
+
diff --git a/hyperdbg/linux/mock/module_info.h b/hyperdbg/linux/mock/module_info.h
new file mode 100644
index 00000000..e5c82f7a
--- /dev/null
+++ b/hyperdbg/linux/mock/module_info.h
@@ -0,0 +1,13 @@
+// module_info.h
+
+#ifndef MODULE_INFO_H
+#define MODULE_INFO_H
+
+#include
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Alish");
+MODULE_DESCRIPTION("Linux Kernel module Mock");
+MODULE_VERSION("0.1");
+
+#endif // _MODULE_INFO_H_
From a25f81483c194877fd437d049b7fc3a49d46d506 Mon Sep 17 00:00:00 2001
From: Alireza moradi
Date: Mon, 5 Jan 2026 00:52:22 +0330
Subject: [PATCH 081/323] link files in mock to platform/kernel/
---
.../include/platform/kernel/code/.Mem.o.cmd | 1038 +++++++++++++++++
hyperdbg/include/platform/kernel/code/Mem.c | 47 +
hyperdbg/include/platform/kernel/code/Mem.o | Bin 0 -> 29248 bytes
hyperdbg/include/platform/kernel/header/Mem.h | 11 +
.../platform/kernel/header/module_info.h | 13 +
hyperdbg/linux/mock/Makefile | 11 +-
hyperdbg/linux/mock/mock.c | 2 +-
7 files changed, 1117 insertions(+), 5 deletions(-)
create mode 100644 hyperdbg/include/platform/kernel/code/.Mem.o.cmd
create mode 100644 hyperdbg/include/platform/kernel/code/Mem.o
create mode 100644 hyperdbg/include/platform/kernel/header/module_info.h
diff --git a/hyperdbg/include/platform/kernel/code/.Mem.o.cmd b/hyperdbg/include/platform/kernel/code/.Mem.o.cmd
new file mode 100644
index 00000000..93509bcf
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/.Mem.o.cmd
@@ -0,0 +1,1038 @@
+savedcmd_/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o := gcc-13 -Wp,-MMD,/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/.Mem.o.d -nostdinc -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/compiler-version.h -include ./include/linux/kconfig.h -I./ubuntu/include -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -mindirect-branch-cs-prefix -mfunction-return=thunk-extern -fno-jump-tables -mharden-sls=all -fpatchable-function-entry=16,16 -fno-delete-null-pointer-checks -O2 -fno-allow-store-data-races -fstack-protector-strong -fno-omit-frame-pointer -fno-optimize-sibling-calls -ftrivial-auto-var-init=zero -fno-stack-clash-protection -fzero-call-used-regs=used-gpr -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -falign-functions=16 -fstrict-flex-arrays=3 -fno-strict-overflow -fno-stack-check -fconserve-stack -Wall -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=1024 -Wno-main -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-dangling-pointer -Wvla -Wno-pointer-sign -Wcast-function-type -Wno-stringop-overflow -Wno-array-bounds -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-restrict -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -g -gdwarf-5 -I/usr/src/linux-headers-6.8.0-51-generic/../../include/platform/kernel/header -fsanitize=bounds-strict -fsanitize=shift -fsanitize=bool -fsanitize=enum -DMODULE -DKBUILD_BASENAME='"Mem"' -DKBUILD_MODNAME='"mymodule"' -D__KBUILD_MODNAME=kmod_mymodule -c -o /home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o /home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.c ; ./tools/objtool/objtool --hacks=jump_label --hacks=noinstr --hacks=skylake --retpoline --rethunk --sls --stackval --static-call --uaccess --prefix=16 --module /home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o
+
+source_/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o := /home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.c
+
+deps_/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o := \
+ include/linux/compiler-version.h \
+ $(wildcard include/config/CC_VERSION_TEXT) \
+ include/linux/kconfig.h \
+ $(wildcard include/config/CPU_BIG_ENDIAN) \
+ $(wildcard include/config/BOOGER) \
+ $(wildcard include/config/FOO) \
+ include/linux/compiler_types.h \
+ $(wildcard include/config/DEBUG_INFO_BTF) \
+ $(wildcard include/config/PAHOLE_HAS_BTF_TAG) \
+ $(wildcard include/config/FUNCTION_ALIGNMENT) \
+ $(wildcard include/config/CC_IS_GCC) \
+ $(wildcard include/config/X86_64) \
+ $(wildcard include/config/ARM64) \
+ $(wildcard include/config/HAVE_ARCH_COMPILER_H) \
+ $(wildcard include/config/CC_HAS_ASM_INLINE) \
+ include/linux/compiler_attributes.h \
+ include/linux/compiler-gcc.h \
+ $(wildcard include/config/RETPOLINE) \
+ $(wildcard include/config/GCC_ASM_GOTO_OUTPUT_WORKAROUND) \
+ $(wildcard include/config/ARCH_USE_BUILTIN_BSWAP) \
+ $(wildcard include/config/SHADOW_CALL_STACK) \
+ $(wildcard include/config/KCOV) \
+ /home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/../header/Mem.h \
+ include/linux/types.h \
+ $(wildcard include/config/HAVE_UID16) \
+ $(wildcard include/config/UID16) \
+ $(wildcard include/config/ARCH_DMA_ADDR_T_64BIT) \
+ $(wildcard include/config/PHYS_ADDR_T_64BIT) \
+ $(wildcard include/config/64BIT) \
+ $(wildcard include/config/ARCH_32BIT_USTAT_F_TINODE) \
+ include/uapi/linux/types.h \
+ arch/x86/include/generated/uapi/asm/types.h \
+ include/uapi/asm-generic/types.h \
+ include/asm-generic/int-ll64.h \
+ include/uapi/asm-generic/int-ll64.h \
+ arch/x86/include/uapi/asm/bitsperlong.h \
+ include/asm-generic/bitsperlong.h \
+ include/uapi/asm-generic/bitsperlong.h \
+ include/uapi/linux/posix_types.h \
+ include/linux/stddef.h \
+ include/uapi/linux/stddef.h \
+ arch/x86/include/asm/posix_types.h \
+ $(wildcard include/config/X86_32) \
+ arch/x86/include/uapi/asm/posix_types_64.h \
+ include/uapi/asm-generic/posix_types.h \
+ include/linux/kernel.h \
+ $(wildcard include/config/PREEMPT_VOLUNTARY_BUILD) \
+ $(wildcard include/config/PREEMPT_DYNAMIC) \
+ $(wildcard include/config/HAVE_PREEMPT_DYNAMIC_CALL) \
+ $(wildcard include/config/HAVE_PREEMPT_DYNAMIC_KEY) \
+ $(wildcard include/config/PREEMPT_) \
+ $(wildcard include/config/DEBUG_ATOMIC_SLEEP) \
+ $(wildcard include/config/SMP) \
+ $(wildcard include/config/MMU) \
+ $(wildcard include/config/PROVE_LOCKING) \
+ $(wildcard include/config/TRACING) \
+ $(wildcard include/config/FTRACE_MCOUNT_RECORD) \
+ include/linux/stdarg.h \
+ include/linux/align.h \
+ include/linux/const.h \
+ include/vdso/const.h \
+ include/uapi/linux/const.h \
+ include/linux/array_size.h \
+ include/linux/compiler.h \
+ $(wildcard include/config/TRACE_BRANCH_PROFILING) \
+ $(wildcard include/config/PROFILE_ALL_BRANCHES) \
+ $(wildcard include/config/OBJTOOL) \
+ arch/x86/include/generated/asm/rwonce.h \
+ include/asm-generic/rwonce.h \
+ include/linux/kasan-checks.h \
+ $(wildcard include/config/KASAN_GENERIC) \
+ $(wildcard include/config/KASAN_SW_TAGS) \
+ include/linux/kcsan-checks.h \
+ $(wildcard include/config/KCSAN) \
+ $(wildcard include/config/KCSAN_WEAK_MEMORY) \
+ $(wildcard include/config/KCSAN_IGNORE_ATOMICS) \
+ include/linux/limits.h \
+ include/uapi/linux/limits.h \
+ include/vdso/limits.h \
+ include/linux/linkage.h \
+ $(wildcard include/config/ARCH_USE_SYM_ANNOTATIONS) \
+ include/linux/stringify.h \
+ include/linux/export.h \
+ $(wildcard include/config/MODVERSIONS) \
+ arch/x86/include/asm/linkage.h \
+ $(wildcard include/config/CALL_PADDING) \
+ $(wildcard include/config/RETHUNK) \
+ $(wildcard include/config/SLS) \
+ $(wildcard include/config/FUNCTION_PADDING_BYTES) \
+ $(wildcard include/config/UML) \
+ arch/x86/include/asm/ibt.h \
+ $(wildcard include/config/X86_KERNEL_IBT) \
+ include/linux/container_of.h \
+ include/linux/build_bug.h \
+ include/linux/bitops.h \
+ include/linux/bits.h \
+ include/vdso/bits.h \
+ include/linux/typecheck.h \
+ include/uapi/linux/kernel.h \
+ include/uapi/linux/sysinfo.h \
+ include/asm-generic/bitops/generic-non-atomic.h \
+ arch/x86/include/asm/barrier.h \
+ arch/x86/include/asm/alternative.h \
+ $(wildcard include/config/CALL_THUNKS) \
+ arch/x86/include/asm/asm.h \
+ $(wildcard include/config/KPROBES) \
+ arch/x86/include/asm/extable_fixup_types.h \
+ arch/x86/include/asm/nops.h \
+ include/asm-generic/barrier.h \
+ arch/x86/include/asm/bitops.h \
+ $(wildcard include/config/X86_CMOV) \
+ arch/x86/include/asm/rmwcc.h \
+ include/linux/args.h \
+ include/asm-generic/bitops/sched.h \
+ arch/x86/include/asm/arch_hweight.h \
+ arch/x86/include/asm/cpufeatures.h \
+ arch/x86/include/asm/required-features.h \
+ $(wildcard include/config/X86_MINIMUM_CPU_FAMILY) \
+ $(wildcard include/config/MATH_EMULATION) \
+ $(wildcard include/config/X86_PAE) \
+ $(wildcard include/config/X86_CMPXCHG64) \
+ $(wildcard include/config/X86_P6_NOP) \
+ $(wildcard include/config/MATOM) \
+ $(wildcard include/config/PARAVIRT_XXL) \
+ arch/x86/include/asm/disabled-features.h \
+ $(wildcard include/config/X86_UMIP) \
+ $(wildcard include/config/X86_INTEL_MEMORY_PROTECTION_KEYS) \
+ $(wildcard include/config/X86_5LEVEL) \
+ $(wildcard include/config/PAGE_TABLE_ISOLATION) \
+ $(wildcard include/config/CPU_UNRET_ENTRY) \
+ $(wildcard include/config/CALL_DEPTH_TRACKING) \
+ $(wildcard include/config/ADDRESS_MASKING) \
+ $(wildcard include/config/INTEL_IOMMU_SVM) \
+ $(wildcard include/config/X86_SGX) \
+ $(wildcard include/config/XEN_PV) \
+ $(wildcard include/config/INTEL_TDX_GUEST) \
+ $(wildcard include/config/X86_USER_SHADOW_STACK) \
+ include/asm-generic/bitops/const_hweight.h \
+ include/asm-generic/bitops/instrumented-atomic.h \
+ include/linux/instrumented.h \
+ include/linux/kmsan-checks.h \
+ $(wildcard include/config/KMSAN) \
+ include/asm-generic/bitops/instrumented-non-atomic.h \
+ $(wildcard include/config/KCSAN_ASSUME_PLAIN_WRITES_ATOMIC) \
+ include/asm-generic/bitops/instrumented-lock.h \
+ include/asm-generic/bitops/le.h \
+ arch/x86/include/uapi/asm/byteorder.h \
+ include/linux/byteorder/little_endian.h \
+ include/uapi/linux/byteorder/little_endian.h \
+ include/linux/swab.h \
+ include/uapi/linux/swab.h \
+ arch/x86/include/uapi/asm/swab.h \
+ include/linux/byteorder/generic.h \
+ include/asm-generic/bitops/ext2-atomic-setbit.h \
+ include/linux/hex.h \
+ include/linux/kstrtox.h \
+ include/linux/log2.h \
+ $(wildcard include/config/ARCH_HAS_ILOG2_U32) \
+ $(wildcard include/config/ARCH_HAS_ILOG2_U64) \
+ include/linux/math.h \
+ arch/x86/include/asm/div64.h \
+ include/asm-generic/div64.h \
+ include/linux/minmax.h \
+ include/linux/panic.h \
+ $(wildcard include/config/PANIC_TIMEOUT) \
+ include/linux/printk.h \
+ $(wildcard include/config/MESSAGE_LOGLEVEL_DEFAULT) \
+ $(wildcard include/config/CONSOLE_LOGLEVEL_DEFAULT) \
+ $(wildcard include/config/CONSOLE_LOGLEVEL_QUIET) \
+ $(wildcard include/config/EARLY_PRINTK) \
+ $(wildcard include/config/PRINTK) \
+ $(wildcard include/config/PRINTK_INDEX) \
+ $(wildcard include/config/DYNAMIC_DEBUG) \
+ $(wildcard include/config/DYNAMIC_DEBUG_CORE) \
+ include/linux/init.h \
+ $(wildcard include/config/HAVE_ARCH_PREL32_RELOCATIONS) \
+ $(wildcard include/config/STRICT_KERNEL_RWX) \
+ $(wildcard include/config/STRICT_MODULE_RWX) \
+ $(wildcard include/config/LTO_CLANG) \
+ include/linux/kern_levels.h \
+ include/linux/ratelimit_types.h \
+ include/uapi/linux/param.h \
+ arch/x86/include/generated/uapi/asm/param.h \
+ include/asm-generic/param.h \
+ $(wildcard include/config/HZ) \
+ include/uapi/asm-generic/param.h \
+ include/linux/spinlock_types_raw.h \
+ $(wildcard include/config/DEBUG_SPINLOCK) \
+ $(wildcard include/config/DEBUG_LOCK_ALLOC) \
+ arch/x86/include/asm/spinlock_types.h \
+ include/asm-generic/qspinlock_types.h \
+ $(wildcard include/config/NR_CPUS) \
+ include/asm-generic/qrwlock_types.h \
+ include/linux/lockdep_types.h \
+ $(wildcard include/config/PROVE_RAW_LOCK_NESTING) \
+ $(wildcard include/config/LOCKDEP) \
+ $(wildcard include/config/LOCK_STAT) \
+ include/linux/once_lite.h \
+ include/linux/dynamic_debug.h \
+ $(wildcard include/config/JUMP_LABEL) \
+ include/linux/jump_label.h \
+ $(wildcard include/config/HAVE_ARCH_JUMP_LABEL_RELATIVE) \
+ arch/x86/include/asm/jump_label.h \
+ $(wildcard include/config/HAVE_JUMP_LABEL_HACK) \
+ include/linux/sprintf.h \
+ include/linux/static_call_types.h \
+ $(wildcard include/config/HAVE_STATIC_CALL) \
+ $(wildcard include/config/HAVE_STATIC_CALL_INLINE) \
+ include/linux/instruction_pointer.h \
+ include/linux/slab.h \
+ $(wildcard include/config/SLUB_DEBUG) \
+ $(wildcard include/config/DEBUG_OBJECTS) \
+ $(wildcard include/config/SLUB_TINY) \
+ $(wildcard include/config/FAILSLAB) \
+ $(wildcard include/config/MEMCG_KMEM) \
+ $(wildcard include/config/KFENCE) \
+ $(wildcard include/config/RANDOM_KMALLOC_CACHES) \
+ $(wildcard include/config/ZONE_DMA) \
+ include/linux/cache.h \
+ $(wildcard include/config/ARCH_HAS_CACHE_LINE_SIZE) \
+ arch/x86/include/asm/cache.h \
+ $(wildcard include/config/X86_L1_CACHE_SHIFT) \
+ $(wildcard include/config/X86_INTERNODE_CACHE_SHIFT) \
+ $(wildcard include/config/X86_VSMP) \
+ include/linux/gfp.h \
+ $(wildcard include/config/HIGHMEM) \
+ $(wildcard include/config/ZONE_DMA32) \
+ $(wildcard include/config/ZONE_DEVICE) \
+ $(wildcard include/config/NUMA) \
+ $(wildcard include/config/COMPACTION) \
+ $(wildcard include/config/CONTIG_ALLOC) \
+ include/linux/gfp_types.h \
+ $(wildcard include/config/KASAN_HW_TAGS) \
+ include/linux/mmzone.h \
+ $(wildcard include/config/ARCH_FORCE_MAX_ORDER) \
+ $(wildcard include/config/CMA) \
+ $(wildcard include/config/MEMORY_ISOLATION) \
+ $(wildcard include/config/ZSMALLOC) \
+ $(wildcard include/config/UNACCEPTED_MEMORY) \
+ $(wildcard include/config/SWAP) \
+ $(wildcard include/config/NUMA_BALANCING) \
+ $(wildcard include/config/TRANSPARENT_HUGEPAGE) \
+ $(wildcard include/config/LRU_GEN) \
+ $(wildcard include/config/LRU_GEN_STATS) \
+ $(wildcard include/config/LRU_GEN_WALKS_MMU) \
+ $(wildcard include/config/MEMCG) \
+ $(wildcard include/config/SPARSEMEM) \
+ $(wildcard include/config/MEMORY_HOTPLUG) \
+ $(wildcard include/config/MEMORY_FAILURE) \
+ $(wildcard include/config/FLATMEM) \
+ $(wildcard include/config/PAGE_EXTENSION) \
+ $(wildcard include/config/DEFERRED_STRUCT_PAGE_INIT) \
+ $(wildcard include/config/HAVE_MEMORYLESS_NODES) \
+ $(wildcard include/config/SPARSEMEM_VMEMMAP) \
+ $(wildcard include/config/SPARSEMEM_EXTREME) \
+ $(wildcard include/config/HAVE_ARCH_PFN_VALID) \
+ include/linux/spinlock.h \
+ $(wildcard include/config/PREEMPTION) \
+ $(wildcard include/config/PREEMPT_RT) \
+ include/linux/preempt.h \
+ $(wildcard include/config/PREEMPT_COUNT) \
+ $(wildcard include/config/DEBUG_PREEMPT) \
+ $(wildcard include/config/TRACE_PREEMPT_TOGGLE) \
+ $(wildcard include/config/PREEMPT_NOTIFIERS) \
+ $(wildcard include/config/PREEMPT_NONE) \
+ $(wildcard include/config/PREEMPT_VOLUNTARY) \
+ $(wildcard include/config/PREEMPT) \
+ include/linux/cleanup.h \
+ arch/x86/include/asm/preempt.h \
+ arch/x86/include/asm/percpu.h \
+ $(wildcard include/config/X86_64_SMP) \
+ include/asm-generic/percpu.h \
+ $(wildcard include/config/HAVE_SETUP_PER_CPU_AREA) \
+ include/linux/threads.h \
+ $(wildcard include/config/BASE_SMALL) \
+ include/linux/percpu-defs.h \
+ $(wildcard include/config/DEBUG_FORCE_WEAK_PER_CPU) \
+ $(wildcard include/config/AMD_MEM_ENCRYPT) \
+ arch/x86/include/asm/current.h \
+ include/linux/irqflags.h \
+ $(wildcard include/config/TRACE_IRQFLAGS) \
+ $(wildcard include/config/IRQSOFF_TRACER) \
+ $(wildcard include/config/PREEMPT_TRACER) \
+ $(wildcard include/config/DEBUG_IRQFLAGS) \
+ $(wildcard include/config/TRACE_IRQFLAGS_SUPPORT) \
+ include/linux/irqflags_types.h \
+ arch/x86/include/asm/irqflags.h \
+ $(wildcard include/config/DEBUG_ENTRY) \
+ arch/x86/include/asm/processor-flags.h \
+ $(wildcard include/config/VM86) \
+ arch/x86/include/uapi/asm/processor-flags.h \
+ include/linux/mem_encrypt.h \
+ $(wildcard include/config/ARCH_HAS_MEM_ENCRYPT) \
+ arch/x86/include/asm/mem_encrypt.h \
+ $(wildcard include/config/X86_MEM_ENCRYPT) \
+ include/linux/cc_platform.h \
+ $(wildcard include/config/ARCH_HAS_CC_PLATFORM) \
+ arch/x86/include/asm/nospec-branch.h \
+ $(wildcard include/config/CALL_THUNKS_DEBUG) \
+ $(wildcard include/config/NOINSTR_VALIDATION) \
+ $(wildcard include/config/CPU_SRSO) \
+ $(wildcard include/config/CPU_IBPB_ENTRY) \
+ include/linux/static_key.h \
+ include/linux/objtool.h \
+ $(wildcard include/config/FRAME_POINTER) \
+ include/linux/objtool_types.h \
+ arch/x86/include/asm/msr-index.h \
+ arch/x86/include/asm/unwind_hints.h \
+ arch/x86/include/asm/orc_types.h \
+ arch/x86/include/asm/asm-offsets.h \
+ include/generated/asm-offsets.h \
+ arch/x86/include/asm/GEN-for-each-reg.h \
+ arch/x86/include/asm/segment.h \
+ arch/x86/include/asm/paravirt.h \
+ $(wildcard include/config/PARAVIRT) \
+ $(wildcard include/config/PARAVIRT_SPINLOCKS) \
+ $(wildcard include/config/X86_IOPL_IOPERM) \
+ $(wildcard include/config/PGTABLE_LEVELS) \
+ arch/x86/include/asm/paravirt_types.h \
+ $(wildcard include/config/ZERO_CALL_USED_REGS) \
+ $(wildcard include/config/PARAVIRT_DEBUG) \
+ arch/x86/include/asm/desc_defs.h \
+ arch/x86/include/asm/pgtable_types.h \
+ $(wildcard include/config/MEM_SOFT_DIRTY) \
+ $(wildcard include/config/HAVE_ARCH_USERFAULTFD_WP) \
+ $(wildcard include/config/PROC_FS) \
+ arch/x86/include/asm/page_types.h \
+ $(wildcard include/config/PHYSICAL_START) \
+ $(wildcard include/config/PHYSICAL_ALIGN) \
+ $(wildcard include/config/DYNAMIC_PHYSICAL_MASK) \
+ arch/x86/include/asm/page_64_types.h \
+ $(wildcard include/config/KASAN) \
+ $(wildcard include/config/DYNAMIC_MEMORY_LAYOUT) \
+ $(wildcard include/config/RANDOMIZE_BASE) \
+ arch/x86/include/asm/kaslr.h \
+ $(wildcard include/config/RANDOMIZE_MEMORY) \
+ arch/x86/include/asm/pgtable_64_types.h \
+ $(wildcard include/config/DEBUG_KMAP_LOCAL_FORCE_MAP) \
+ arch/x86/include/asm/sparsemem.h \
+ $(wildcard include/config/NUMA_KEEP_MEMINFO) \
+ include/linux/bug.h \
+ $(wildcard include/config/GENERIC_BUG) \
+ $(wildcard include/config/BUG_ON_DATA_CORRUPTION) \
+ arch/x86/include/asm/bug.h \
+ $(wildcard include/config/DEBUG_BUGVERBOSE) \
+ include/linux/instrumentation.h \
+ include/asm-generic/bug.h \
+ $(wildcard include/config/BUG) \
+ $(wildcard include/config/GENERIC_BUG_RELATIVE_POINTERS) \
+ include/linux/cpumask.h \
+ $(wildcard include/config/FORCE_NR_CPUS) \
+ $(wildcard include/config/HOTPLUG_CPU) \
+ $(wildcard include/config/DEBUG_PER_CPU_MAPS) \
+ $(wildcard include/config/CPUMASK_OFFSTACK) \
+ include/linux/bitmap.h \
+ include/linux/errno.h \
+ include/uapi/linux/errno.h \
+ arch/x86/include/generated/uapi/asm/errno.h \
+ include/uapi/asm-generic/errno.h \
+ include/uapi/asm-generic/errno-base.h \
+ include/linux/find.h \
+ include/linux/string.h \
+ $(wildcard include/config/BINARY_PRINTF) \
+ $(wildcard include/config/FORTIFY_SOURCE) \
+ include/linux/err.h \
+ include/linux/overflow.h \
+ include/uapi/linux/string.h \
+ arch/x86/include/asm/string.h \
+ arch/x86/include/asm/string_64.h \
+ $(wildcard include/config/ARCH_HAS_UACCESS_FLUSHCACHE) \
+ include/linux/fortify-string.h \
+ $(wildcard include/config/CC_HAS_KASAN_MEMINTRINSIC_PREFIX) \
+ $(wildcard include/config/GENERIC_ENTRY) \
+ include/linux/bitmap-str.h \
+ include/linux/atomic.h \
+ arch/x86/include/asm/atomic.h \
+ arch/x86/include/asm/cmpxchg.h \
+ arch/x86/include/asm/cmpxchg_64.h \
+ arch/x86/include/asm/atomic64_64.h \
+ include/linux/atomic/atomic-arch-fallback.h \
+ $(wildcard include/config/GENERIC_ATOMIC64) \
+ include/linux/atomic/atomic-long.h \
+ include/linux/atomic/atomic-instrumented.h \
+ include/linux/numa.h \
+ $(wildcard include/config/NODES_SHIFT) \
+ $(wildcard include/config/HAVE_ARCH_NODE_DEV_GROUP) \
+ arch/x86/include/asm/frame.h \
+ include/linux/thread_info.h \
+ $(wildcard include/config/THREAD_INFO_IN_TASK) \
+ $(wildcard include/config/HAVE_ARCH_WITHIN_STACK_FRAMES) \
+ $(wildcard include/config/HARDENED_USERCOPY) \
+ $(wildcard include/config/SH) \
+ include/linux/restart_block.h \
+ arch/x86/include/asm/thread_info.h \
+ $(wildcard include/config/COMPAT) \
+ $(wildcard include/config/IA32_EMULATION) \
+ arch/x86/include/asm/page.h \
+ arch/x86/include/asm/page_64.h \
+ $(wildcard include/config/DEBUG_VIRTUAL) \
+ $(wildcard include/config/X86_VSYSCALL_EMULATION) \
+ include/linux/range.h \
+ include/asm-generic/memory_model.h \
+ include/linux/pfn.h \
+ include/asm-generic/getorder.h \
+ arch/x86/include/asm/cpufeature.h \
+ arch/x86/include/asm/processor.h \
+ $(wildcard include/config/X86_VMX_FEATURE_NAMES) \
+ $(wildcard include/config/STACKPROTECTOR) \
+ $(wildcard include/config/X86_DEBUGCTLMSR) \
+ $(wildcard include/config/CPU_SUP_AMD) \
+ $(wildcard include/config/XEN) \
+ arch/x86/include/asm/math_emu.h \
+ arch/x86/include/asm/ptrace.h \
+ arch/x86/include/uapi/asm/ptrace.h \
+ arch/x86/include/uapi/asm/ptrace-abi.h \
+ arch/x86/include/asm/proto.h \
+ arch/x86/include/uapi/asm/ldt.h \
+ arch/x86/include/uapi/asm/sigcontext.h \
+ arch/x86/include/asm/cpuid.h \
+ arch/x86/include/asm/msr.h \
+ $(wildcard include/config/TRACEPOINTS) \
+ arch/x86/include/asm/cpumask.h \
+ arch/x86/include/uapi/asm/msr.h \
+ include/uapi/linux/ioctl.h \
+ arch/x86/include/generated/uapi/asm/ioctl.h \
+ include/asm-generic/ioctl.h \
+ include/uapi/asm-generic/ioctl.h \
+ arch/x86/include/asm/shared/msr.h \
+ include/linux/tracepoint-defs.h \
+ arch/x86/include/asm/special_insns.h \
+ arch/x86/include/asm/fpu/types.h \
+ arch/x86/include/asm/vmxfeatures.h \
+ arch/x86/include/asm/vdso/processor.h \
+ arch/x86/include/asm/shstk.h \
+ include/linux/personality.h \
+ include/uapi/linux/personality.h \
+ include/linux/math64.h \
+ $(wildcard include/config/ARCH_SUPPORTS_INT128) \
+ include/vdso/math64.h \
+ include/linux/bottom_half.h \
+ include/linux/lockdep.h \
+ $(wildcard include/config/DEBUG_LOCKING_API_SELFTESTS) \
+ include/linux/smp.h \
+ $(wildcard include/config/UP_LATE_INIT) \
+ include/linux/list.h \
+ $(wildcard include/config/LIST_HARDENED) \
+ $(wildcard include/config/DEBUG_LIST) \
+ include/linux/poison.h \
+ $(wildcard include/config/ILLEGAL_POINTER_VALUE) \
+ include/linux/smp_types.h \
+ include/linux/llist.h \
+ $(wildcard include/config/ARCH_HAVE_NMI_SAFE_CMPXCHG) \
+ arch/x86/include/asm/smp.h \
+ $(wildcard include/config/DEBUG_NMI_SELFTEST) \
+ arch/x86/include/generated/asm/mmiowb.h \
+ include/asm-generic/mmiowb.h \
+ $(wildcard include/config/MMIOWB) \
+ include/linux/spinlock_types.h \
+ include/linux/rwlock_types.h \
+ arch/x86/include/asm/spinlock.h \
+ arch/x86/include/asm/qspinlock.h \
+ include/asm-generic/qspinlock.h \
+ arch/x86/include/asm/qrwlock.h \
+ include/asm-generic/qrwlock.h \
+ include/linux/rwlock.h \
+ include/linux/spinlock_api_smp.h \
+ $(wildcard include/config/INLINE_SPIN_LOCK) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_BH) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_SPIN_TRYLOCK) \
+ $(wildcard include/config/INLINE_SPIN_TRYLOCK_BH) \
+ $(wildcard include/config/UNINLINE_SPIN_UNLOCK) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQRESTORE) \
+ $(wildcard include/config/GENERIC_LOCKBREAK) \
+ include/linux/rwlock_api_smp.h \
+ $(wildcard include/config/INLINE_READ_LOCK) \
+ $(wildcard include/config/INLINE_WRITE_LOCK) \
+ $(wildcard include/config/INLINE_READ_LOCK_BH) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_BH) \
+ $(wildcard include/config/INLINE_READ_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_READ_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_READ_TRYLOCK) \
+ $(wildcard include/config/INLINE_WRITE_TRYLOCK) \
+ $(wildcard include/config/INLINE_READ_UNLOCK) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_IRQRESTORE) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQRESTORE) \
+ include/linux/list_nulls.h \
+ include/linux/wait.h \
+ include/linux/seqlock.h \
+ include/linux/mutex.h \
+ $(wildcard include/config/DEBUG_MUTEXES) \
+ include/linux/osq_lock.h \
+ include/linux/debug_locks.h \
+ include/linux/mutex_types.h \
+ $(wildcard include/config/MUTEX_SPIN_ON_OWNER) \
+ include/linux/seqlock_types.h \
+ include/linux/nodemask.h \
+ include/linux/nodemask_types.h \
+ include/linux/random.h \
+ $(wildcard include/config/VMGENID) \
+ include/uapi/linux/random.h \
+ include/linux/irqnr.h \
+ include/uapi/linux/irqnr.h \
+ include/linux/prandom.h \
+ include/linux/once.h \
+ include/linux/pageblock-flags.h \
+ $(wildcard include/config/HUGETLB_PAGE) \
+ $(wildcard include/config/HUGETLB_PAGE_SIZE_VARIABLE) \
+ include/linux/page-flags-layout.h \
+ include/generated/bounds.h \
+ include/linux/mm_types.h \
+ $(wildcard include/config/HAVE_ALIGNED_STRUCT_PAGE) \
+ $(wildcard include/config/USERFAULTFD) \
+ $(wildcard include/config/ANON_VMA_NAME) \
+ $(wildcard include/config/PER_VMA_LOCK) \
+ $(wildcard include/config/SCHED_MM_CID) \
+ $(wildcard include/config/HAVE_ARCH_COMPAT_MMAP_BASES) \
+ $(wildcard include/config/MEMBARRIER) \
+ $(wildcard include/config/AIO) \
+ $(wildcard include/config/MMU_NOTIFIER) \
+ $(wildcard include/config/ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH) \
+ $(wildcard include/config/IOMMU_MM_DATA) \
+ $(wildcard include/config/KSM) \
+ include/linux/mm_types_task.h \
+ $(wildcard include/config/SPLIT_PTLOCK_CPUS) \
+ $(wildcard include/config/ARCH_ENABLE_SPLIT_PMD_PTLOCK) \
+ arch/x86/include/asm/tlbbatch.h \
+ include/linux/auxvec.h \
+ include/uapi/linux/auxvec.h \
+ arch/x86/include/uapi/asm/auxvec.h \
+ include/linux/kref.h \
+ include/linux/refcount.h \
+ include/linux/refcount_types.h \
+ include/linux/rbtree.h \
+ include/linux/rbtree_types.h \
+ include/linux/rcupdate.h \
+ $(wildcard include/config/PREEMPT_RCU) \
+ $(wildcard include/config/TINY_RCU) \
+ $(wildcard include/config/RCU_STRICT_GRACE_PERIOD) \
+ $(wildcard include/config/RCU_LAZY) \
+ $(wildcard include/config/TASKS_RCU_GENERIC) \
+ $(wildcard include/config/RCU_STALL_COMMON) \
+ $(wildcard include/config/NO_HZ_FULL) \
+ $(wildcard include/config/KVM_XFER_TO_GUEST_WORK) \
+ $(wildcard include/config/RCU_NOCB_CPU) \
+ $(wildcard include/config/TASKS_RCU) \
+ $(wildcard include/config/TASKS_TRACE_RCU) \
+ $(wildcard include/config/TASKS_RUDE_RCU) \
+ $(wildcard include/config/TREE_RCU) \
+ $(wildcard include/config/DEBUG_OBJECTS_RCU_HEAD) \
+ $(wildcard include/config/PROVE_RCU) \
+ $(wildcard include/config/ARCH_WEAK_RELEASE_ACQUIRE) \
+ include/linux/context_tracking_irq.h \
+ $(wildcard include/config/CONTEXT_TRACKING_IDLE) \
+ include/linux/rcutree.h \
+ include/linux/maple_tree.h \
+ $(wildcard include/config/MAPLE_RCU_DISABLED) \
+ $(wildcard include/config/DEBUG_MAPLE_TREE) \
+ include/linux/rwsem.h \
+ $(wildcard include/config/RWSEM_SPIN_ON_OWNER) \
+ $(wildcard include/config/DEBUG_RWSEMS) \
+ include/linux/completion.h \
+ include/linux/swait.h \
+ include/linux/uprobes.h \
+ $(wildcard include/config/UPROBES) \
+ arch/x86/include/asm/uprobes.h \
+ include/linux/notifier.h \
+ $(wildcard include/config/TREE_SRCU) \
+ include/linux/srcu.h \
+ $(wildcard include/config/TINY_SRCU) \
+ $(wildcard include/config/NEED_SRCU_NMI_SAFE) \
+ include/linux/workqueue.h \
+ $(wildcard include/config/DEBUG_OBJECTS_WORK) \
+ $(wildcard include/config/FREEZER) \
+ $(wildcard include/config/SYSFS) \
+ $(wildcard include/config/WQ_WATCHDOG) \
+ include/linux/timer.h \
+ $(wildcard include/config/DEBUG_OBJECTS_TIMERS) \
+ include/linux/ktime.h \
+ include/linux/jiffies.h \
+ include/linux/time.h \
+ $(wildcard include/config/POSIX_TIMERS) \
+ include/linux/time64.h \
+ include/vdso/time64.h \
+ include/uapi/linux/time.h \
+ include/uapi/linux/time_types.h \
+ include/linux/time32.h \
+ include/linux/timex.h \
+ include/uapi/linux/timex.h \
+ arch/x86/include/asm/timex.h \
+ $(wildcard include/config/X86_TSC) \
+ arch/x86/include/asm/tsc.h \
+ include/vdso/time32.h \
+ include/vdso/time.h \
+ include/vdso/jiffies.h \
+ include/generated/timeconst.h \
+ include/vdso/ktime.h \
+ include/linux/timekeeping.h \
+ $(wildcard include/config/GENERIC_CMOS_UPDATE) \
+ include/linux/clocksource_ids.h \
+ include/linux/debugobjects.h \
+ $(wildcard include/config/DEBUG_OBJECTS_FREE) \
+ include/linux/timer_types.h \
+ include/linux/workqueue_types.h \
+ include/linux/rcu_segcblist.h \
+ include/linux/srcutree.h \
+ include/linux/rcu_node_tree.h \
+ $(wildcard include/config/RCU_FANOUT) \
+ $(wildcard include/config/RCU_FANOUT_LEAF) \
+ include/linux/percpu_counter.h \
+ include/linux/percpu.h \
+ $(wildcard include/config/MODULES) \
+ $(wildcard include/config/NEED_PER_CPU_PAGE_FIRST_CHUNK) \
+ include/linux/mmdebug.h \
+ $(wildcard include/config/DEBUG_VM) \
+ $(wildcard include/config/DEBUG_VM_IRQSOFF) \
+ $(wildcard include/config/DEBUG_VM_PGFLAGS) \
+ arch/x86/include/asm/mmu.h \
+ $(wildcard include/config/MODIFY_LDT_SYSCALL) \
+ include/linux/page-flags.h \
+ $(wildcard include/config/ARCH_USES_PG_UNCACHED) \
+ $(wildcard include/config/PAGE_IDLE_FLAG) \
+ $(wildcard include/config/ARCH_USES_PG_ARCH_X) \
+ $(wildcard include/config/HUGETLB_PAGE_OPTIMIZE_VMEMMAP) \
+ include/linux/local_lock.h \
+ include/linux/local_lock_internal.h \
+ include/linux/zswap.h \
+ $(wildcard include/config/ZSWAP) \
+ include/linux/memory_hotplug.h \
+ $(wildcard include/config/HAVE_ARCH_NODEDATA_EXTENSION) \
+ $(wildcard include/config/ARCH_HAS_ADD_PAGES) \
+ $(wildcard include/config/MEMORY_HOTREMOVE) \
+ arch/x86/include/asm/mmzone.h \
+ arch/x86/include/asm/mmzone_64.h \
+ include/linux/topology.h \
+ $(wildcard include/config/USE_PERCPU_NUMA_NODE_ID) \
+ $(wildcard include/config/SCHED_SMT) \
+ include/linux/arch_topology.h \
+ $(wildcard include/config/ACPI_CPPC_LIB) \
+ $(wildcard include/config/GENERIC_ARCH_TOPOLOGY) \
+ arch/x86/include/asm/topology.h \
+ $(wildcard include/config/SCHED_MC_PRIO) \
+ arch/x86/include/asm/mpspec.h \
+ $(wildcard include/config/EISA) \
+ $(wildcard include/config/X86_LOCAL_APIC) \
+ $(wildcard include/config/X86_MPPARSE) \
+ arch/x86/include/asm/mpspec_def.h \
+ arch/x86/include/asm/x86_init.h \
+ arch/x86/include/uapi/asm/bootparam.h \
+ include/linux/screen_info.h \
+ $(wildcard include/config/PCI) \
+ include/uapi/linux/screen_info.h \
+ include/linux/apm_bios.h \
+ include/uapi/linux/apm_bios.h \
+ include/linux/edd.h \
+ include/uapi/linux/edd.h \
+ arch/x86/include/asm/ist.h \
+ arch/x86/include/uapi/asm/ist.h \
+ include/video/edid.h \
+ $(wildcard include/config/X86) \
+ include/uapi/video/edid.h \
+ arch/x86/include/asm/apicdef.h \
+ include/asm-generic/topology.h \
+ include/linux/cpu_smt.h \
+ $(wildcard include/config/HOTPLUG_SMT) \
+ include/linux/percpu-refcount.h \
+ include/linux/hash.h \
+ $(wildcard include/config/HAVE_ARCH_HASH) \
+ include/linux/kasan.h \
+ $(wildcard include/config/KASAN_STACK) \
+ $(wildcard include/config/KASAN_VMALLOC) \
+ include/linux/kasan-enabled.h \
+ include/linux/kasan-tags.h \
+ /home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/../header/module_info.h \
+ include/linux/module.h \
+ $(wildcard include/config/MODULES_TREE_LOOKUP) \
+ $(wildcard include/config/LIVEPATCH) \
+ $(wildcard include/config/STACKTRACE_BUILD_ID) \
+ $(wildcard include/config/ARCH_USES_CFI_TRAPS) \
+ $(wildcard include/config/MODULE_SIG) \
+ $(wildcard include/config/KALLSYMS) \
+ $(wildcard include/config/BPF_EVENTS) \
+ $(wildcard include/config/DEBUG_INFO_BTF_MODULES) \
+ $(wildcard include/config/EVENT_TRACING) \
+ $(wildcard include/config/KUNIT) \
+ $(wildcard include/config/MODULE_UNLOAD) \
+ $(wildcard include/config/CONSTRUCTORS) \
+ $(wildcard include/config/FUNCTION_ERROR_INJECTION) \
+ include/linux/stat.h \
+ arch/x86/include/uapi/asm/stat.h \
+ include/uapi/linux/stat.h \
+ include/linux/uidgid.h \
+ $(wildcard include/config/MULTIUSER) \
+ $(wildcard include/config/USER_NS) \
+ include/linux/uidgid_types.h \
+ include/linux/highuid.h \
+ include/linux/buildid.h \
+ $(wildcard include/config/CRASH_CORE) \
+ include/linux/kmod.h \
+ include/linux/umh.h \
+ include/linux/sysctl.h \
+ $(wildcard include/config/SYSCTL) \
+ include/uapi/linux/sysctl.h \
+ include/linux/elf.h \
+ $(wildcard include/config/ARCH_USE_GNU_PROPERTY) \
+ $(wildcard include/config/ARCH_HAVE_ELF_PROT) \
+ arch/x86/include/asm/elf.h \
+ $(wildcard include/config/X86_X32_ABI) \
+ arch/x86/include/asm/ia32.h \
+ include/linux/compat.h \
+ $(wildcard include/config/ARCH_HAS_SYSCALL_WRAPPER) \
+ $(wildcard include/config/COMPAT_OLD_SIGACTION) \
+ $(wildcard include/config/ODD_RT_SIGACTION) \
+ include/linux/sem.h \
+ $(wildcard include/config/SYSVIPC) \
+ include/uapi/linux/sem.h \
+ include/linux/ipc.h \
+ include/linux/rhashtable-types.h \
+ include/uapi/linux/ipc.h \
+ arch/x86/include/generated/uapi/asm/ipcbuf.h \
+ include/uapi/asm-generic/ipcbuf.h \
+ arch/x86/include/uapi/asm/sembuf.h \
+ include/linux/sem_types.h \
+ include/linux/socket.h \
+ arch/x86/include/generated/uapi/asm/socket.h \
+ include/uapi/asm-generic/socket.h \
+ arch/x86/include/generated/uapi/asm/sockios.h \
+ include/uapi/asm-generic/sockios.h \
+ include/uapi/linux/sockios.h \
+ include/linux/uio.h \
+ $(wildcard include/config/ARCH_HAS_COPY_MC) \
+ include/uapi/linux/uio.h \
+ include/uapi/linux/socket.h \
+ include/uapi/linux/if.h \
+ include/uapi/linux/libc-compat.h \
+ include/uapi/linux/hdlc/ioctl.h \
+ include/linux/fs.h \
+ $(wildcard include/config/READ_ONLY_THP_FOR_FS) \
+ $(wildcard include/config/FS_POSIX_ACL) \
+ $(wildcard include/config/SECURITY) \
+ $(wildcard include/config/CGROUP_WRITEBACK) \
+ $(wildcard include/config/IMA) \
+ $(wildcard include/config/FILE_LOCKING) \
+ $(wildcard include/config/FSNOTIFY) \
+ $(wildcard include/config/FS_ENCRYPTION) \
+ $(wildcard include/config/FS_VERITY) \
+ $(wildcard include/config/EPOLL) \
+ $(wildcard include/config/UNICODE) \
+ $(wildcard include/config/QUOTA) \
+ $(wildcard include/config/FS_DAX) \
+ $(wildcard include/config/BLOCK) \
+ include/linux/wait_bit.h \
+ include/linux/kdev_t.h \
+ include/uapi/linux/kdev_t.h \
+ include/linux/dcache.h \
+ include/linux/rculist.h \
+ $(wildcard include/config/PROVE_RCU_LIST) \
+ include/linux/rculist_bl.h \
+ include/linux/list_bl.h \
+ include/linux/bit_spinlock.h \
+ include/linux/lockref.h \
+ $(wildcard include/config/ARCH_USE_CMPXCHG_LOCKREF) \
+ include/linux/stringhash.h \
+ $(wildcard include/config/DCACHE_WORD_ACCESS) \
+ include/linux/path.h \
+ include/linux/list_lru.h \
+ include/linux/shrinker.h \
+ $(wildcard include/config/SHRINKER_DEBUG) \
+ include/linux/xarray.h \
+ $(wildcard include/config/XARRAY_MULTI) \
+ include/linux/sched/mm.h \
+ $(wildcard include/config/MMU_LAZY_TLB_REFCOUNT) \
+ $(wildcard include/config/ARCH_HAS_MEMBARRIER_CALLBACKS) \
+ include/linux/sched.h \
+ $(wildcard include/config/VIRT_CPU_ACCOUNTING_NATIVE) \
+ $(wildcard include/config/SCHED_INFO) \
+ $(wildcard include/config/SCHEDSTATS) \
+ $(wildcard include/config/SCHED_CORE) \
+ $(wildcard include/config/FAIR_GROUP_SCHED) \
+ $(wildcard include/config/RT_GROUP_SCHED) \
+ $(wildcard include/config/RT_MUTEXES) \
+ $(wildcard include/config/UCLAMP_TASK) \
+ $(wildcard include/config/UCLAMP_BUCKETS_COUNT) \
+ $(wildcard include/config/KMAP_LOCAL) \
+ $(wildcard include/config/CGROUP_SCHED) \
+ $(wildcard include/config/BLK_DEV_IO_TRACE) \
+ $(wildcard include/config/COMPAT_BRK) \
+ $(wildcard include/config/CGROUPS) \
+ $(wildcard include/config/BLK_CGROUP) \
+ $(wildcard include/config/PSI) \
+ $(wildcard include/config/PAGE_OWNER) \
+ $(wildcard include/config/EVENTFD) \
+ $(wildcard include/config/ARCH_HAS_CPU_PASID) \
+ $(wildcard include/config/CPU_SUP_INTEL) \
+ $(wildcard include/config/TASK_DELAY_ACCT) \
+ $(wildcard include/config/ARCH_HAS_SCALED_CPUTIME) \
+ $(wildcard include/config/VIRT_CPU_ACCOUNTING_GEN) \
+ $(wildcard include/config/POSIX_CPUTIMERS) \
+ $(wildcard include/config/POSIX_CPU_TIMERS_TASK_WORK) \
+ $(wildcard include/config/KEYS) \
+ $(wildcard include/config/DETECT_HUNG_TASK) \
+ $(wildcard include/config/IO_URING) \
+ $(wildcard include/config/AUDIT) \
+ $(wildcard include/config/AUDITSYSCALL) \
+ $(wildcard include/config/UBSAN) \
+ $(wildcard include/config/UBSAN_TRAP) \
+ $(wildcard include/config/TASK_XACCT) \
+ $(wildcard include/config/CPUSETS) \
+ $(wildcard include/config/X86_CPU_RESCTRL) \
+ $(wildcard include/config/FUTEX) \
+ $(wildcard include/config/PERF_EVENTS) \
+ $(wildcard include/config/RSEQ) \
+ $(wildcard include/config/FAULT_INJECTION) \
+ $(wildcard include/config/LATENCYTOP) \
+ $(wildcard include/config/FUNCTION_GRAPH_TRACER) \
+ $(wildcard include/config/BCACHE) \
+ $(wildcard include/config/VMAP_STACK) \
+ $(wildcard include/config/BPF_SYSCALL) \
+ $(wildcard include/config/GCC_PLUGIN_STACKLEAK) \
+ $(wildcard include/config/X86_MCE) \
+ $(wildcard include/config/KRETPROBES) \
+ $(wildcard include/config/RETHOOK) \
+ $(wildcard include/config/ARCH_HAS_PARANOID_L1D_FLUSH) \
+ $(wildcard include/config/RV) \
+ $(wildcard include/config/USER_EVENTS) \
+ include/uapi/linux/sched.h \
+ include/linux/pid_types.h \
+ include/linux/shm.h \
+ arch/x86/include/asm/shmparam.h \
+ include/linux/kmsan_types.h \
+ include/linux/plist_types.h \
+ include/linux/hrtimer_types.h \
+ include/linux/timerqueue_types.h \
+ include/linux/seccomp_types.h \
+ $(wildcard include/config/SECCOMP) \
+ include/linux/resource.h \
+ include/uapi/linux/resource.h \
+ arch/x86/include/generated/uapi/asm/resource.h \
+ include/asm-generic/resource.h \
+ include/uapi/asm-generic/resource.h \
+ include/linux/latencytop.h \
+ include/linux/sched/prio.h \
+ include/linux/sched/types.h \
+ include/linux/signal_types.h \
+ $(wildcard include/config/OLD_SIGACTION) \
+ include/uapi/linux/signal.h \
+ arch/x86/include/asm/signal.h \
+ arch/x86/include/uapi/asm/signal.h \
+ include/uapi/asm-generic/signal-defs.h \
+ arch/x86/include/uapi/asm/siginfo.h \
+ include/uapi/asm-generic/siginfo.h \
+ include/linux/syscall_user_dispatch_types.h \
+ include/linux/task_io_accounting.h \
+ $(wildcard include/config/TASK_IO_ACCOUNTING) \
+ include/linux/posix-timers_types.h \
+ include/uapi/linux/rseq.h \
+ include/linux/kcsan.h \
+ include/linux/rv.h \
+ $(wildcard include/config/RV_REACTORS) \
+ include/linux/livepatch_sched.h \
+ arch/x86/include/generated/asm/kmap_size.h \
+ include/asm-generic/kmap_size.h \
+ $(wildcard include/config/DEBUG_KMAP_LOCAL) \
+ include/linux/sync_core.h \
+ $(wildcard include/config/ARCH_HAS_SYNC_CORE_BEFORE_USERMODE) \
+ arch/x86/include/asm/sync_core.h \
+ include/linux/radix-tree.h \
+ include/linux/pid.h \
+ include/linux/capability.h \
+ include/uapi/linux/capability.h \
+ include/linux/semaphore.h \
+ include/linux/fcntl.h \
+ $(wildcard include/config/ARCH_32BIT_OFF_T) \
+ include/uapi/linux/fcntl.h \
+ arch/x86/include/generated/uapi/asm/fcntl.h \
+ include/uapi/asm-generic/fcntl.h \
+ include/uapi/linux/openat2.h \
+ include/linux/migrate_mode.h \
+ include/linux/percpu-rwsem.h \
+ include/linux/rcuwait.h \
+ include/linux/sched/signal.h \
+ $(wildcard include/config/SCHED_AUTOGROUP) \
+ $(wildcard include/config/BSD_PROCESS_ACCT) \
+ $(wildcard include/config/TASKSTATS) \
+ $(wildcard include/config/STACK_GROWSUP) \
+ include/linux/signal.h \
+ $(wildcard include/config/DYNAMIC_SIGFRAME) \
+ include/linux/sched/jobctl.h \
+ include/linux/sched/task.h \
+ $(wildcard include/config/HAVE_EXIT_THREAD) \
+ $(wildcard include/config/ARCH_WANTS_DYNAMIC_TASK_STRUCT) \
+ $(wildcard include/config/HAVE_ARCH_THREAD_STRUCT_WHITELIST) \
+ include/linux/uaccess.h \
+ $(wildcard include/config/ARCH_HAS_SUBPAGE_FAULTS) \
+ include/linux/fault-inject-usercopy.h \
+ $(wildcard include/config/FAULT_INJECTION_USERCOPY) \
+ arch/x86/include/asm/uaccess.h \
+ $(wildcard include/config/CC_HAS_ASM_GOTO_OUTPUT) \
+ $(wildcard include/config/CC_HAS_ASM_GOTO_TIED_OUTPUT) \
+ $(wildcard include/config/X86_INTEL_USERCOPY) \
+ include/linux/mmap_lock.h \
+ arch/x86/include/asm/smap.h \
+ arch/x86/include/asm/extable.h \
+ $(wildcard include/config/BPF_JIT) \
+ arch/x86/include/asm/tlbflush.h \
+ include/linux/mmu_notifier.h \
+ include/linux/interval_tree.h \
+ arch/x86/include/asm/invpcid.h \
+ arch/x86/include/asm/pti.h \
+ arch/x86/include/asm/pgtable.h \
+ $(wildcard include/config/DEBUG_WX) \
+ $(wildcard include/config/HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) \
+ $(wildcard include/config/ARCH_HAS_PTE_DEVMAP) \
+ $(wildcard include/config/HAVE_ARCH_SOFT_DIRTY) \
+ $(wildcard include/config/ARCH_ENABLE_THP_MIGRATION) \
+ $(wildcard include/config/PAGE_TABLE_CHECK) \
+ arch/x86/include/asm/pkru.h \
+ arch/x86/include/asm/fpu/api.h \
+ $(wildcard include/config/X86_DEBUG_FPU) \
+ arch/x86/include/asm/coco.h \
+ include/asm-generic/pgtable_uffd.h \
+ include/linux/page_table_check.h \
+ arch/x86/include/asm/pgtable_64.h \
+ arch/x86/include/asm/fixmap.h \
+ $(wildcard include/config/PROVIDE_OHCI1394_DMA_INIT) \
+ $(wildcard include/config/X86_IO_APIC) \
+ $(wildcard include/config/PCI_MMCONFIG) \
+ $(wildcard include/config/ACPI_APEI_GHES) \
+ $(wildcard include/config/INTEL_TXT) \
+ arch/x86/include/uapi/asm/vsyscall.h \
+ include/asm-generic/fixmap.h \
+ arch/x86/include/asm/pgtable-invert.h \
+ arch/x86/include/asm/uaccess_64.h \
+ include/asm-generic/access_ok.h \
+ $(wildcard include/config/ALTERNATE_USER_ADDRESS_SPACE) \
+ include/linux/cred.h \
+ include/linux/key.h \
+ $(wildcard include/config/KEY_NOTIFICATIONS) \
+ $(wildcard include/config/NET) \
+ include/linux/assoc_array.h \
+ $(wildcard include/config/ASSOCIATIVE_ARRAY) \
+ include/linux/sched/user.h \
+ $(wildcard include/config/VFIO_PCI_ZDEV_KVM) \
+ $(wildcard include/config/IOMMUFD) \
+ $(wildcard include/config/WATCH_QUEUE) \
+ include/linux/ratelimit.h \
+ include/linux/posix-timers.h \
+ include/linux/alarmtimer.h \
+ $(wildcard include/config/RTC_CLASS) \
+ include/linux/hrtimer.h \
+ $(wildcard include/config/HIGH_RES_TIMERS) \
+ $(wildcard include/config/TIME_LOW_RES) \
+ $(wildcard include/config/TIMERFD) \
+ include/linux/hrtimer_defs.h \
+ include/linux/timerqueue.h \
+ include/linux/rcu_sync.h \
+ include/linux/delayed_call.h \
+ include/linux/uuid.h \
+ include/linux/errseq.h \
+ include/linux/ioprio.h \
+ include/linux/sched/rt.h \
+ include/linux/iocontext.h \
+ $(wildcard include/config/BLK_ICQ) \
+ include/uapi/linux/ioprio.h \
+ include/linux/fs_types.h \
+ include/linux/mount.h \
+ include/linux/mnt_idmapping.h \
+ include/uapi/linux/fs.h \
+ include/linux/quota.h \
+ $(wildcard include/config/QUOTA_NETLINK_INTERFACE) \
+ include/uapi/linux/dqblk_xfs.h \
+ include/linux/dqblk_v1.h \
+ include/linux/dqblk_v2.h \
+ include/linux/dqblk_qtree.h \
+ include/linux/projid.h \
+ include/uapi/linux/quota.h \
+ include/uapi/linux/aio_abi.h \
+ include/uapi/linux/unistd.h \
+ arch/x86/include/asm/unistd.h \
+ arch/x86/include/uapi/asm/unistd.h \
+ arch/x86/include/generated/uapi/asm/unistd_64.h \
+ arch/x86/include/generated/asm/unistd_64_x32.h \
+ arch/x86/include/generated/asm/unistd_32_ia32.h \
+ arch/x86/include/asm/compat.h \
+ include/linux/sched/task_stack.h \
+ $(wildcard include/config/DEBUG_STACK_USAGE) \
+ include/uapi/linux/magic.h \
+ arch/x86/include/asm/user32.h \
+ include/asm-generic/compat.h \
+ $(wildcard include/config/COMPAT_FOR_U64_ALIGNMENT) \
+ arch/x86/include/asm/syscall_wrapper.h \
+ arch/x86/include/asm/user.h \
+ arch/x86/include/asm/user_64.h \
+ arch/x86/include/asm/fsgsbase.h \
+ arch/x86/include/asm/vdso.h \
+ include/uapi/linux/elf.h \
+ include/uapi/linux/elf-em.h \
+ include/linux/kobject.h \
+ $(wildcard include/config/UEVENT_HELPER) \
+ $(wildcard include/config/DEBUG_KOBJECT_RELEASE) \
+ include/linux/sysfs.h \
+ include/linux/kernfs.h \
+ $(wildcard include/config/KERNFS) \
+ include/linux/idr.h \
+ include/linux/kobject_ns.h \
+ include/linux/moduleparam.h \
+ $(wildcard include/config/ALPHA) \
+ $(wildcard include/config/PPC64) \
+ include/linux/rbtree_latch.h \
+ include/linux/error-injection.h \
+ include/asm-generic/error-injection.h \
+ arch/x86/include/asm/module.h \
+ $(wildcard include/config/UNWINDER_ORC) \
+ include/asm-generic/module.h \
+ $(wildcard include/config/HAVE_MOD_ARCH_SPECIFIC) \
+ $(wildcard include/config/MODULES_USE_ELF_REL) \
+ $(wildcard include/config/MODULES_USE_ELF_RELA) \
+
+/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o: $(deps_/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o)
+
+$(deps_/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o):
+
+/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o: $(wildcard ./tools/objtool/objtool)
diff --git a/hyperdbg/include/platform/kernel/code/Mem.c b/hyperdbg/include/platform/kernel/code/Mem.c
index 4dfd1a83..8ebdd4a5 100644
--- a/hyperdbg/include/platform/kernel/code/Mem.c
+++ b/hyperdbg/include/platform/kernel/code/Mem.c
@@ -10,6 +10,49 @@
* @copyright This project is released under the GNU Public License v3.
*
*/
+#include "../header/Mem.h"
+#ifdef __linux__
+
+#include
+#include
+#include
+#include
+#include "../header/module_info.h"
+
+void* MemAllocKernel(size_t Size)
+{
+ void* ptr = kzalloc(Size, GFP_KERNEL);
+
+ if (ptr)
+ printk(KERN_INFO "MemAllocKernel: Allocated %zu bytes at %px\n", Size, ptr);
+ else
+ printk(KERN_ERR "MemAllocKernel: failed to allocate %zu bytes\n", Size);
+
+ return ptr;
+}
+
+void MemFree(void* Ptr)
+{
+ if (Ptr) {
+ printk(KERN_INFO "MemFree: Freeing memory at %px\n", Ptr);
+ kfree(Ptr);
+ }
+}
+
+void MemCopy(void* Destination, const void* Source, size_t Size)
+{
+ memcpy(Destination, Source, Size);
+}
+
+void MemSet(void* Destination, int Value, size_t Size)
+{
+ memset(Destination, Value, Size);
+}
+
+
+
+
+#elif defined(_WIN32)
#include "pch.h"
/**
@@ -87,3 +130,7 @@ PlatformMemFreePool(PVOID BufferAddress)
{
ExFreePoolWithTag(BufferAddress, POOLTAG);
}
+
+#else
+#error "Unsupported platform"
+#endif
diff --git a/hyperdbg/include/platform/kernel/code/Mem.o b/hyperdbg/include/platform/kernel/code/Mem.o
new file mode 100644
index 0000000000000000000000000000000000000000..07e6134f34bf2fe7f22dd666ddc1caf37788ad62
GIT binary patch
literal 29248
zcmcJ23w&F}mG@k|?8J#<$4Q)oJmfqGgvgHbFd>OaWLdUFY{`-2Jb3JlEX%ftEEzpQ
z650}=G)cEhp)KW^g)MzR7ibBz1lo_L4=9xGSGHd%Y)dJnlmaa*>_;CzN}D}r=8SZ8
zECavoZwEYg=09i7oH=vm%*?%4H<$Z+yKIIbbTGuZqLkC95Qj!f>8&!kRjd$8#I-EE
zf@K4boSZI1&(Ys_qk*IEMkLmA^t(M*pUf}oIr^R6qc8V-|NBTtCC^^qz3`&eAGiLo
z_0+2fGlJj!Vz_z6;*VlU<@S26K9z47=sEf~Xfo1s^e^Syf2mse$BX{_MC-|78mRewTigAD1#g73mgiR%+{*to
z3qH?6Ur)xz^)ugspJt)oZs9ZAf`4ri{NyC~pC`f3u(WICZ?yF##=NOiCcZ6^O(#+t
z-7*u)Cx+b14;I{m2l9!WJC=7ZAKyO}cpGau{ctRq0^)qe9YZ!yvs7`ako>!{iNr=X
z#>w=Edn_@Q$sVxqB$3N5D6Xvx`Cu7cua3y8>8kNVl-K1Ne}VA1bk%qrCMpD7K3<^=
zAzl8|`;==ZwJ(v)B{S*v)y=J9D3Ob2ljC{J_a@VY{cbfj?y<~JA(e3VW#W59tdJkg
zWZS)|WNuWXlJP`3muTMAU*^FriQmFjV>Ivo;s
z8ZIoBk$raK9xPE*PMfn-GI#DlEV0QtEe>Zgou@jd&FR9DY76n=m0yyOB%V{)AnK!#
zpHpaU6AfvZTDwNfJ|a_X>qO%%keZ2Hrc8YuVkNwcjWWj0x<>4;l-1cY|7}P+>twsm
zI@y*iaV@Ps9V$BwX=RwKp
z>bg8!TGwDf!}D`d0AuGOTh(0qmvqIdc~$pfvE))UUuFzoUbVpfWRYfJ^@AmvMKWU(
zOR8qP3KVPi#ZscGZW@ZR^eT*yw^)o7s%qbX^fF|m1glzQ$2zjGx^^-2Qnp(?Vp0XoIRKtG|P_fgu
zx*mi!r93JFCnsPXe|MX=)l8Q9RX&n)>G;y$ma;9@Z?hBV}!MqwTM7oq{z~66_c|
zjDAW?YqS}!NU|o|GFWjWS(B`xDVl7?3@E9sTVV@piWQ1NQm?S#a8?t)6*i+4sjFLT
zc}=a7&@76mnr*QerX*W$yG4_&mo+rSdYkbvq^R3$dqPueRur&1KDQwi$N<6|P^R
z3YAxTjWHKi6|3@O+GdIEGVPGDQ^qbe*fSP%OkS62mBy*=Lf78+AXh!E|C~e4mg4Bn
zTVAHKiJq@pKv2TH+ZptyUzpznCeJ1{u$i@oX8-k#VDp
z=gN4VjMeVrG?`u?yj;fUL4{Z$W3{t5Q>ItS_$(Q#
zRR(>k5X~0*omp%Auv~|eYR_7$(RlZLYl%jjATu8|)`A<74Xb$41|*Hk+RT-<`1{tS
zW^Q*}S&`Jj&NgT~Qcj};nsg+^+@AnF{xzWQnJMGxqV7KcS&y1rj?ra?WGmBG8*`MG
z0vvlk%jsGUlj6O5U$W@g^ISa@$yF!ktTHap#dVgB&B+;;YrIUyCC-gkRy|gcM2hx4
zQ&D-Vx!1i^&Vg)SmCpO?>EJKlyQ8v{JfKX|R9C&5f6TG{eOahpJFfuUp4MgD^uF{H
zn{0!s;&L(93zxf~z8usVQIEXv%pj@}odRB71xfg0O*l=|e@7EeL6i~xMH4O)^}o}E
zQxPo@%2sO1TR9sWTR6?N5!Nk-w5|CPnc>=w2u@rX2?f`?M$6&Tk-ApKb&_P!MGFpV
zUMo~B+pk?WA(TO-oPibG7(H){0dS(o?_4aFC3YK@JcA`T2^?6Wq>#l^Wbs?&6*oX-
zvG^uALe;QN%Fe71O$fJOgkgcY2;MH9q?yF;S#kQ+u?%8J1LN?iKu!lc(fDEje26ZC=9+sm|qs;fXo=fOv9%dxj8q!R8?+d5Q<
z&TN%)QXU=swq_*#Sdr9kYcG-dZ2=@*aIWlPkF5?DA!_8fu^e+JiZzcL(s)%P_ZxL+
zcnhRopc;pb)wrnsx>)0|;Y0SS#$jVuGcuPqjojxg_%@{N)4}ex;t9!p-s&d-@FIo#
zybdWx2WA$!Y>n8GJq@Ii6CfLfX1lP;HVdbUDyg<+rdTsmt(h8IgY=m`*}!q5(T-DJ
zu{ds6nBQ+$m_ML0!h^Li6cZ|orwtWg@YMF2@@NGZ5C`Rm1PF`)??qui90VwaIh4})
zg_M_`8q!!@N=x`kx+1-93!zpEj_vNG2HP2K$^(iJ0frak0bGcFhX0K0eSqOf;vZ-D
zDZ(#ic#Ll3WElQ5b_BwQ)upJn`q>IN%J4Wi84Ne5OOd{flyNJ=pCx5~nc<6R0Dr~s
zV|X(Z!f(~3$p0Ra^G$|dGerS^VE9hT8#Mk{9mnNsFl#WVon^^ReolH*CxQ}wInk@L
zKnZ_>`m6TyCH!rYrlkjM
z`FIP%Jv6@m%J5rBKld>_Nc#B}!_^sBh#xZiA4r~GF#LI%*KaZWVwx9r+NJApf12c<
z%WzGAM)-N%j|Ec$)Z(GFT~4m?
zO?ogH{t7+VOEBC<{Yo+1B)uJAc%J6hQHCEP`9I0<-xK}y49}AN+`{lxYw83m-`1Lei3mN_-`Jbf>
zuO|CEli^pAoGlE0iS)Lf;dhdLHZlBHqz5mCtq=zWO$En>RhF?eH
zelf%Uo#@9IzKG=6$MAOYdmm!>UBqAeAw7;CBl(Xo`r~Au*D(Ag%72F8TWMTwW_UH}
z;dX}KNca~S-bMPqo8cSDpB!iS!$g0A;nz|A5r%uHzu#l{3ewLH7=AU)>!%n#h4lPW
zhA$vJJjd|qWX~@$d=}~X6^1V&Ip1LT37YS3GyGG8zr*ma(7aHO!bH5
z{4wh9M;Jbp@*idRAj$c0hL4b+zn0^`!dMCs2t_y~H8NP|^>H&t|N%Q()
zhJTjiJjw9?qW(U{@cq>8zcIX@^!7Z%+i6^0Vz`t1?Q0BwndEts;ay~(e`NRpl2iK+
zJ@0nXes2cx)A-q>|Je-hB6&_@`0r?5>;13h^L3gRD;T|Ahdc~FMslxXxEe(v{0v`2
z{oTg!&4h1f`0J$qoecja$$t^Um(sY5GyECar|n~Sn8y7>47U^gRSeJ2{Q3;Tqon7X
z8U6;zb34P&)9V_;myw;{&F~$RKhE%lq@NQEf0+99GloAya{iLxn@FDDG2BOX^(Tg(
zO?;|o{%QLuko`<&c#itj!0;zY&Up;~8`10gUYh^2%;?vX
z{d6$=IU3&qhQCF2ej&q85kAK7ACi7@41bmE>Hxzx(KsGr_`8(9mf_zfJ$#nouaX{a
zW%#FPLVk|n_0(VON44G-&^X@9=RCq=Lt>!0NLTQ
zjQ(Ac|9OrR|2G-_4$1jPhR>qB)~jy!E^60C^)$YY?5CRHJ1Jkw@TDZ@EQZe`{_`2$
zOZ0AruOUCbmf)^iPalKXv;w!@ouL^A(2wtF~vt
zaX9eED<4O}^;t%L3C;IkGx}Db#bA(LwVaDd57P+O{E3a2&FJr-0ym>q+=V!k(Z5Un
zVH3mGQ-v_Y1LT*I4F4MGGsEyd(0COXzL)fQgyCCB{+k*8Nt%zhG5k5QpNANJfcQVl
z@KdDE|6+KO+MPn*kP3}H9J<;x6!|APfb8FjmH3y%DA
zG`=Ydj>$0mVHjt4P{E==xYp+)OhCBVLXZ46kp6FD^e-SWgs(Gtt^bo29FwDxT8Qs4
ze2DNTEI79NA`Q&{v*4Kg2+=>o@PmXuXTgz=*8j^E9Fw0R`qvnKE#dk+gyV~%(6(2+
zZJ|g0TK|8w;F$a}{9!PtAKFg7s9@o;;K*ksjpGc4XR#uLxeWgz*;Nz6*CI0rEeszf
z|Ip6x&l9~qe_(S6T}|zV82!sM-_K|G9^x~^@IypDPPn$WH&93j*E9OPwBNXy(I1l3
zLVVLgk9vNL@RJPxCgG1VKL0}a&n!4TI@m+_YZe^+%w2?^vhc^Q7WaR&p6h;TKhs3G
z)~B|^vn)8uuYa%6!tgh#-7O4PZ*vOaW4QK*y@YFd^gd_6LXTac?udj1M|oPXB7`Kv
z@r4fzS%z;Ud>_L%5Pmtsy9vLF;XcAYK{#en|62a*E%a9TKWD*Fe*L`piwqAFe|`T9
z#|7zQgx}BTFCzQ|;aZ+Ep$>+p8SYcCc+G;_36mF^ADWN$d-}Nq;z+-m>MS98Z9i+t
zKdfQ+LzLgbaQ!^4kKsFMUSGs;&F5lBTkO+TOf$rFrT%lT7=-$>)}62rIC{@kGbh~|$kn_;MB_$P?o&2TNBhvAE9f2r?t
zYyR8FzjZVE8MMwu8J;CQ#~7~fi)9#YVnYx<%y2E|#~H5Wyn*3bo-Z)GgY0A`}i35kt0o1Ev=1i&Wj0b!f_5%@Kh!znQDTqbI2&aJ`Q
zJ+3*5vPMx>Ne;lS+F{sh&uyxzX>tS_fD@D(P;<(3ByXAqoSTe518(%-X0x@e8dfpuyJoU`Hdo8zs3(=89KsgHcnX*<-aC>tuVzrlwWrG&xcBx*4LT
zsTx!Dr_0XFbQooFs`eV1pb+=1vwDmV8YU$fY?&uJ54~D3Z}U8)J&lRHpa~wMF2G0A3!6cw8=Gu6
zEGy;(8r)5GtguLSx~SsC4L}9zlS*%@Lkc&wBda!5VO`Z$lP*BLHn~>Jt2bs=ZJm2i
z3bLfpD6+93o2ApG!j|D>LlfBbawV!1DA2G4Iskj)W+D63w2)XLxB@yW&d?>cO-(zr9*48U-%)IA4TV6146E!7@l|RZFzG=?o9Cr#Q5#L0P?F|)V|i^u
zjeYTHi?IuJz^#Rh6wXSkVa#DDTTchdHL?-1nJx2h7}kOrRVy3Cv0P`hDtObs0Za%x
z(I#yhT-e#=!zMd{a&0KbwUW;P(=D>6PHp6*R>f}u5qX8p3ys!>uyLZJW}tCb&F-3=
zayqq_qt2bs%X6uNG?FpWkv8nvR^HM;#axyw)-tf=Jhg7LZmd|x--H7tB3
z8r7)gE79#5)qE$QQZzUg7{YPLxD~nIYTRQO5yw5oL#h$SLy!XeA>(_NR;4_3X8?Xi
zz_`#67?1)v28N9bi6!)SRfo~<=;#J+-Em08hm8ol=;>Ix$}#oiH0-}6i5bam6>zXo
z$#hajsbm$@!hKlj%~Y8Y*58mSM8)LR<@+|Y1j+)vFNUEbeu~}$7d@7aIj1?6E_Ezh
zB^86hRe2MHju$!*c>u~U)|Xp@Jk!%>W2Rl!p10lb3($!!?zavBXT
z+Y(j1SZ2pEJC@mMamqkgf)NDV=HQm%qnLqky1EqcyD7ht;UJO>%?ww+qyt~gaDDD+
zW4J!A$ln`4nU-f4@z?hsHLicg(Zl%si0Jzm{xsqGK91(|bHep|z#4y%aP18={yO0?
z#{bWR4>Mf;?iR4U46h{%9A~(j@B+iv6Rz*eXnD>h95xs-XuOwjJ)RoBi14F~ew6TQ
z7@jBm(+t<|sou!&PZIqxhTll|=NNtm;a_6--Gpnq)AAoD{60qi2;pC6_@jh>gW>;1
z_(_I8L-?Z%|0Ur+VEAtd{}ID~Pxwz5{s+SUgW>u;*ykBOiw?cNX83%@oef{33+3VdM8i;=X_GZ+f@d3()1e_trP8wmqJuP++d;Wxd(P*8Mr_6K}s7u4;K
zh9e?4(C0Nn(H?&o*PZ?`{!86fX6qoJs`S9Avl+`iUUck9~bwau&Dp0RYs
zlglMkVr*=G5m}>BYlqUAOI0$q4@=wDsoaLuYd4&&lEdSkY$ESTracN8&nAWw*=%CS
z1KN%6^$dc-hho_S?Q4NPw>JsovHhN0B3~E>AYVu)+D8)UL^c^${IDh(1LWfHeT+n^
zU5y~*lj)&kHWANz2D7nre6&43T1fBpB=*C2rY9DISR=_ClvOB-=R7E968khsC^_|0PTCA#t!7r%294A
z(Vj`t;%tx#fnfq5o`EmCWcNWAaGoGV3`B)KwaY1!BOca*+-PzbOwLM~0h27{6Y0Vj
z=H<-e8bxOSjzRhZaIfG(wAs1w`!3*Qf}u{oiT(sU$IeiATOimS@q^DrFNWR`T_Ms%
z{Jv1I(;MDxqL+z!J9_=)?y@fw3`Ijh@S^>J&gkxbzuD*AC2RJ2JIsM#*zfE02Kulf
zIJ{w)3d!LE<~S%IF8aGW!Gl6;+t3SkioIjXM
zqEUYkI_&M2BAVy>!y)BzyFy`qpgSngu_lJh@dP-P^av~z3W~VpmMTWiMfnt}@
zDT89bZ-EojoDwgHlLDpnU+V!9p^XPo_=yGE#i}04_qR50C;UV`kFvgot`0
z+i-zH2OSgzu*k7-GdX1KVb~vug0yP+2%0c-fuQW^Hh(zi??r)p+sthpC{uB*(b@?}w7Ok$5
zQ(i6F!H^mD20LL5J>M_-K%G(luBZV2lGrbH^hJE$U~#0t;QGU%Zs@1fYorI(PP4zS
z6NarH%u_9J;ZT1BMhiTGjI@B#W+TynZ`*DYS7z8Dlo@T<-{l?Xjj93E>vY+oEyj`~
zS=ez%!z%v@77P^l-*Na57Py&&8G}VKn>Sn6td$xm*R^G$=r*OUjLwhH
zqD-5OzR(Uibw_>%pxJD5x~KdIq}vC{Cw{^n}7uFd&%xf(BA*nw-M-p8
z_NY;n;+Lj26z{;*h}Ihu#;b4QI0ho2URZZJQ7-FNI-eQ@e>I%RiSgu+vZcMl@HM*P
zb{EbI!S14#)y5o013pA%j%UHJarjHUP~To#v%Zy91u;>NphIg7`n=nk^=nZ!9C6bJ
z`*}6L2VimQ>o@xXL9jnC_IM1IeG$nNvf%dzllh$JOyppFh~b_M>!T|0IN;v_n|{(o
z*+h$a18~5=!%6XYVfy+9EN+n|E3FJ*%|5GPihX0|aIBEZLpS7!LNBUPG^Ih1Lk_l_
zJSH4JI$`-2xUYiaQptv8F$!IpWRSt7TDloAh;tecsS~A-aKyje^uhV2*V_$a4uVO8
zhXoCEq|RL(0q`H*T~dPHKmN4nynu(-hC
z$_pFvG%UX~zGWx4(p-T#(&t~(1`4O691Kc00B*)KV<|jv9x#VspDlL8Qs4&AV@|>k
zl#Lq2{+L~`5KE7wjRW>W;J*gUE}!Y|>i`?qxnQ__k&zSIYI~N?39ebcrhLPo);w9I
z*mN*dY&@GwTw=y^YOiC0DdI@sBCm9w$`)Wo=khp@aKftLD~&zoWeajN!Xdp;(%TF*
zE_%z?-yMKcs#$<<{^|7>G*V{QdI8aX+Dyf=BW1fhbP?pC_^ix}_b{vo?D60*j&?ON
zJPz&31DD)1fQ6tLkRQ-9A&b}rmvrz-wtmtbQx4CCz5sJ
zBo{6dHamSG>o!~+%kli*AC_BetgOAB+F;5}kep1#n;x_o*n3cJjElOHb2(S^dbGB{
zJT6L9^y6exdgCo^7+MBDBqhh4F1aDgQiDSgQOh-qTPG&F%rM*-F(catypbNfbphMG
zaLDv_Md8K??gg-E+Vm;Mp{*QEX~JAZYPkud{SM9DGLtDDEojq`81rRdj~&ayQ85nV
zto??v#fe)+Fvty}FEJK@T~*Oian#TO!yXA`fE{u)08?^2K3*_~>eqZS%CKqZ{
zqufc+6w~v|*BuTG^b0uT#Vq%($fNjzu&37(4IF+h9!r~fIO6B?DRrwW0ivK69LlI8
zh}`TYbFkG-!!8YufR@45XAgPggVS#=0eeSjzi={(48SIW_Dk0LZ*qGr*B5#Ft~byJ
zyTP?c$$7#{QLUhpaH!ssR)iaodNKV
zxTVHBJ8n6!;7SLAUE$FAAO*TzYcH)T>+T?bRd(9ZW}y8ctay05v>ei8&-J#J<`SH?
za0`a!4aNs|0m1n3)4fIOkD{N}(`F#3PbGT9a5C&Jx@}yfeQ3n;U?uggwstU|We%o<
z52galfJmif5mp?t+aL6Y;a(`3cmVFUhKr&^l=~!)5$NmlcLIT5D1*Tbm9`J-c2Je}
zhIURk2*7O$5DRyZEu)#SL`w|6uG`X?i5JG;Y?5o~fqM$s&cTtEQA`X$0&XT1_P30|
z&4HHYX8b>yj;9JkiI(wHED!#2tVJDpTjFqUvISJx92YHxT(%{bjjPI@QP?8D*MB{2
z%^R9md)BvlvijRM
z8-_zE7i}06ui{)PHrPB0cNp@XRH|)Vd2&3HOYWB&+#D3(Q6H~GKUpl%j#B|9Yz=`7
z?%56{h9LpQk;|mPdh!PlF5dMgb{as+YzFRX<}z7G<1>b_SZ*&Q$JCKGXXaHN7{c0O
zDUeCLWdI3KAjJA;gYx3O4K6u2M-0K0ZWuu7l0qgQvs{OfT76c!n2<*$$kA#q?<=N9
z02nM_toA{WK#vKR&GPOQ+&6_sp4~p*M)w&5gK($2Ku--kZ3UTK^N}^{npdwolVEzR
zBR?O9Uye6~vA=FwRrR&>TymWzpz990cGcE>%+@pA)$s{?=T(mQ)bDou(EAwF)9>Bm
z`wG_3Ntta}uWP!?dzJmd$G!^{2w!F;hV%l;%XWOzU0ui=un$V7>*Mo3{j3UEx-o*l
zpJPQ8ET11+>30#X=?_uf`h3(%e}vJ$KzZx)NGttU8NGggnBWN)l*1w3IyIpH0K0mJ
zVnUG}-t4Fp>}8r!6!`jsVZo2ZC!9O(#{sq9X-9vE2(5Wus9=KL&_kO^U{sp4b^8ue{SEBz8(QEtD
z^iNDe{}j=~MF!3DH;}`2#~J?r3CDUEG(Emeg7o;m6{j`AdVaRtyRpLTSZysT-5;`|
z)_Y%N|KCSYE8oJRk~LkX1ox*~}@7!`BKL^S6PjKO0*xaPC!I;vCIL@L&tho`Bc86VGy
z=D}P}G-orILGsq-4Uh#Q;HV!5n)-p5iH`%5a6_6X)YDNDL=?@i9O2D6Rn$C`fMrK6
zNzjf=#|8(piG4Z;Rqz%BandAkZ+ir}s~Xw#$V3|0k0dk!h^vzb!(j>X_(T=N6wPUP
zUfK-L!qt<2w)d*H7gRx@!CZ%Ioz^
z_q5;?h_)_hE&*Zeeoi11l-)%dNH*B)5o
zpC?@V6^*|@xSOsTf0goDUX5%2bOxiJNB)E0|MA5QHIbEkXVAiBE2a7SmRc{G6uj-@nt0
zb^R+fKvyllmctJ?rmtdjCrKbquk)IGDNx&+#e}d}ka|V#f
zz-gZblw(NvD%IEDk(HGz&^`rNCHY_Rsv6a#e>Y@t&T;vF1sJx!8vd-|O`Mnz_RLXN
z9cx+j_4iOvseb>3s>XWqW0Tc?car*7o2tetU6HQ3U46xWqd}*wr1w#MD~4%Ki{JO=
z7}A}f`lw%P(E8ID{<|ra^nYZJqBu!}Zn)yO5$fN8QE7~^J!?RomFn+EC@THEa9xMj$Ne8-ybs^NgC_*N-%`0!`(&14
zJyfowzo)4FeyZq(>r(jR`s9G4Q~he}90WJ~Er&ne{(l2o
CR+0<=
literal 0
HcmV?d00001
diff --git a/hyperdbg/include/platform/kernel/header/Mem.h b/hyperdbg/include/platform/kernel/header/Mem.h
index 5016d131..d61461db 100644
--- a/hyperdbg/include/platform/kernel/header/Mem.h
+++ b/hyperdbg/include/platform/kernel/header/Mem.h
@@ -19,6 +19,14 @@
//
// Some functions are globally defined in SDK
//
+#ifdef __linux__
+#include
+void* MemAllocKernel(size_t Size);
+void MemFree(void* Ptr);
+void MemCopy(void* Destination, const void* Source, size_t Size);
+void MemSet(void* Destination, int Value, size_t Size);
+
+#elif defined(_WIN32)
PVOID
PlatformMemAllocateContiguousZeroedMemory(SIZE_T NumberOfBytes);
@@ -37,3 +45,6 @@ PlatformMemAllocateZeroedNonPagedPool(SIZE_T NumberOfBytes);
VOID
PlatformMemFreePool(PVOID BufferAddress);
+#else
+#error "Unsupported platform"
+#endif
diff --git a/hyperdbg/include/platform/kernel/header/module_info.h b/hyperdbg/include/platform/kernel/header/module_info.h
new file mode 100644
index 00000000..e5c82f7a
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/module_info.h
@@ -0,0 +1,13 @@
+// module_info.h
+
+#ifndef MODULE_INFO_H
+#define MODULE_INFO_H
+
+#include
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Alish");
+MODULE_DESCRIPTION("Linux Kernel module Mock");
+MODULE_VERSION("0.1");
+
+#endif // _MODULE_INFO_H_
diff --git a/hyperdbg/linux/mock/Makefile b/hyperdbg/linux/mock/Makefile
index 0680d315..36415860 100644
--- a/hyperdbg/linux/mock/Makefile
+++ b/hyperdbg/linux/mock/Makefile
@@ -1,10 +1,13 @@
obj-m += mymodule.o
-mymodule-objs := mock.o mem.o
+mymodule-objs := mock.o \
+ ../../include/platform/kernel/code/Mem.o
-PWD := $(CURDIR)
+KDIR ?= /lib/modules/$(shell uname -r)/build
+PWD := $(shell pwd)
+EXTRA_CFLAGS += -I$(PWD)/../../include/platform/kernel/header
all:
- $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
+ $(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
- $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
+ $(MAKE) -C $(KDIR) M=$(PWD) clean
diff --git a/hyperdbg/linux/mock/mock.c b/hyperdbg/linux/mock/mock.c
index 1cafa619..1e47c111 100644
--- a/hyperdbg/linux/mock/mock.c
+++ b/hyperdbg/linux/mock/mock.c
@@ -3,7 +3,7 @@
#include
#include
#include "module_info.h"
-#include "mem.h"
+#include "../../include/platform/kernel/header/Mem.h"
static void* g_AllocatedBuffer;
From 79f39a35a6b3ad9a93e0181137d8c92757bbed30 Mon Sep 17 00:00:00 2001
From: Alireza moradi
Date: Mon, 5 Jan 2026 00:54:53 +0330
Subject: [PATCH 082/323] delete not needed file
---
.../include/platform/kernel/code/.Mem.o.cmd | 1038 -----------------
1 file changed, 1038 deletions(-)
delete mode 100644 hyperdbg/include/platform/kernel/code/.Mem.o.cmd
diff --git a/hyperdbg/include/platform/kernel/code/.Mem.o.cmd b/hyperdbg/include/platform/kernel/code/.Mem.o.cmd
deleted file mode 100644
index 93509bcf..00000000
--- a/hyperdbg/include/platform/kernel/code/.Mem.o.cmd
+++ /dev/null
@@ -1,1038 +0,0 @@
-savedcmd_/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o := gcc-13 -Wp,-MMD,/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/.Mem.o.d -nostdinc -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/compiler-version.h -include ./include/linux/kconfig.h -I./ubuntu/include -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -mindirect-branch-cs-prefix -mfunction-return=thunk-extern -fno-jump-tables -mharden-sls=all -fpatchable-function-entry=16,16 -fno-delete-null-pointer-checks -O2 -fno-allow-store-data-races -fstack-protector-strong -fno-omit-frame-pointer -fno-optimize-sibling-calls -ftrivial-auto-var-init=zero -fno-stack-clash-protection -fzero-call-used-regs=used-gpr -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -falign-functions=16 -fstrict-flex-arrays=3 -fno-strict-overflow -fno-stack-check -fconserve-stack -Wall -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=1024 -Wno-main -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-dangling-pointer -Wvla -Wno-pointer-sign -Wcast-function-type -Wno-stringop-overflow -Wno-array-bounds -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-restrict -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -g -gdwarf-5 -I/usr/src/linux-headers-6.8.0-51-generic/../../include/platform/kernel/header -fsanitize=bounds-strict -fsanitize=shift -fsanitize=bool -fsanitize=enum -DMODULE -DKBUILD_BASENAME='"Mem"' -DKBUILD_MODNAME='"mymodule"' -D__KBUILD_MODNAME=kmod_mymodule -c -o /home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o /home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.c ; ./tools/objtool/objtool --hacks=jump_label --hacks=noinstr --hacks=skylake --retpoline --rethunk --sls --stackval --static-call --uaccess --prefix=16 --module /home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o
-
-source_/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o := /home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.c
-
-deps_/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o := \
- include/linux/compiler-version.h \
- $(wildcard include/config/CC_VERSION_TEXT) \
- include/linux/kconfig.h \
- $(wildcard include/config/CPU_BIG_ENDIAN) \
- $(wildcard include/config/BOOGER) \
- $(wildcard include/config/FOO) \
- include/linux/compiler_types.h \
- $(wildcard include/config/DEBUG_INFO_BTF) \
- $(wildcard include/config/PAHOLE_HAS_BTF_TAG) \
- $(wildcard include/config/FUNCTION_ALIGNMENT) \
- $(wildcard include/config/CC_IS_GCC) \
- $(wildcard include/config/X86_64) \
- $(wildcard include/config/ARM64) \
- $(wildcard include/config/HAVE_ARCH_COMPILER_H) \
- $(wildcard include/config/CC_HAS_ASM_INLINE) \
- include/linux/compiler_attributes.h \
- include/linux/compiler-gcc.h \
- $(wildcard include/config/RETPOLINE) \
- $(wildcard include/config/GCC_ASM_GOTO_OUTPUT_WORKAROUND) \
- $(wildcard include/config/ARCH_USE_BUILTIN_BSWAP) \
- $(wildcard include/config/SHADOW_CALL_STACK) \
- $(wildcard include/config/KCOV) \
- /home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/../header/Mem.h \
- include/linux/types.h \
- $(wildcard include/config/HAVE_UID16) \
- $(wildcard include/config/UID16) \
- $(wildcard include/config/ARCH_DMA_ADDR_T_64BIT) \
- $(wildcard include/config/PHYS_ADDR_T_64BIT) \
- $(wildcard include/config/64BIT) \
- $(wildcard include/config/ARCH_32BIT_USTAT_F_TINODE) \
- include/uapi/linux/types.h \
- arch/x86/include/generated/uapi/asm/types.h \
- include/uapi/asm-generic/types.h \
- include/asm-generic/int-ll64.h \
- include/uapi/asm-generic/int-ll64.h \
- arch/x86/include/uapi/asm/bitsperlong.h \
- include/asm-generic/bitsperlong.h \
- include/uapi/asm-generic/bitsperlong.h \
- include/uapi/linux/posix_types.h \
- include/linux/stddef.h \
- include/uapi/linux/stddef.h \
- arch/x86/include/asm/posix_types.h \
- $(wildcard include/config/X86_32) \
- arch/x86/include/uapi/asm/posix_types_64.h \
- include/uapi/asm-generic/posix_types.h \
- include/linux/kernel.h \
- $(wildcard include/config/PREEMPT_VOLUNTARY_BUILD) \
- $(wildcard include/config/PREEMPT_DYNAMIC) \
- $(wildcard include/config/HAVE_PREEMPT_DYNAMIC_CALL) \
- $(wildcard include/config/HAVE_PREEMPT_DYNAMIC_KEY) \
- $(wildcard include/config/PREEMPT_) \
- $(wildcard include/config/DEBUG_ATOMIC_SLEEP) \
- $(wildcard include/config/SMP) \
- $(wildcard include/config/MMU) \
- $(wildcard include/config/PROVE_LOCKING) \
- $(wildcard include/config/TRACING) \
- $(wildcard include/config/FTRACE_MCOUNT_RECORD) \
- include/linux/stdarg.h \
- include/linux/align.h \
- include/linux/const.h \
- include/vdso/const.h \
- include/uapi/linux/const.h \
- include/linux/array_size.h \
- include/linux/compiler.h \
- $(wildcard include/config/TRACE_BRANCH_PROFILING) \
- $(wildcard include/config/PROFILE_ALL_BRANCHES) \
- $(wildcard include/config/OBJTOOL) \
- arch/x86/include/generated/asm/rwonce.h \
- include/asm-generic/rwonce.h \
- include/linux/kasan-checks.h \
- $(wildcard include/config/KASAN_GENERIC) \
- $(wildcard include/config/KASAN_SW_TAGS) \
- include/linux/kcsan-checks.h \
- $(wildcard include/config/KCSAN) \
- $(wildcard include/config/KCSAN_WEAK_MEMORY) \
- $(wildcard include/config/KCSAN_IGNORE_ATOMICS) \
- include/linux/limits.h \
- include/uapi/linux/limits.h \
- include/vdso/limits.h \
- include/linux/linkage.h \
- $(wildcard include/config/ARCH_USE_SYM_ANNOTATIONS) \
- include/linux/stringify.h \
- include/linux/export.h \
- $(wildcard include/config/MODVERSIONS) \
- arch/x86/include/asm/linkage.h \
- $(wildcard include/config/CALL_PADDING) \
- $(wildcard include/config/RETHUNK) \
- $(wildcard include/config/SLS) \
- $(wildcard include/config/FUNCTION_PADDING_BYTES) \
- $(wildcard include/config/UML) \
- arch/x86/include/asm/ibt.h \
- $(wildcard include/config/X86_KERNEL_IBT) \
- include/linux/container_of.h \
- include/linux/build_bug.h \
- include/linux/bitops.h \
- include/linux/bits.h \
- include/vdso/bits.h \
- include/linux/typecheck.h \
- include/uapi/linux/kernel.h \
- include/uapi/linux/sysinfo.h \
- include/asm-generic/bitops/generic-non-atomic.h \
- arch/x86/include/asm/barrier.h \
- arch/x86/include/asm/alternative.h \
- $(wildcard include/config/CALL_THUNKS) \
- arch/x86/include/asm/asm.h \
- $(wildcard include/config/KPROBES) \
- arch/x86/include/asm/extable_fixup_types.h \
- arch/x86/include/asm/nops.h \
- include/asm-generic/barrier.h \
- arch/x86/include/asm/bitops.h \
- $(wildcard include/config/X86_CMOV) \
- arch/x86/include/asm/rmwcc.h \
- include/linux/args.h \
- include/asm-generic/bitops/sched.h \
- arch/x86/include/asm/arch_hweight.h \
- arch/x86/include/asm/cpufeatures.h \
- arch/x86/include/asm/required-features.h \
- $(wildcard include/config/X86_MINIMUM_CPU_FAMILY) \
- $(wildcard include/config/MATH_EMULATION) \
- $(wildcard include/config/X86_PAE) \
- $(wildcard include/config/X86_CMPXCHG64) \
- $(wildcard include/config/X86_P6_NOP) \
- $(wildcard include/config/MATOM) \
- $(wildcard include/config/PARAVIRT_XXL) \
- arch/x86/include/asm/disabled-features.h \
- $(wildcard include/config/X86_UMIP) \
- $(wildcard include/config/X86_INTEL_MEMORY_PROTECTION_KEYS) \
- $(wildcard include/config/X86_5LEVEL) \
- $(wildcard include/config/PAGE_TABLE_ISOLATION) \
- $(wildcard include/config/CPU_UNRET_ENTRY) \
- $(wildcard include/config/CALL_DEPTH_TRACKING) \
- $(wildcard include/config/ADDRESS_MASKING) \
- $(wildcard include/config/INTEL_IOMMU_SVM) \
- $(wildcard include/config/X86_SGX) \
- $(wildcard include/config/XEN_PV) \
- $(wildcard include/config/INTEL_TDX_GUEST) \
- $(wildcard include/config/X86_USER_SHADOW_STACK) \
- include/asm-generic/bitops/const_hweight.h \
- include/asm-generic/bitops/instrumented-atomic.h \
- include/linux/instrumented.h \
- include/linux/kmsan-checks.h \
- $(wildcard include/config/KMSAN) \
- include/asm-generic/bitops/instrumented-non-atomic.h \
- $(wildcard include/config/KCSAN_ASSUME_PLAIN_WRITES_ATOMIC) \
- include/asm-generic/bitops/instrumented-lock.h \
- include/asm-generic/bitops/le.h \
- arch/x86/include/uapi/asm/byteorder.h \
- include/linux/byteorder/little_endian.h \
- include/uapi/linux/byteorder/little_endian.h \
- include/linux/swab.h \
- include/uapi/linux/swab.h \
- arch/x86/include/uapi/asm/swab.h \
- include/linux/byteorder/generic.h \
- include/asm-generic/bitops/ext2-atomic-setbit.h \
- include/linux/hex.h \
- include/linux/kstrtox.h \
- include/linux/log2.h \
- $(wildcard include/config/ARCH_HAS_ILOG2_U32) \
- $(wildcard include/config/ARCH_HAS_ILOG2_U64) \
- include/linux/math.h \
- arch/x86/include/asm/div64.h \
- include/asm-generic/div64.h \
- include/linux/minmax.h \
- include/linux/panic.h \
- $(wildcard include/config/PANIC_TIMEOUT) \
- include/linux/printk.h \
- $(wildcard include/config/MESSAGE_LOGLEVEL_DEFAULT) \
- $(wildcard include/config/CONSOLE_LOGLEVEL_DEFAULT) \
- $(wildcard include/config/CONSOLE_LOGLEVEL_QUIET) \
- $(wildcard include/config/EARLY_PRINTK) \
- $(wildcard include/config/PRINTK) \
- $(wildcard include/config/PRINTK_INDEX) \
- $(wildcard include/config/DYNAMIC_DEBUG) \
- $(wildcard include/config/DYNAMIC_DEBUG_CORE) \
- include/linux/init.h \
- $(wildcard include/config/HAVE_ARCH_PREL32_RELOCATIONS) \
- $(wildcard include/config/STRICT_KERNEL_RWX) \
- $(wildcard include/config/STRICT_MODULE_RWX) \
- $(wildcard include/config/LTO_CLANG) \
- include/linux/kern_levels.h \
- include/linux/ratelimit_types.h \
- include/uapi/linux/param.h \
- arch/x86/include/generated/uapi/asm/param.h \
- include/asm-generic/param.h \
- $(wildcard include/config/HZ) \
- include/uapi/asm-generic/param.h \
- include/linux/spinlock_types_raw.h \
- $(wildcard include/config/DEBUG_SPINLOCK) \
- $(wildcard include/config/DEBUG_LOCK_ALLOC) \
- arch/x86/include/asm/spinlock_types.h \
- include/asm-generic/qspinlock_types.h \
- $(wildcard include/config/NR_CPUS) \
- include/asm-generic/qrwlock_types.h \
- include/linux/lockdep_types.h \
- $(wildcard include/config/PROVE_RAW_LOCK_NESTING) \
- $(wildcard include/config/LOCKDEP) \
- $(wildcard include/config/LOCK_STAT) \
- include/linux/once_lite.h \
- include/linux/dynamic_debug.h \
- $(wildcard include/config/JUMP_LABEL) \
- include/linux/jump_label.h \
- $(wildcard include/config/HAVE_ARCH_JUMP_LABEL_RELATIVE) \
- arch/x86/include/asm/jump_label.h \
- $(wildcard include/config/HAVE_JUMP_LABEL_HACK) \
- include/linux/sprintf.h \
- include/linux/static_call_types.h \
- $(wildcard include/config/HAVE_STATIC_CALL) \
- $(wildcard include/config/HAVE_STATIC_CALL_INLINE) \
- include/linux/instruction_pointer.h \
- include/linux/slab.h \
- $(wildcard include/config/SLUB_DEBUG) \
- $(wildcard include/config/DEBUG_OBJECTS) \
- $(wildcard include/config/SLUB_TINY) \
- $(wildcard include/config/FAILSLAB) \
- $(wildcard include/config/MEMCG_KMEM) \
- $(wildcard include/config/KFENCE) \
- $(wildcard include/config/RANDOM_KMALLOC_CACHES) \
- $(wildcard include/config/ZONE_DMA) \
- include/linux/cache.h \
- $(wildcard include/config/ARCH_HAS_CACHE_LINE_SIZE) \
- arch/x86/include/asm/cache.h \
- $(wildcard include/config/X86_L1_CACHE_SHIFT) \
- $(wildcard include/config/X86_INTERNODE_CACHE_SHIFT) \
- $(wildcard include/config/X86_VSMP) \
- include/linux/gfp.h \
- $(wildcard include/config/HIGHMEM) \
- $(wildcard include/config/ZONE_DMA32) \
- $(wildcard include/config/ZONE_DEVICE) \
- $(wildcard include/config/NUMA) \
- $(wildcard include/config/COMPACTION) \
- $(wildcard include/config/CONTIG_ALLOC) \
- include/linux/gfp_types.h \
- $(wildcard include/config/KASAN_HW_TAGS) \
- include/linux/mmzone.h \
- $(wildcard include/config/ARCH_FORCE_MAX_ORDER) \
- $(wildcard include/config/CMA) \
- $(wildcard include/config/MEMORY_ISOLATION) \
- $(wildcard include/config/ZSMALLOC) \
- $(wildcard include/config/UNACCEPTED_MEMORY) \
- $(wildcard include/config/SWAP) \
- $(wildcard include/config/NUMA_BALANCING) \
- $(wildcard include/config/TRANSPARENT_HUGEPAGE) \
- $(wildcard include/config/LRU_GEN) \
- $(wildcard include/config/LRU_GEN_STATS) \
- $(wildcard include/config/LRU_GEN_WALKS_MMU) \
- $(wildcard include/config/MEMCG) \
- $(wildcard include/config/SPARSEMEM) \
- $(wildcard include/config/MEMORY_HOTPLUG) \
- $(wildcard include/config/MEMORY_FAILURE) \
- $(wildcard include/config/FLATMEM) \
- $(wildcard include/config/PAGE_EXTENSION) \
- $(wildcard include/config/DEFERRED_STRUCT_PAGE_INIT) \
- $(wildcard include/config/HAVE_MEMORYLESS_NODES) \
- $(wildcard include/config/SPARSEMEM_VMEMMAP) \
- $(wildcard include/config/SPARSEMEM_EXTREME) \
- $(wildcard include/config/HAVE_ARCH_PFN_VALID) \
- include/linux/spinlock.h \
- $(wildcard include/config/PREEMPTION) \
- $(wildcard include/config/PREEMPT_RT) \
- include/linux/preempt.h \
- $(wildcard include/config/PREEMPT_COUNT) \
- $(wildcard include/config/DEBUG_PREEMPT) \
- $(wildcard include/config/TRACE_PREEMPT_TOGGLE) \
- $(wildcard include/config/PREEMPT_NOTIFIERS) \
- $(wildcard include/config/PREEMPT_NONE) \
- $(wildcard include/config/PREEMPT_VOLUNTARY) \
- $(wildcard include/config/PREEMPT) \
- include/linux/cleanup.h \
- arch/x86/include/asm/preempt.h \
- arch/x86/include/asm/percpu.h \
- $(wildcard include/config/X86_64_SMP) \
- include/asm-generic/percpu.h \
- $(wildcard include/config/HAVE_SETUP_PER_CPU_AREA) \
- include/linux/threads.h \
- $(wildcard include/config/BASE_SMALL) \
- include/linux/percpu-defs.h \
- $(wildcard include/config/DEBUG_FORCE_WEAK_PER_CPU) \
- $(wildcard include/config/AMD_MEM_ENCRYPT) \
- arch/x86/include/asm/current.h \
- include/linux/irqflags.h \
- $(wildcard include/config/TRACE_IRQFLAGS) \
- $(wildcard include/config/IRQSOFF_TRACER) \
- $(wildcard include/config/PREEMPT_TRACER) \
- $(wildcard include/config/DEBUG_IRQFLAGS) \
- $(wildcard include/config/TRACE_IRQFLAGS_SUPPORT) \
- include/linux/irqflags_types.h \
- arch/x86/include/asm/irqflags.h \
- $(wildcard include/config/DEBUG_ENTRY) \
- arch/x86/include/asm/processor-flags.h \
- $(wildcard include/config/VM86) \
- arch/x86/include/uapi/asm/processor-flags.h \
- include/linux/mem_encrypt.h \
- $(wildcard include/config/ARCH_HAS_MEM_ENCRYPT) \
- arch/x86/include/asm/mem_encrypt.h \
- $(wildcard include/config/X86_MEM_ENCRYPT) \
- include/linux/cc_platform.h \
- $(wildcard include/config/ARCH_HAS_CC_PLATFORM) \
- arch/x86/include/asm/nospec-branch.h \
- $(wildcard include/config/CALL_THUNKS_DEBUG) \
- $(wildcard include/config/NOINSTR_VALIDATION) \
- $(wildcard include/config/CPU_SRSO) \
- $(wildcard include/config/CPU_IBPB_ENTRY) \
- include/linux/static_key.h \
- include/linux/objtool.h \
- $(wildcard include/config/FRAME_POINTER) \
- include/linux/objtool_types.h \
- arch/x86/include/asm/msr-index.h \
- arch/x86/include/asm/unwind_hints.h \
- arch/x86/include/asm/orc_types.h \
- arch/x86/include/asm/asm-offsets.h \
- include/generated/asm-offsets.h \
- arch/x86/include/asm/GEN-for-each-reg.h \
- arch/x86/include/asm/segment.h \
- arch/x86/include/asm/paravirt.h \
- $(wildcard include/config/PARAVIRT) \
- $(wildcard include/config/PARAVIRT_SPINLOCKS) \
- $(wildcard include/config/X86_IOPL_IOPERM) \
- $(wildcard include/config/PGTABLE_LEVELS) \
- arch/x86/include/asm/paravirt_types.h \
- $(wildcard include/config/ZERO_CALL_USED_REGS) \
- $(wildcard include/config/PARAVIRT_DEBUG) \
- arch/x86/include/asm/desc_defs.h \
- arch/x86/include/asm/pgtable_types.h \
- $(wildcard include/config/MEM_SOFT_DIRTY) \
- $(wildcard include/config/HAVE_ARCH_USERFAULTFD_WP) \
- $(wildcard include/config/PROC_FS) \
- arch/x86/include/asm/page_types.h \
- $(wildcard include/config/PHYSICAL_START) \
- $(wildcard include/config/PHYSICAL_ALIGN) \
- $(wildcard include/config/DYNAMIC_PHYSICAL_MASK) \
- arch/x86/include/asm/page_64_types.h \
- $(wildcard include/config/KASAN) \
- $(wildcard include/config/DYNAMIC_MEMORY_LAYOUT) \
- $(wildcard include/config/RANDOMIZE_BASE) \
- arch/x86/include/asm/kaslr.h \
- $(wildcard include/config/RANDOMIZE_MEMORY) \
- arch/x86/include/asm/pgtable_64_types.h \
- $(wildcard include/config/DEBUG_KMAP_LOCAL_FORCE_MAP) \
- arch/x86/include/asm/sparsemem.h \
- $(wildcard include/config/NUMA_KEEP_MEMINFO) \
- include/linux/bug.h \
- $(wildcard include/config/GENERIC_BUG) \
- $(wildcard include/config/BUG_ON_DATA_CORRUPTION) \
- arch/x86/include/asm/bug.h \
- $(wildcard include/config/DEBUG_BUGVERBOSE) \
- include/linux/instrumentation.h \
- include/asm-generic/bug.h \
- $(wildcard include/config/BUG) \
- $(wildcard include/config/GENERIC_BUG_RELATIVE_POINTERS) \
- include/linux/cpumask.h \
- $(wildcard include/config/FORCE_NR_CPUS) \
- $(wildcard include/config/HOTPLUG_CPU) \
- $(wildcard include/config/DEBUG_PER_CPU_MAPS) \
- $(wildcard include/config/CPUMASK_OFFSTACK) \
- include/linux/bitmap.h \
- include/linux/errno.h \
- include/uapi/linux/errno.h \
- arch/x86/include/generated/uapi/asm/errno.h \
- include/uapi/asm-generic/errno.h \
- include/uapi/asm-generic/errno-base.h \
- include/linux/find.h \
- include/linux/string.h \
- $(wildcard include/config/BINARY_PRINTF) \
- $(wildcard include/config/FORTIFY_SOURCE) \
- include/linux/err.h \
- include/linux/overflow.h \
- include/uapi/linux/string.h \
- arch/x86/include/asm/string.h \
- arch/x86/include/asm/string_64.h \
- $(wildcard include/config/ARCH_HAS_UACCESS_FLUSHCACHE) \
- include/linux/fortify-string.h \
- $(wildcard include/config/CC_HAS_KASAN_MEMINTRINSIC_PREFIX) \
- $(wildcard include/config/GENERIC_ENTRY) \
- include/linux/bitmap-str.h \
- include/linux/atomic.h \
- arch/x86/include/asm/atomic.h \
- arch/x86/include/asm/cmpxchg.h \
- arch/x86/include/asm/cmpxchg_64.h \
- arch/x86/include/asm/atomic64_64.h \
- include/linux/atomic/atomic-arch-fallback.h \
- $(wildcard include/config/GENERIC_ATOMIC64) \
- include/linux/atomic/atomic-long.h \
- include/linux/atomic/atomic-instrumented.h \
- include/linux/numa.h \
- $(wildcard include/config/NODES_SHIFT) \
- $(wildcard include/config/HAVE_ARCH_NODE_DEV_GROUP) \
- arch/x86/include/asm/frame.h \
- include/linux/thread_info.h \
- $(wildcard include/config/THREAD_INFO_IN_TASK) \
- $(wildcard include/config/HAVE_ARCH_WITHIN_STACK_FRAMES) \
- $(wildcard include/config/HARDENED_USERCOPY) \
- $(wildcard include/config/SH) \
- include/linux/restart_block.h \
- arch/x86/include/asm/thread_info.h \
- $(wildcard include/config/COMPAT) \
- $(wildcard include/config/IA32_EMULATION) \
- arch/x86/include/asm/page.h \
- arch/x86/include/asm/page_64.h \
- $(wildcard include/config/DEBUG_VIRTUAL) \
- $(wildcard include/config/X86_VSYSCALL_EMULATION) \
- include/linux/range.h \
- include/asm-generic/memory_model.h \
- include/linux/pfn.h \
- include/asm-generic/getorder.h \
- arch/x86/include/asm/cpufeature.h \
- arch/x86/include/asm/processor.h \
- $(wildcard include/config/X86_VMX_FEATURE_NAMES) \
- $(wildcard include/config/STACKPROTECTOR) \
- $(wildcard include/config/X86_DEBUGCTLMSR) \
- $(wildcard include/config/CPU_SUP_AMD) \
- $(wildcard include/config/XEN) \
- arch/x86/include/asm/math_emu.h \
- arch/x86/include/asm/ptrace.h \
- arch/x86/include/uapi/asm/ptrace.h \
- arch/x86/include/uapi/asm/ptrace-abi.h \
- arch/x86/include/asm/proto.h \
- arch/x86/include/uapi/asm/ldt.h \
- arch/x86/include/uapi/asm/sigcontext.h \
- arch/x86/include/asm/cpuid.h \
- arch/x86/include/asm/msr.h \
- $(wildcard include/config/TRACEPOINTS) \
- arch/x86/include/asm/cpumask.h \
- arch/x86/include/uapi/asm/msr.h \
- include/uapi/linux/ioctl.h \
- arch/x86/include/generated/uapi/asm/ioctl.h \
- include/asm-generic/ioctl.h \
- include/uapi/asm-generic/ioctl.h \
- arch/x86/include/asm/shared/msr.h \
- include/linux/tracepoint-defs.h \
- arch/x86/include/asm/special_insns.h \
- arch/x86/include/asm/fpu/types.h \
- arch/x86/include/asm/vmxfeatures.h \
- arch/x86/include/asm/vdso/processor.h \
- arch/x86/include/asm/shstk.h \
- include/linux/personality.h \
- include/uapi/linux/personality.h \
- include/linux/math64.h \
- $(wildcard include/config/ARCH_SUPPORTS_INT128) \
- include/vdso/math64.h \
- include/linux/bottom_half.h \
- include/linux/lockdep.h \
- $(wildcard include/config/DEBUG_LOCKING_API_SELFTESTS) \
- include/linux/smp.h \
- $(wildcard include/config/UP_LATE_INIT) \
- include/linux/list.h \
- $(wildcard include/config/LIST_HARDENED) \
- $(wildcard include/config/DEBUG_LIST) \
- include/linux/poison.h \
- $(wildcard include/config/ILLEGAL_POINTER_VALUE) \
- include/linux/smp_types.h \
- include/linux/llist.h \
- $(wildcard include/config/ARCH_HAVE_NMI_SAFE_CMPXCHG) \
- arch/x86/include/asm/smp.h \
- $(wildcard include/config/DEBUG_NMI_SELFTEST) \
- arch/x86/include/generated/asm/mmiowb.h \
- include/asm-generic/mmiowb.h \
- $(wildcard include/config/MMIOWB) \
- include/linux/spinlock_types.h \
- include/linux/rwlock_types.h \
- arch/x86/include/asm/spinlock.h \
- arch/x86/include/asm/qspinlock.h \
- include/asm-generic/qspinlock.h \
- arch/x86/include/asm/qrwlock.h \
- include/asm-generic/qrwlock.h \
- include/linux/rwlock.h \
- include/linux/spinlock_api_smp.h \
- $(wildcard include/config/INLINE_SPIN_LOCK) \
- $(wildcard include/config/INLINE_SPIN_LOCK_BH) \
- $(wildcard include/config/INLINE_SPIN_LOCK_IRQ) \
- $(wildcard include/config/INLINE_SPIN_LOCK_IRQSAVE) \
- $(wildcard include/config/INLINE_SPIN_TRYLOCK) \
- $(wildcard include/config/INLINE_SPIN_TRYLOCK_BH) \
- $(wildcard include/config/UNINLINE_SPIN_UNLOCK) \
- $(wildcard include/config/INLINE_SPIN_UNLOCK_BH) \
- $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQ) \
- $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQRESTORE) \
- $(wildcard include/config/GENERIC_LOCKBREAK) \
- include/linux/rwlock_api_smp.h \
- $(wildcard include/config/INLINE_READ_LOCK) \
- $(wildcard include/config/INLINE_WRITE_LOCK) \
- $(wildcard include/config/INLINE_READ_LOCK_BH) \
- $(wildcard include/config/INLINE_WRITE_LOCK_BH) \
- $(wildcard include/config/INLINE_READ_LOCK_IRQ) \
- $(wildcard include/config/INLINE_WRITE_LOCK_IRQ) \
- $(wildcard include/config/INLINE_READ_LOCK_IRQSAVE) \
- $(wildcard include/config/INLINE_WRITE_LOCK_IRQSAVE) \
- $(wildcard include/config/INLINE_READ_TRYLOCK) \
- $(wildcard include/config/INLINE_WRITE_TRYLOCK) \
- $(wildcard include/config/INLINE_READ_UNLOCK) \
- $(wildcard include/config/INLINE_WRITE_UNLOCK) \
- $(wildcard include/config/INLINE_READ_UNLOCK_BH) \
- $(wildcard include/config/INLINE_WRITE_UNLOCK_BH) \
- $(wildcard include/config/INLINE_READ_UNLOCK_IRQ) \
- $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQ) \
- $(wildcard include/config/INLINE_READ_UNLOCK_IRQRESTORE) \
- $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQRESTORE) \
- include/linux/list_nulls.h \
- include/linux/wait.h \
- include/linux/seqlock.h \
- include/linux/mutex.h \
- $(wildcard include/config/DEBUG_MUTEXES) \
- include/linux/osq_lock.h \
- include/linux/debug_locks.h \
- include/linux/mutex_types.h \
- $(wildcard include/config/MUTEX_SPIN_ON_OWNER) \
- include/linux/seqlock_types.h \
- include/linux/nodemask.h \
- include/linux/nodemask_types.h \
- include/linux/random.h \
- $(wildcard include/config/VMGENID) \
- include/uapi/linux/random.h \
- include/linux/irqnr.h \
- include/uapi/linux/irqnr.h \
- include/linux/prandom.h \
- include/linux/once.h \
- include/linux/pageblock-flags.h \
- $(wildcard include/config/HUGETLB_PAGE) \
- $(wildcard include/config/HUGETLB_PAGE_SIZE_VARIABLE) \
- include/linux/page-flags-layout.h \
- include/generated/bounds.h \
- include/linux/mm_types.h \
- $(wildcard include/config/HAVE_ALIGNED_STRUCT_PAGE) \
- $(wildcard include/config/USERFAULTFD) \
- $(wildcard include/config/ANON_VMA_NAME) \
- $(wildcard include/config/PER_VMA_LOCK) \
- $(wildcard include/config/SCHED_MM_CID) \
- $(wildcard include/config/HAVE_ARCH_COMPAT_MMAP_BASES) \
- $(wildcard include/config/MEMBARRIER) \
- $(wildcard include/config/AIO) \
- $(wildcard include/config/MMU_NOTIFIER) \
- $(wildcard include/config/ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH) \
- $(wildcard include/config/IOMMU_MM_DATA) \
- $(wildcard include/config/KSM) \
- include/linux/mm_types_task.h \
- $(wildcard include/config/SPLIT_PTLOCK_CPUS) \
- $(wildcard include/config/ARCH_ENABLE_SPLIT_PMD_PTLOCK) \
- arch/x86/include/asm/tlbbatch.h \
- include/linux/auxvec.h \
- include/uapi/linux/auxvec.h \
- arch/x86/include/uapi/asm/auxvec.h \
- include/linux/kref.h \
- include/linux/refcount.h \
- include/linux/refcount_types.h \
- include/linux/rbtree.h \
- include/linux/rbtree_types.h \
- include/linux/rcupdate.h \
- $(wildcard include/config/PREEMPT_RCU) \
- $(wildcard include/config/TINY_RCU) \
- $(wildcard include/config/RCU_STRICT_GRACE_PERIOD) \
- $(wildcard include/config/RCU_LAZY) \
- $(wildcard include/config/TASKS_RCU_GENERIC) \
- $(wildcard include/config/RCU_STALL_COMMON) \
- $(wildcard include/config/NO_HZ_FULL) \
- $(wildcard include/config/KVM_XFER_TO_GUEST_WORK) \
- $(wildcard include/config/RCU_NOCB_CPU) \
- $(wildcard include/config/TASKS_RCU) \
- $(wildcard include/config/TASKS_TRACE_RCU) \
- $(wildcard include/config/TASKS_RUDE_RCU) \
- $(wildcard include/config/TREE_RCU) \
- $(wildcard include/config/DEBUG_OBJECTS_RCU_HEAD) \
- $(wildcard include/config/PROVE_RCU) \
- $(wildcard include/config/ARCH_WEAK_RELEASE_ACQUIRE) \
- include/linux/context_tracking_irq.h \
- $(wildcard include/config/CONTEXT_TRACKING_IDLE) \
- include/linux/rcutree.h \
- include/linux/maple_tree.h \
- $(wildcard include/config/MAPLE_RCU_DISABLED) \
- $(wildcard include/config/DEBUG_MAPLE_TREE) \
- include/linux/rwsem.h \
- $(wildcard include/config/RWSEM_SPIN_ON_OWNER) \
- $(wildcard include/config/DEBUG_RWSEMS) \
- include/linux/completion.h \
- include/linux/swait.h \
- include/linux/uprobes.h \
- $(wildcard include/config/UPROBES) \
- arch/x86/include/asm/uprobes.h \
- include/linux/notifier.h \
- $(wildcard include/config/TREE_SRCU) \
- include/linux/srcu.h \
- $(wildcard include/config/TINY_SRCU) \
- $(wildcard include/config/NEED_SRCU_NMI_SAFE) \
- include/linux/workqueue.h \
- $(wildcard include/config/DEBUG_OBJECTS_WORK) \
- $(wildcard include/config/FREEZER) \
- $(wildcard include/config/SYSFS) \
- $(wildcard include/config/WQ_WATCHDOG) \
- include/linux/timer.h \
- $(wildcard include/config/DEBUG_OBJECTS_TIMERS) \
- include/linux/ktime.h \
- include/linux/jiffies.h \
- include/linux/time.h \
- $(wildcard include/config/POSIX_TIMERS) \
- include/linux/time64.h \
- include/vdso/time64.h \
- include/uapi/linux/time.h \
- include/uapi/linux/time_types.h \
- include/linux/time32.h \
- include/linux/timex.h \
- include/uapi/linux/timex.h \
- arch/x86/include/asm/timex.h \
- $(wildcard include/config/X86_TSC) \
- arch/x86/include/asm/tsc.h \
- include/vdso/time32.h \
- include/vdso/time.h \
- include/vdso/jiffies.h \
- include/generated/timeconst.h \
- include/vdso/ktime.h \
- include/linux/timekeeping.h \
- $(wildcard include/config/GENERIC_CMOS_UPDATE) \
- include/linux/clocksource_ids.h \
- include/linux/debugobjects.h \
- $(wildcard include/config/DEBUG_OBJECTS_FREE) \
- include/linux/timer_types.h \
- include/linux/workqueue_types.h \
- include/linux/rcu_segcblist.h \
- include/linux/srcutree.h \
- include/linux/rcu_node_tree.h \
- $(wildcard include/config/RCU_FANOUT) \
- $(wildcard include/config/RCU_FANOUT_LEAF) \
- include/linux/percpu_counter.h \
- include/linux/percpu.h \
- $(wildcard include/config/MODULES) \
- $(wildcard include/config/NEED_PER_CPU_PAGE_FIRST_CHUNK) \
- include/linux/mmdebug.h \
- $(wildcard include/config/DEBUG_VM) \
- $(wildcard include/config/DEBUG_VM_IRQSOFF) \
- $(wildcard include/config/DEBUG_VM_PGFLAGS) \
- arch/x86/include/asm/mmu.h \
- $(wildcard include/config/MODIFY_LDT_SYSCALL) \
- include/linux/page-flags.h \
- $(wildcard include/config/ARCH_USES_PG_UNCACHED) \
- $(wildcard include/config/PAGE_IDLE_FLAG) \
- $(wildcard include/config/ARCH_USES_PG_ARCH_X) \
- $(wildcard include/config/HUGETLB_PAGE_OPTIMIZE_VMEMMAP) \
- include/linux/local_lock.h \
- include/linux/local_lock_internal.h \
- include/linux/zswap.h \
- $(wildcard include/config/ZSWAP) \
- include/linux/memory_hotplug.h \
- $(wildcard include/config/HAVE_ARCH_NODEDATA_EXTENSION) \
- $(wildcard include/config/ARCH_HAS_ADD_PAGES) \
- $(wildcard include/config/MEMORY_HOTREMOVE) \
- arch/x86/include/asm/mmzone.h \
- arch/x86/include/asm/mmzone_64.h \
- include/linux/topology.h \
- $(wildcard include/config/USE_PERCPU_NUMA_NODE_ID) \
- $(wildcard include/config/SCHED_SMT) \
- include/linux/arch_topology.h \
- $(wildcard include/config/ACPI_CPPC_LIB) \
- $(wildcard include/config/GENERIC_ARCH_TOPOLOGY) \
- arch/x86/include/asm/topology.h \
- $(wildcard include/config/SCHED_MC_PRIO) \
- arch/x86/include/asm/mpspec.h \
- $(wildcard include/config/EISA) \
- $(wildcard include/config/X86_LOCAL_APIC) \
- $(wildcard include/config/X86_MPPARSE) \
- arch/x86/include/asm/mpspec_def.h \
- arch/x86/include/asm/x86_init.h \
- arch/x86/include/uapi/asm/bootparam.h \
- include/linux/screen_info.h \
- $(wildcard include/config/PCI) \
- include/uapi/linux/screen_info.h \
- include/linux/apm_bios.h \
- include/uapi/linux/apm_bios.h \
- include/linux/edd.h \
- include/uapi/linux/edd.h \
- arch/x86/include/asm/ist.h \
- arch/x86/include/uapi/asm/ist.h \
- include/video/edid.h \
- $(wildcard include/config/X86) \
- include/uapi/video/edid.h \
- arch/x86/include/asm/apicdef.h \
- include/asm-generic/topology.h \
- include/linux/cpu_smt.h \
- $(wildcard include/config/HOTPLUG_SMT) \
- include/linux/percpu-refcount.h \
- include/linux/hash.h \
- $(wildcard include/config/HAVE_ARCH_HASH) \
- include/linux/kasan.h \
- $(wildcard include/config/KASAN_STACK) \
- $(wildcard include/config/KASAN_VMALLOC) \
- include/linux/kasan-enabled.h \
- include/linux/kasan-tags.h \
- /home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/../header/module_info.h \
- include/linux/module.h \
- $(wildcard include/config/MODULES_TREE_LOOKUP) \
- $(wildcard include/config/LIVEPATCH) \
- $(wildcard include/config/STACKTRACE_BUILD_ID) \
- $(wildcard include/config/ARCH_USES_CFI_TRAPS) \
- $(wildcard include/config/MODULE_SIG) \
- $(wildcard include/config/KALLSYMS) \
- $(wildcard include/config/BPF_EVENTS) \
- $(wildcard include/config/DEBUG_INFO_BTF_MODULES) \
- $(wildcard include/config/EVENT_TRACING) \
- $(wildcard include/config/KUNIT) \
- $(wildcard include/config/MODULE_UNLOAD) \
- $(wildcard include/config/CONSTRUCTORS) \
- $(wildcard include/config/FUNCTION_ERROR_INJECTION) \
- include/linux/stat.h \
- arch/x86/include/uapi/asm/stat.h \
- include/uapi/linux/stat.h \
- include/linux/uidgid.h \
- $(wildcard include/config/MULTIUSER) \
- $(wildcard include/config/USER_NS) \
- include/linux/uidgid_types.h \
- include/linux/highuid.h \
- include/linux/buildid.h \
- $(wildcard include/config/CRASH_CORE) \
- include/linux/kmod.h \
- include/linux/umh.h \
- include/linux/sysctl.h \
- $(wildcard include/config/SYSCTL) \
- include/uapi/linux/sysctl.h \
- include/linux/elf.h \
- $(wildcard include/config/ARCH_USE_GNU_PROPERTY) \
- $(wildcard include/config/ARCH_HAVE_ELF_PROT) \
- arch/x86/include/asm/elf.h \
- $(wildcard include/config/X86_X32_ABI) \
- arch/x86/include/asm/ia32.h \
- include/linux/compat.h \
- $(wildcard include/config/ARCH_HAS_SYSCALL_WRAPPER) \
- $(wildcard include/config/COMPAT_OLD_SIGACTION) \
- $(wildcard include/config/ODD_RT_SIGACTION) \
- include/linux/sem.h \
- $(wildcard include/config/SYSVIPC) \
- include/uapi/linux/sem.h \
- include/linux/ipc.h \
- include/linux/rhashtable-types.h \
- include/uapi/linux/ipc.h \
- arch/x86/include/generated/uapi/asm/ipcbuf.h \
- include/uapi/asm-generic/ipcbuf.h \
- arch/x86/include/uapi/asm/sembuf.h \
- include/linux/sem_types.h \
- include/linux/socket.h \
- arch/x86/include/generated/uapi/asm/socket.h \
- include/uapi/asm-generic/socket.h \
- arch/x86/include/generated/uapi/asm/sockios.h \
- include/uapi/asm-generic/sockios.h \
- include/uapi/linux/sockios.h \
- include/linux/uio.h \
- $(wildcard include/config/ARCH_HAS_COPY_MC) \
- include/uapi/linux/uio.h \
- include/uapi/linux/socket.h \
- include/uapi/linux/if.h \
- include/uapi/linux/libc-compat.h \
- include/uapi/linux/hdlc/ioctl.h \
- include/linux/fs.h \
- $(wildcard include/config/READ_ONLY_THP_FOR_FS) \
- $(wildcard include/config/FS_POSIX_ACL) \
- $(wildcard include/config/SECURITY) \
- $(wildcard include/config/CGROUP_WRITEBACK) \
- $(wildcard include/config/IMA) \
- $(wildcard include/config/FILE_LOCKING) \
- $(wildcard include/config/FSNOTIFY) \
- $(wildcard include/config/FS_ENCRYPTION) \
- $(wildcard include/config/FS_VERITY) \
- $(wildcard include/config/EPOLL) \
- $(wildcard include/config/UNICODE) \
- $(wildcard include/config/QUOTA) \
- $(wildcard include/config/FS_DAX) \
- $(wildcard include/config/BLOCK) \
- include/linux/wait_bit.h \
- include/linux/kdev_t.h \
- include/uapi/linux/kdev_t.h \
- include/linux/dcache.h \
- include/linux/rculist.h \
- $(wildcard include/config/PROVE_RCU_LIST) \
- include/linux/rculist_bl.h \
- include/linux/list_bl.h \
- include/linux/bit_spinlock.h \
- include/linux/lockref.h \
- $(wildcard include/config/ARCH_USE_CMPXCHG_LOCKREF) \
- include/linux/stringhash.h \
- $(wildcard include/config/DCACHE_WORD_ACCESS) \
- include/linux/path.h \
- include/linux/list_lru.h \
- include/linux/shrinker.h \
- $(wildcard include/config/SHRINKER_DEBUG) \
- include/linux/xarray.h \
- $(wildcard include/config/XARRAY_MULTI) \
- include/linux/sched/mm.h \
- $(wildcard include/config/MMU_LAZY_TLB_REFCOUNT) \
- $(wildcard include/config/ARCH_HAS_MEMBARRIER_CALLBACKS) \
- include/linux/sched.h \
- $(wildcard include/config/VIRT_CPU_ACCOUNTING_NATIVE) \
- $(wildcard include/config/SCHED_INFO) \
- $(wildcard include/config/SCHEDSTATS) \
- $(wildcard include/config/SCHED_CORE) \
- $(wildcard include/config/FAIR_GROUP_SCHED) \
- $(wildcard include/config/RT_GROUP_SCHED) \
- $(wildcard include/config/RT_MUTEXES) \
- $(wildcard include/config/UCLAMP_TASK) \
- $(wildcard include/config/UCLAMP_BUCKETS_COUNT) \
- $(wildcard include/config/KMAP_LOCAL) \
- $(wildcard include/config/CGROUP_SCHED) \
- $(wildcard include/config/BLK_DEV_IO_TRACE) \
- $(wildcard include/config/COMPAT_BRK) \
- $(wildcard include/config/CGROUPS) \
- $(wildcard include/config/BLK_CGROUP) \
- $(wildcard include/config/PSI) \
- $(wildcard include/config/PAGE_OWNER) \
- $(wildcard include/config/EVENTFD) \
- $(wildcard include/config/ARCH_HAS_CPU_PASID) \
- $(wildcard include/config/CPU_SUP_INTEL) \
- $(wildcard include/config/TASK_DELAY_ACCT) \
- $(wildcard include/config/ARCH_HAS_SCALED_CPUTIME) \
- $(wildcard include/config/VIRT_CPU_ACCOUNTING_GEN) \
- $(wildcard include/config/POSIX_CPUTIMERS) \
- $(wildcard include/config/POSIX_CPU_TIMERS_TASK_WORK) \
- $(wildcard include/config/KEYS) \
- $(wildcard include/config/DETECT_HUNG_TASK) \
- $(wildcard include/config/IO_URING) \
- $(wildcard include/config/AUDIT) \
- $(wildcard include/config/AUDITSYSCALL) \
- $(wildcard include/config/UBSAN) \
- $(wildcard include/config/UBSAN_TRAP) \
- $(wildcard include/config/TASK_XACCT) \
- $(wildcard include/config/CPUSETS) \
- $(wildcard include/config/X86_CPU_RESCTRL) \
- $(wildcard include/config/FUTEX) \
- $(wildcard include/config/PERF_EVENTS) \
- $(wildcard include/config/RSEQ) \
- $(wildcard include/config/FAULT_INJECTION) \
- $(wildcard include/config/LATENCYTOP) \
- $(wildcard include/config/FUNCTION_GRAPH_TRACER) \
- $(wildcard include/config/BCACHE) \
- $(wildcard include/config/VMAP_STACK) \
- $(wildcard include/config/BPF_SYSCALL) \
- $(wildcard include/config/GCC_PLUGIN_STACKLEAK) \
- $(wildcard include/config/X86_MCE) \
- $(wildcard include/config/KRETPROBES) \
- $(wildcard include/config/RETHOOK) \
- $(wildcard include/config/ARCH_HAS_PARANOID_L1D_FLUSH) \
- $(wildcard include/config/RV) \
- $(wildcard include/config/USER_EVENTS) \
- include/uapi/linux/sched.h \
- include/linux/pid_types.h \
- include/linux/shm.h \
- arch/x86/include/asm/shmparam.h \
- include/linux/kmsan_types.h \
- include/linux/plist_types.h \
- include/linux/hrtimer_types.h \
- include/linux/timerqueue_types.h \
- include/linux/seccomp_types.h \
- $(wildcard include/config/SECCOMP) \
- include/linux/resource.h \
- include/uapi/linux/resource.h \
- arch/x86/include/generated/uapi/asm/resource.h \
- include/asm-generic/resource.h \
- include/uapi/asm-generic/resource.h \
- include/linux/latencytop.h \
- include/linux/sched/prio.h \
- include/linux/sched/types.h \
- include/linux/signal_types.h \
- $(wildcard include/config/OLD_SIGACTION) \
- include/uapi/linux/signal.h \
- arch/x86/include/asm/signal.h \
- arch/x86/include/uapi/asm/signal.h \
- include/uapi/asm-generic/signal-defs.h \
- arch/x86/include/uapi/asm/siginfo.h \
- include/uapi/asm-generic/siginfo.h \
- include/linux/syscall_user_dispatch_types.h \
- include/linux/task_io_accounting.h \
- $(wildcard include/config/TASK_IO_ACCOUNTING) \
- include/linux/posix-timers_types.h \
- include/uapi/linux/rseq.h \
- include/linux/kcsan.h \
- include/linux/rv.h \
- $(wildcard include/config/RV_REACTORS) \
- include/linux/livepatch_sched.h \
- arch/x86/include/generated/asm/kmap_size.h \
- include/asm-generic/kmap_size.h \
- $(wildcard include/config/DEBUG_KMAP_LOCAL) \
- include/linux/sync_core.h \
- $(wildcard include/config/ARCH_HAS_SYNC_CORE_BEFORE_USERMODE) \
- arch/x86/include/asm/sync_core.h \
- include/linux/radix-tree.h \
- include/linux/pid.h \
- include/linux/capability.h \
- include/uapi/linux/capability.h \
- include/linux/semaphore.h \
- include/linux/fcntl.h \
- $(wildcard include/config/ARCH_32BIT_OFF_T) \
- include/uapi/linux/fcntl.h \
- arch/x86/include/generated/uapi/asm/fcntl.h \
- include/uapi/asm-generic/fcntl.h \
- include/uapi/linux/openat2.h \
- include/linux/migrate_mode.h \
- include/linux/percpu-rwsem.h \
- include/linux/rcuwait.h \
- include/linux/sched/signal.h \
- $(wildcard include/config/SCHED_AUTOGROUP) \
- $(wildcard include/config/BSD_PROCESS_ACCT) \
- $(wildcard include/config/TASKSTATS) \
- $(wildcard include/config/STACK_GROWSUP) \
- include/linux/signal.h \
- $(wildcard include/config/DYNAMIC_SIGFRAME) \
- include/linux/sched/jobctl.h \
- include/linux/sched/task.h \
- $(wildcard include/config/HAVE_EXIT_THREAD) \
- $(wildcard include/config/ARCH_WANTS_DYNAMIC_TASK_STRUCT) \
- $(wildcard include/config/HAVE_ARCH_THREAD_STRUCT_WHITELIST) \
- include/linux/uaccess.h \
- $(wildcard include/config/ARCH_HAS_SUBPAGE_FAULTS) \
- include/linux/fault-inject-usercopy.h \
- $(wildcard include/config/FAULT_INJECTION_USERCOPY) \
- arch/x86/include/asm/uaccess.h \
- $(wildcard include/config/CC_HAS_ASM_GOTO_OUTPUT) \
- $(wildcard include/config/CC_HAS_ASM_GOTO_TIED_OUTPUT) \
- $(wildcard include/config/X86_INTEL_USERCOPY) \
- include/linux/mmap_lock.h \
- arch/x86/include/asm/smap.h \
- arch/x86/include/asm/extable.h \
- $(wildcard include/config/BPF_JIT) \
- arch/x86/include/asm/tlbflush.h \
- include/linux/mmu_notifier.h \
- include/linux/interval_tree.h \
- arch/x86/include/asm/invpcid.h \
- arch/x86/include/asm/pti.h \
- arch/x86/include/asm/pgtable.h \
- $(wildcard include/config/DEBUG_WX) \
- $(wildcard include/config/HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) \
- $(wildcard include/config/ARCH_HAS_PTE_DEVMAP) \
- $(wildcard include/config/HAVE_ARCH_SOFT_DIRTY) \
- $(wildcard include/config/ARCH_ENABLE_THP_MIGRATION) \
- $(wildcard include/config/PAGE_TABLE_CHECK) \
- arch/x86/include/asm/pkru.h \
- arch/x86/include/asm/fpu/api.h \
- $(wildcard include/config/X86_DEBUG_FPU) \
- arch/x86/include/asm/coco.h \
- include/asm-generic/pgtable_uffd.h \
- include/linux/page_table_check.h \
- arch/x86/include/asm/pgtable_64.h \
- arch/x86/include/asm/fixmap.h \
- $(wildcard include/config/PROVIDE_OHCI1394_DMA_INIT) \
- $(wildcard include/config/X86_IO_APIC) \
- $(wildcard include/config/PCI_MMCONFIG) \
- $(wildcard include/config/ACPI_APEI_GHES) \
- $(wildcard include/config/INTEL_TXT) \
- arch/x86/include/uapi/asm/vsyscall.h \
- include/asm-generic/fixmap.h \
- arch/x86/include/asm/pgtable-invert.h \
- arch/x86/include/asm/uaccess_64.h \
- include/asm-generic/access_ok.h \
- $(wildcard include/config/ALTERNATE_USER_ADDRESS_SPACE) \
- include/linux/cred.h \
- include/linux/key.h \
- $(wildcard include/config/KEY_NOTIFICATIONS) \
- $(wildcard include/config/NET) \
- include/linux/assoc_array.h \
- $(wildcard include/config/ASSOCIATIVE_ARRAY) \
- include/linux/sched/user.h \
- $(wildcard include/config/VFIO_PCI_ZDEV_KVM) \
- $(wildcard include/config/IOMMUFD) \
- $(wildcard include/config/WATCH_QUEUE) \
- include/linux/ratelimit.h \
- include/linux/posix-timers.h \
- include/linux/alarmtimer.h \
- $(wildcard include/config/RTC_CLASS) \
- include/linux/hrtimer.h \
- $(wildcard include/config/HIGH_RES_TIMERS) \
- $(wildcard include/config/TIME_LOW_RES) \
- $(wildcard include/config/TIMERFD) \
- include/linux/hrtimer_defs.h \
- include/linux/timerqueue.h \
- include/linux/rcu_sync.h \
- include/linux/delayed_call.h \
- include/linux/uuid.h \
- include/linux/errseq.h \
- include/linux/ioprio.h \
- include/linux/sched/rt.h \
- include/linux/iocontext.h \
- $(wildcard include/config/BLK_ICQ) \
- include/uapi/linux/ioprio.h \
- include/linux/fs_types.h \
- include/linux/mount.h \
- include/linux/mnt_idmapping.h \
- include/uapi/linux/fs.h \
- include/linux/quota.h \
- $(wildcard include/config/QUOTA_NETLINK_INTERFACE) \
- include/uapi/linux/dqblk_xfs.h \
- include/linux/dqblk_v1.h \
- include/linux/dqblk_v2.h \
- include/linux/dqblk_qtree.h \
- include/linux/projid.h \
- include/uapi/linux/quota.h \
- include/uapi/linux/aio_abi.h \
- include/uapi/linux/unistd.h \
- arch/x86/include/asm/unistd.h \
- arch/x86/include/uapi/asm/unistd.h \
- arch/x86/include/generated/uapi/asm/unistd_64.h \
- arch/x86/include/generated/asm/unistd_64_x32.h \
- arch/x86/include/generated/asm/unistd_32_ia32.h \
- arch/x86/include/asm/compat.h \
- include/linux/sched/task_stack.h \
- $(wildcard include/config/DEBUG_STACK_USAGE) \
- include/uapi/linux/magic.h \
- arch/x86/include/asm/user32.h \
- include/asm-generic/compat.h \
- $(wildcard include/config/COMPAT_FOR_U64_ALIGNMENT) \
- arch/x86/include/asm/syscall_wrapper.h \
- arch/x86/include/asm/user.h \
- arch/x86/include/asm/user_64.h \
- arch/x86/include/asm/fsgsbase.h \
- arch/x86/include/asm/vdso.h \
- include/uapi/linux/elf.h \
- include/uapi/linux/elf-em.h \
- include/linux/kobject.h \
- $(wildcard include/config/UEVENT_HELPER) \
- $(wildcard include/config/DEBUG_KOBJECT_RELEASE) \
- include/linux/sysfs.h \
- include/linux/kernfs.h \
- $(wildcard include/config/KERNFS) \
- include/linux/idr.h \
- include/linux/kobject_ns.h \
- include/linux/moduleparam.h \
- $(wildcard include/config/ALPHA) \
- $(wildcard include/config/PPC64) \
- include/linux/rbtree_latch.h \
- include/linux/error-injection.h \
- include/asm-generic/error-injection.h \
- arch/x86/include/asm/module.h \
- $(wildcard include/config/UNWINDER_ORC) \
- include/asm-generic/module.h \
- $(wildcard include/config/HAVE_MOD_ARCH_SPECIFIC) \
- $(wildcard include/config/MODULES_USE_ELF_REL) \
- $(wildcard include/config/MODULES_USE_ELF_RELA) \
-
-/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o: $(deps_/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o)
-
-$(deps_/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o):
-
-/home/alish/Documents/HyperDbg/hyperdbg/linux/mock/../../include/platform/kernel/code/Mem.o: $(wildcard ./tools/objtool/objtool)
From 85a3a48cd22eab83c4a74023fe30b06a6e4c16d8 Mon Sep 17 00:00:00 2001
From: Alireza moradi
Date: Mon, 5 Jan 2026 00:59:33 +0330
Subject: [PATCH 083/323] delete not needed file
---
hyperdbg/include/platform/kernel/code/Mem.o | Bin 29248 -> 0 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 hyperdbg/include/platform/kernel/code/Mem.o
diff --git a/hyperdbg/include/platform/kernel/code/Mem.o b/hyperdbg/include/platform/kernel/code/Mem.o
deleted file mode 100644
index 07e6134f34bf2fe7f22dd666ddc1caf37788ad62..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 29248
zcmcJ23w&F}mG@k|?8J#<$4Q)oJmfqGgvgHbFd>OaWLdUFY{`-2Jb3JlEX%ftEEzpQ
z650}=G)cEhp)KW^g)MzR7ibBz1lo_L4=9xGSGHd%Y)dJnlmaa*>_;CzN}D}r=8SZ8
zECavoZwEYg=09i7oH=vm%*?%4H<$Z+yKIIbbTGuZqLkC95Qj!f>8&!kRjd$8#I-EE
zf@K4boSZI1&(Ys_qk*IEMkLmA^t(M*pUf}oIr^R6qc8V-|NBTtCC^^qz3`&eAGiLo
z_0+2fGlJj!Vz_z6;*VlU<@S26K9z47=sEf~Xfo1s^e^Syf2mse$BX{_MC-|78mRewTigAD1#g73mgiR%+{*to
z3qH?6Ur)xz^)ugspJt)oZs9ZAf`4ri{NyC~pC`f3u(WICZ?yF##=NOiCcZ6^O(#+t
z-7*u)Cx+b14;I{m2l9!WJC=7ZAKyO}cpGau{ctRq0^)qe9YZ!yvs7`ako>!{iNr=X
z#>w=Edn_@Q$sVxqB$3N5D6Xvx`Cu7cua3y8>8kNVl-K1Ne}VA1bk%qrCMpD7K3<^=
zAzl8|`;==ZwJ(v)B{S*v)y=J9D3Ob2ljC{J_a@VY{cbfj?y<~JA(e3VW#W59tdJkg
zWZS)|WNuWXlJP`3muTMAU*^FriQmFjV>Ivo;s
z8ZIoBk$raK9xPE*PMfn-GI#DlEV0QtEe>Zgou@jd&FR9DY76n=m0yyOB%V{)AnK!#
zpHpaU6AfvZTDwNfJ|a_X>qO%%keZ2Hrc8YuVkNwcjWWj0x<>4;l-1cY|7}P+>twsm
zI@y*iaV@Ps9V$BwX=RwKp
z>bg8!TGwDf!}D`d0AuGOTh(0qmvqIdc~$pfvE))UUuFzoUbVpfWRYfJ^@AmvMKWU(
zOR8qP3KVPi#ZscGZW@ZR^eT*yw^)o7s%qbX^fF|m1glzQ$2zjGx^^-2Qnp(?Vp0XoIRKtG|P_fgu
zx*mi!r93JFCnsPXe|MX=)l8Q9RX&n)>G;y$ma;9@Z?hBV}!MqwTM7oq{z~66_c|
zjDAW?YqS}!NU|o|GFWjWS(B`xDVl7?3@E9sTVV@piWQ1NQm?S#a8?t)6*i+4sjFLT
zc}=a7&@76mnr*QerX*W$yG4_&mo+rSdYkbvq^R3$dqPueRur&1KDQwi$N<6|P^R
z3YAxTjWHKi6|3@O+GdIEGVPGDQ^qbe*fSP%OkS62mBy*=Lf78+AXh!E|C~e4mg4Bn
zTVAHKiJq@pKv2TH+ZptyUzpznCeJ1{u$i@oX8-k#VDp
z=gN4VjMeVrG?`u?yj;fUL4{Z$W3{t5Q>ItS_$(Q#
zRR(>k5X~0*omp%Auv~|eYR_7$(RlZLYl%jjATu8|)`A<74Xb$41|*Hk+RT-<`1{tS
zW^Q*}S&`Jj&NgT~Qcj};nsg+^+@AnF{xzWQnJMGxqV7KcS&y1rj?ra?WGmBG8*`MG
z0vvlk%jsGUlj6O5U$W@g^ISa@$yF!ktTHap#dVgB&B+;;YrIUyCC-gkRy|gcM2hx4
zQ&D-Vx!1i^&Vg)SmCpO?>EJKlyQ8v{JfKX|R9C&5f6TG{eOahpJFfuUp4MgD^uF{H
zn{0!s;&L(93zxf~z8usVQIEXv%pj@}odRB71xfg0O*l=|e@7EeL6i~xMH4O)^}o}E
zQxPo@%2sO1TR9sWTR6?N5!Nk-w5|CPnc>=w2u@rX2?f`?M$6&Tk-ApKb&_P!MGFpV
zUMo~B+pk?WA(TO-oPibG7(H){0dS(o?_4aFC3YK@JcA`T2^?6Wq>#l^Wbs?&6*oX-
zvG^uALe;QN%Fe71O$fJOgkgcY2;MH9q?yF;S#kQ+u?%8J1LN?iKu!lc(fDEje26ZC=9+sm|qs;fXo=fOv9%dxj8q!R8?+d5Q<
z&TN%)QXU=swq_*#Sdr9kYcG-dZ2=@*aIWlPkF5?DA!_8fu^e+JiZzcL(s)%P_ZxL+
zcnhRopc;pb)wrnsx>)0|;Y0SS#$jVuGcuPqjojxg_%@{N)4}ex;t9!p-s&d-@FIo#
zybdWx2WA$!Y>n8GJq@Ii6CfLfX1lP;HVdbUDyg<+rdTsmt(h8IgY=m`*}!q5(T-DJ
zu{ds6nBQ+$m_ML0!h^Li6cZ|orwtWg@YMF2@@NGZ5C`Rm1PF`)??qui90VwaIh4})
zg_M_`8q!!@N=x`kx+1-93!zpEj_vNG2HP2K$^(iJ0frak0bGcFhX0K0eSqOf;vZ-D
zDZ(#ic#Ll3WElQ5b_BwQ)upJn`q>IN%J4Wi84Ne5OOd{flyNJ=pCx5~nc<6R0Dr~s
zV|X(Z!f(~3$p0Ra^G$|dGerS^VE9hT8#Mk{9mnNsFl#WVon^^ReolH*CxQ}wInk@L
zKnZ_>`m6TyCH!rYrlkjM
z`FIP%Jv6@m%J5rBKld>_Nc#B}!_^sBh#xZiA4r~GF#LI%*KaZWVwx9r+NJApf12c<
z%WzGAM)-N%j|Ec$)Z(GFT~4m?
zO?ogH{t7+VOEBC<{Yo+1B)uJAc%J6hQHCEP`9I0<-xK}y49}AN+`{lxYw83m-`1Lei3mN_-`Jbf>
zuO|CEli^pAoGlE0iS)Lf;dhdLHZlBHqz5mCtq=zWO$En>RhF?eH
zelf%Uo#@9IzKG=6$MAOYdmm!>UBqAeAw7;CBl(Xo`r~Au*D(Ag%72F8TWMTwW_UH}
z;dX}KNca~S-bMPqo8cSDpB!iS!$g0A;nz|A5r%uHzu#l{3ewLH7=AU)>!%n#h4lPW
zhA$vJJjd|qWX~@$d=}~X6^1V&Ip1LT37YS3GyGG8zr*ma(7aHO!bH5
z{4wh9M;Jbp@*idRAj$c0hL4b+zn0^`!dMCs2t_y~H8NP|^>H&t|N%Q()
zhJTjiJjw9?qW(U{@cq>8zcIX@^!7Z%+i6^0Vz`t1?Q0BwndEts;ay~(e`NRpl2iK+
zJ@0nXes2cx)A-q>|Je-hB6&_@`0r?5>;13h^L3gRD;T|Ahdc~FMslxXxEe(v{0v`2
z{oTg!&4h1f`0J$qoecja$$t^Um(sY5GyECar|n~Sn8y7>47U^gRSeJ2{Q3;Tqon7X
z8U6;zb34P&)9V_;myw;{&F~$RKhE%lq@NQEf0+99GloAya{iLxn@FDDG2BOX^(Tg(
zO?;|o{%QLuko`<&c#itj!0;zY&Up;~8`10gUYh^2%;?vX
z{d6$=IU3&qhQCF2ej&q85kAK7ACi7@41bmE>Hxzx(KsGr_`8(9mf_zfJ$#nouaX{a
zW%#FPLVk|n_0(VON44G-&^X@9=RCq=Lt>!0NLTQ
zjQ(Ac|9OrR|2G-_4$1jPhR>qB)~jy!E^60C^)$YY?5CRHJ1Jkw@TDZ@EQZe`{_`2$
zOZ0AruOUCbmf)^iPalKXv;w!@ouL^A(2wtF~vt
zaX9eED<4O}^;t%L3C;IkGx}Db#bA(LwVaDd57P+O{E3a2&FJr-0ym>q+=V!k(Z5Un
zVH3mGQ-v_Y1LT*I4F4MGGsEyd(0COXzL)fQgyCCB{+k*8Nt%zhG5k5QpNANJfcQVl
z@KdDE|6+KO+MPn*kP3}H9J<;x6!|APfb8FjmH3y%DA
zG`=Ydj>$0mVHjt4P{E==xYp+)OhCBVLXZ46kp6FD^e-SWgs(Gtt^bo29FwDxT8Qs4
ze2DNTEI79NA`Q&{v*4Kg2+=>o@PmXuXTgz=*8j^E9Fw0R`qvnKE#dk+gyV~%(6(2+
zZJ|g0TK|8w;F$a}{9!PtAKFg7s9@o;;K*ksjpGc4XR#uLxeWgz*;Nz6*CI0rEeszf
z|Ip6x&l9~qe_(S6T}|zV82!sM-_K|G9^x~^@IypDPPn$WH&93j*E9OPwBNXy(I1l3
zLVVLgk9vNL@RJPxCgG1VKL0}a&n!4TI@m+_YZe^+%w2?^vhc^Q7WaR&p6h;TKhs3G
z)~B|^vn)8uuYa%6!tgh#-7O4PZ*vOaW4QK*y@YFd^gd_6LXTac?udj1M|oPXB7`Kv
z@r4fzS%z;Ud>_L%5Pmtsy9vLF;XcAYK{#en|62a*E%a9TKWD*Fe*L`piwqAFe|`T9
z#|7zQgx}BTFCzQ|;aZ+Ep$>+p8SYcCc+G;_36mF^ADWN$d-}Nq;z+-m>MS98Z9i+t
zKdfQ+LzLgbaQ!^4kKsFMUSGs;&F5lBTkO+TOf$rFrT%lT7=-$>)}62rIC{@kGbh~|$kn_;MB_$P?o&2TNBhvAE9f2r?t
zYyR8FzjZVE8MMwu8J;CQ#~7~fi)9#YVnYx<%y2E|#~H5Wyn*3bo-Z)GgY0A`}i35kt0o1Ev=1i&Wj0b!f_5%@Kh!znQDTqbI2&aJ`Q
zJ+3*5vPMx>Ne;lS+F{sh&uyxzX>tS_fD@D(P;<(3ByXAqoSTe518(%-X0x@e8dfpuyJoU`Hdo8zs3(=89KsgHcnX*<-aC>tuVzrlwWrG&xcBx*4LT
zsTx!Dr_0XFbQooFs`eV1pb+=1vwDmV8YU$fY?&uJ54~D3Z}U8)J&lRHpa~wMF2G0A3!6cw8=Gu6
zEGy;(8r)5GtguLSx~SsC4L}9zlS*%@Lkc&wBda!5VO`Z$lP*BLHn~>Jt2bs=ZJm2i
z3bLfpD6+93o2ApG!j|D>LlfBbawV!1DA2G4Iskj)W+D63w2)XLxB@yW&d?>cO-(zr9*48U-%)IA4TV6146E!7@l|RZFzG=?o9Cr#Q5#L0P?F|)V|i^u
zjeYTHi?IuJz^#Rh6wXSkVa#DDTTchdHL?-1nJx2h7}kOrRVy3Cv0P`hDtObs0Za%x
z(I#yhT-e#=!zMd{a&0KbwUW;P(=D>6PHp6*R>f}u5qX8p3ys!>uyLZJW}tCb&F-3=
zayqq_qt2bs%X6uNG?FpWkv8nvR^HM;#axyw)-tf=Jhg7LZmd|x--H7tB3
z8r7)gE79#5)qE$QQZzUg7{YPLxD~nIYTRQO5yw5oL#h$SLy!XeA>(_NR;4_3X8?Xi
zz_`#67?1)v28N9bi6!)SRfo~<=;#J+-Em08hm8ol=;>Ix$}#oiH0-}6i5bam6>zXo
z$#hajsbm$@!hKlj%~Y8Y*58mSM8)LR<@+|Y1j+)vFNUEbeu~}$7d@7aIj1?6E_Ezh
zB^86hRe2MHju$!*c>u~U)|Xp@Jk!%>W2Rl!p10lb3($!!?zavBXT
z+Y(j1SZ2pEJC@mMamqkgf)NDV=HQm%qnLqky1EqcyD7ht;UJO>%?ww+qyt~gaDDD+
zW4J!A$ln`4nU-f4@z?hsHLicg(Zl%si0Jzm{xsqGK91(|bHep|z#4y%aP18={yO0?
z#{bWR4>Mf;?iR4U46h{%9A~(j@B+iv6Rz*eXnD>h95xs-XuOwjJ)RoBi14F~ew6TQ
z7@jBm(+t<|sou!&PZIqxhTll|=NNtm;a_6--Gpnq)AAoD{60qi2;pC6_@jh>gW>;1
z_(_I8L-?Z%|0Ur+VEAtd{}ID~Pxwz5{s+SUgW>u;*ykBOiw?cNX83%@oef{33+3VdM8i;=X_GZ+f@d3()1e_trP8wmqJuP++d;Wxd(P*8Mr_6K}s7u4;K
zh9e?4(C0Nn(H?&o*PZ?`{!86fX6qoJs`S9Avl+`iUUck9~bwau&Dp0RYs
zlglMkVr*=G5m}>BYlqUAOI0$q4@=wDsoaLuYd4&&lEdSkY$ESTracN8&nAWw*=%CS
z1KN%6^$dc-hho_S?Q4NPw>JsovHhN0B3~E>AYVu)+D8)UL^c^${IDh(1LWfHeT+n^
zU5y~*lj)&kHWANz2D7nre6&43T1fBpB=*C2rY9DISR=_ClvOB-=R7E968khsC^_|0PTCA#t!7r%294A
z(Vj`t;%tx#fnfq5o`EmCWcNWAaGoGV3`B)KwaY1!BOca*+-PzbOwLM~0h27{6Y0Vj
z=H<-e8bxOSjzRhZaIfG(wAs1w`!3*Qf}u{oiT(sU$IeiATOimS@q^DrFNWR`T_Ms%
z{Jv1I(;MDxqL+z!J9_=)?y@fw3`Ijh@S^>J&gkxbzuD*AC2RJ2JIsM#*zfE02Kulf
zIJ{w)3d!LE<~S%IF8aGW!Gl6;+t3SkioIjXM
zqEUYkI_&M2BAVy>!y)BzyFy`qpgSngu_lJh@dP-P^av~z3W~VpmMTWiMfnt}@
zDT89bZ-EojoDwgHlLDpnU+V!9p^XPo_=yGE#i}04_qR50C;UV`kFvgot`0
z+i-zH2OSgzu*k7-GdX1KVb~vug0yP+2%0c-fuQW^Hh(zi??r)p+sthpC{uB*(b@?}w7Ok$5
zQ(i6F!H^mD20LL5J>M_-K%G(luBZV2lGrbH^hJE$U~#0t;QGU%Zs@1fYorI(PP4zS
z6NarH%u_9J;ZT1BMhiTGjI@B#W+TynZ`*DYS7z8Dlo@T<-{l?Xjj93E>vY+oEyj`~
zS=ez%!z%v@77P^l-*Na57Py&&8G}VKn>Sn6td$xm*R^G$=r*OUjLwhH
zqD-5OzR(Uibw_>%pxJD5x~KdIq}vC{Cw{^n}7uFd&%xf(BA*nw-M-p8
z_NY;n;+Lj26z{;*h}Ihu#;b4QI0ho2URZZJQ7-FNI-eQ@e>I%RiSgu+vZcMl@HM*P
zb{EbI!S14#)y5o013pA%j%UHJarjHUP~To#v%Zy91u;>NphIg7`n=nk^=nZ!9C6bJ
z`*}6L2VimQ>o@xXL9jnC_IM1IeG$nNvf%dzllh$JOyppFh~b_M>!T|0IN;v_n|{(o
z*+h$a18~5=!%6XYVfy+9EN+n|E3FJ*%|5GPihX0|aIBEZLpS7!LNBUPG^Ih1Lk_l_
zJSH4JI$`-2xUYiaQptv8F$!IpWRSt7TDloAh;tecsS~A-aKyje^uhV2*V_$a4uVO8
zhXoCEq|RL(0q`H*T~dPHKmN4nynu(-hC
z$_pFvG%UX~zGWx4(p-T#(&t~(1`4O691Kc00B*)KV<|jv9x#VspDlL8Qs4&AV@|>k
zl#Lq2{+L~`5KE7wjRW>W;J*gUE}!Y|>i`?qxnQ__k&zSIYI~N?39ebcrhLPo);w9I
z*mN*dY&@GwTw=y^YOiC0DdI@sBCm9w$`)Wo=khp@aKftLD~&zoWeajN!Xdp;(%TF*
zE_%z?-yMKcs#$<<{^|7>G*V{QdI8aX+Dyf=BW1fhbP?pC_^ix}_b{vo?D60*j&?ON
zJPz&31DD)1fQ6tLkRQ-9A&b}rmvrz-wtmtbQx4CCz5sJ
zBo{6dHamSG>o!~+%kli*AC_BetgOAB+F;5}kep1#n;x_o*n3cJjElOHb2(S^dbGB{
zJT6L9^y6exdgCo^7+MBDBqhh4F1aDgQiDSgQOh-qTPG&F%rM*-F(catypbNfbphMG
zaLDv_Md8K??gg-E+Vm;Mp{*QEX~JAZYPkud{SM9DGLtDDEojq`81rRdj~&ayQ85nV
zto??v#fe)+Fvty}FEJK@T~*Oian#TO!yXA`fE{u)08?^2K3*_~>eqZS%CKqZ{
zqufc+6w~v|*BuTG^b0uT#Vq%($fNjzu&37(4IF+h9!r~fIO6B?DRrwW0ivK69LlI8
zh}`TYbFkG-!!8YufR@45XAgPggVS#=0eeSjzi={(48SIW_Dk0LZ*qGr*B5#Ft~byJ
zyTP?c$$7#{QLUhpaH!ssR)iaodNKV
zxTVHBJ8n6!;7SLAUE$FAAO*TzYcH)T>+T?bRd(9ZW}y8ctay05v>ei8&-J#J<`SH?
za0`a!4aNs|0m1n3)4fIOkD{N}(`F#3PbGT9a5C&Jx@}yfeQ3n;U?uggwstU|We%o<
z52galfJmif5mp?t+aL6Y;a(`3cmVFUhKr&^l=~!)5$NmlcLIT5D1*Tbm9`J-c2Je}
zhIURk2*7O$5DRyZEu)#SL`w|6uG`X?i5JG;Y?5o~fqM$s&cTtEQA`X$0&XT1_P30|
z&4HHYX8b>yj;9JkiI(wHED!#2tVJDpTjFqUvISJx92YHxT(%{bjjPI@QP?8D*MB{2
z%^R9md)BvlvijRM
z8-_zE7i}06ui{)PHrPB0cNp@XRH|)Vd2&3HOYWB&+#D3(Q6H~GKUpl%j#B|9Yz=`7
z?%56{h9LpQk;|mPdh!PlF5dMgb{as+YzFRX<}z7G<1>b_SZ*&Q$JCKGXXaHN7{c0O
zDUeCLWdI3KAjJA;gYx3O4K6u2M-0K0ZWuu7l0qgQvs{OfT76c!n2<*$$kA#q?<=N9
z02nM_toA{WK#vKR&GPOQ+&6_sp4~p*M)w&5gK($2Ku--kZ3UTK^N}^{npdwolVEzR
zBR?O9Uye6~vA=FwRrR&>TymWzpz990cGcE>%+@pA)$s{?=T(mQ)bDou(EAwF)9>Bm
z`wG_3Ntta}uWP!?dzJmd$G!^{2w!F;hV%l;%XWOzU0ui=un$V7>*Mo3{j3UEx-o*l
zpJPQ8ET11+>30#X=?_uf`h3(%e}vJ$KzZx)NGttU8NGggnBWN)l*1w3IyIpH0K0mJ
zVnUG}-t4Fp>}8r!6!`jsVZo2ZC!9O(#{sq9X-9vE2(5Wus9=KL&_kO^U{sp4b^8ue{SEBz8(QEtD
z^iNDe{}j=~MF!3DH;}`2#~J?r3CDUEG(Emeg7o;m6{j`AdVaRtyRpLTSZysT-5;`|
z)_Y%N|KCSYE8oJRk~LkX1ox*~}@7!`BKL^S6PjKO0*xaPC!I;vCIL@L&tho`Bc86VGy
z=D}P}G-orILGsq-4Uh#Q;HV!5n)-p5iH`%5a6_6X)YDNDL=?@i9O2D6Rn$C`fMrK6
zNzjf=#|8(piG4Z;Rqz%BandAkZ+ir}s~Xw#$V3|0k0dk!h^vzb!(j>X_(T=N6wPUP
zUfK-L!qt<2w)d*H7gRx@!CZ%Ioz^
z_q5;?h_)_hE&*Zeeoi11l-)%dNH*B)5o
zpC?@V6^*|@xSOsTf0goDUX5%2bOxiJNB)E0|MA5QHIbEkXVAiBE2a7SmRc{G6uj-@nt0
zb^R+fKvyllmctJ?rmtdjCrKbquk)IGDNx&+#e}d}ka|V#f
zz-gZblw(NvD%IEDk(HGz&^`rNCHY_Rsv6a#e>Y@t&T;vF1sJx!8vd-|O`Mnz_RLXN
z9cx+j_4iOvseb>3s>XWqW0Tc?car*7o2tetU6HQ3U46xWqd}*wr1w#MD~4%Ki{JO=
z7}A}f`lw%P(E8ID{<|ra^nYZJqBu!}Zn)yO5$fN8QE7~^J!?RomFn+EC@THEa9xMj$Ne8-ybs^NgC_*N-%`0!`(&14
zJyfowzo)4FeyZq(>r(jR`s9G4Q~he}90WJ~Er&ne{(l2o
CR+0<=
From e229d85baa60b5a6f1517852a7019254e65995fd Mon Sep 17 00:00:00 2001
From: Alireza moradi
Date: Mon, 5 Jan 2026 01:45:49 +0330
Subject: [PATCH 084/323] change make file for include path be dynamic not
hardcoded
---
hyperdbg/linux/mock/Makefile | 9 +++++---
hyperdbg/linux/mock/mem.c | 36 -------------------------------
hyperdbg/linux/mock/mem.h | 16 --------------
hyperdbg/linux/mock/mock.c | 3 +--
hyperdbg/linux/mock/module_info.h | 13 -----------
5 files changed, 7 insertions(+), 70 deletions(-)
delete mode 100644 hyperdbg/linux/mock/mem.c
delete mode 100644 hyperdbg/linux/mock/mem.h
delete mode 100644 hyperdbg/linux/mock/module_info.h
diff --git a/hyperdbg/linux/mock/Makefile b/hyperdbg/linux/mock/Makefile
index 36415860..cfee9673 100644
--- a/hyperdbg/linux/mock/Makefile
+++ b/hyperdbg/linux/mock/Makefile
@@ -1,10 +1,13 @@
+KDIR := /lib/modules/$(shell uname -r)/build
+PWD := $(shell pwd)
+
obj-m += mymodule.o
mymodule-objs := mock.o \
../../include/platform/kernel/code/Mem.o
-KDIR ?= /lib/modules/$(shell uname -r)/build
-PWD := $(shell pwd)
-EXTRA_CFLAGS += -I$(PWD)/../../include/platform/kernel/header
+HYPERDBG_ROOT := /home/alish/Documents/HyperDbg/hyperdbg
+
+ccflags-y += -I$(HYPERDBG_ROOT)/include
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
diff --git a/hyperdbg/linux/mock/mem.c b/hyperdbg/linux/mock/mem.c
deleted file mode 100644
index 8f22ccc4..00000000
--- a/hyperdbg/linux/mock/mem.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include
-#include
-#include
-#include "module_info.h"
-#include "mem.h"
-
-void* MemAllocKernel(size_t Size)
-{
- void* ptr = kzalloc(Size, GFP_KERNEL);
-
- if (ptr)
- printk(KERN_INFO "MemAllocKernel: Allocated %zu bytes at %px\n", Size, ptr);
- else
- printk(KERN_ERR "MemAllocKernel: failed to allocate %zu bytes\n", Size);
-
- return ptr;
-}
-
-void MemFree(void* Ptr)
-{
- if (Ptr) {
- printk(KERN_INFO "MemFree: Freeing memory at %px\n", Ptr);
- kfree(Ptr);
- }
-}
-
-void MemCopy(void* Destination, const void* Source, size_t Size)
-{
- memcpy(Destination, Source, Size);
-}
-
-void MemSet(void* Destination, int Value, size_t Size)
-{
- memset(Destination, Value, Size);
-}
-
diff --git a/hyperdbg/linux/mock/mem.h b/hyperdbg/linux/mock/mem.h
deleted file mode 100644
index b170ea5c..00000000
--- a/hyperdbg/linux/mock/mem.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef MEM_LINUX_H
-#define MEM_LINUX_H
-
-#if !defined(__linux__) || !defined(__KERNEL__)
-#error "This code must be compiled for Linux kernel only"
-#endif
-
-#include
-
-void* MemAllocKernel(size_t Size);
-void MemFree(void* Ptr);
-void MemCopy(void* Destination, const void* Source, size_t Size);
-void MemSet(void* Destination, int Value, size_t Size);
-
-#endif
-
diff --git a/hyperdbg/linux/mock/mock.c b/hyperdbg/linux/mock/mock.c
index 1e47c111..29d6f597 100644
--- a/hyperdbg/linux/mock/mock.c
+++ b/hyperdbg/linux/mock/mock.c
@@ -2,8 +2,7 @@
#include
#include
#include
-#include "module_info.h"
-#include "../../include/platform/kernel/header/Mem.h"
+#include
static void* g_AllocatedBuffer;
diff --git a/hyperdbg/linux/mock/module_info.h b/hyperdbg/linux/mock/module_info.h
deleted file mode 100644
index e5c82f7a..00000000
--- a/hyperdbg/linux/mock/module_info.h
+++ /dev/null
@@ -1,13 +0,0 @@
-// module_info.h
-
-#ifndef MODULE_INFO_H
-#define MODULE_INFO_H
-
-#include
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Alish");
-MODULE_DESCRIPTION("Linux Kernel module Mock");
-MODULE_VERSION("0.1");
-
-#endif // _MODULE_INFO_H_
From 8f978589875c0d6ccf1e8f1a623e4f0dfe5ba374 Mon Sep 17 00:00:00 2001
From: alish14
Date: Thu, 5 Feb 2026 22:14:22 +0330
Subject: [PATCH 085/323] refactor(Mem.c): cross-platform memory API and fix
build system
---
hyperdbg/include/platform/kernel/code/Mem.c | 136 ------------------
.../platform/kernel/code/platform_mem.c | 111 ++++++++++++++
hyperdbg/include/platform/kernel/header/Mem.h | 50 -------
.../platform/kernel/header/platform_mem.h | 48 +++++++
.../{module_info.h => platform_module_info.h} | 2 +-
.../platform/kernel/header/platform_types.h | 58 ++++++++
hyperdbg/linux/mock/Makefile | 16 ++-
hyperdbg/linux/mock/mock.c | 80 +++++++++--
8 files changed, 298 insertions(+), 203 deletions(-)
delete mode 100644 hyperdbg/include/platform/kernel/code/Mem.c
create mode 100644 hyperdbg/include/platform/kernel/code/platform_mem.c
delete mode 100644 hyperdbg/include/platform/kernel/header/Mem.h
create mode 100644 hyperdbg/include/platform/kernel/header/platform_mem.h
rename hyperdbg/include/platform/kernel/header/{module_info.h => platform_module_info.h} (89%)
create mode 100644 hyperdbg/include/platform/kernel/header/platform_types.h
diff --git a/hyperdbg/include/platform/kernel/code/Mem.c b/hyperdbg/include/platform/kernel/code/Mem.c
deleted file mode 100644
index 8ebdd4a5..00000000
--- a/hyperdbg/include/platform/kernel/code/Mem.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- * @file mem.c
- * @author Behrooz Abbassi (BehroozAbbassi@hyperdbg.org)
- * @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Implementation of cross APIs for different platforms for memory allocation
- * @details
- * @version 0.1
- * @date 2022-01-17
- *
- * @copyright This project is released under the GNU Public License v3.
- *
- */
-#include "../header/Mem.h"
-#ifdef __linux__
-
-#include
-#include
-#include
-#include
-#include "../header/module_info.h"
-
-void* MemAllocKernel(size_t Size)
-{
- void* ptr = kzalloc(Size, GFP_KERNEL);
-
- if (ptr)
- printk(KERN_INFO "MemAllocKernel: Allocated %zu bytes at %px\n", Size, ptr);
- else
- printk(KERN_ERR "MemAllocKernel: failed to allocate %zu bytes\n", Size);
-
- return ptr;
-}
-
-void MemFree(void* Ptr)
-{
- if (Ptr) {
- printk(KERN_INFO "MemFree: Freeing memory at %px\n", Ptr);
- kfree(Ptr);
- }
-}
-
-void MemCopy(void* Destination, const void* Source, size_t Size)
-{
- memcpy(Destination, Source, Size);
-}
-
-void MemSet(void* Destination, int Value, size_t Size)
-{
- memset(Destination, Value, Size);
-}
-
-
-
-
-#elif defined(_WIN32)
-#include "pch.h"
-
-/**
- * @brief Allocate a contiguous zeroed memory
- *
- * @param NumberOfBytes
- * @return PVOID
- */
-PVOID
-PlatformMemAllocateContiguousZeroedMemory(SIZE_T NumberOfBytes)
-{
- PVOID Result = NULL;
- PHYSICAL_ADDRESS MaxPhysicalAddr = {.QuadPart = MAXULONG64};
-
- Result = MmAllocateContiguousMemory(NumberOfBytes, MaxPhysicalAddr);
- if (Result != NULL)
- RtlSecureZeroMemory(Result, NumberOfBytes);
-
- return Result;
-}
-
-/**
- * @brief Allocate a non-paged buffer
- *
- * @param NumberOfBytes
- * @return PVOID
- */
-PVOID
-PlatformMemAllocateNonPagedPool(SIZE_T NumberOfBytes)
-{
- PVOID Result = ExAllocatePoolWithTag(NonPagedPool, NumberOfBytes, POOLTAG);
-
- return Result;
-}
-
-/**
- * @brief Allocate a non-paged buffer (use QUOTA)
- *
- * @param NumberOfBytes
- * @return PVOID
- */
-PVOID
-PlatformMemAllocateNonPagedPoolWithQuota(SIZE_T NumberOfBytes)
-{
- PVOID Result = ExAllocatePool2(POOL_FLAG_NON_PAGED | POOL_FLAG_USE_QUOTA, NumberOfBytes, POOLTAG);
-
- return Result;
-}
-
-/**
- * @brief Allocate a non-paged buffer (zeroed)
- *
- * @param NumberOfBytes
- * @return PVOID
- */
-PVOID
-PlatformMemAllocateZeroedNonPagedPool(SIZE_T NumberOfBytes)
-{
- PVOID Result = ExAllocatePoolWithTag(NonPagedPool, NumberOfBytes, POOLTAG);
-
- if (Result != NULL)
- RtlSecureZeroMemory(Result, NumberOfBytes);
-
- return Result;
-}
-
-/**
- * @brief Free (dellocate) a non-paged buffer
- *
- * @param BufferAddress
- * @return VOID
- */
-VOID
-PlatformMemFreePool(PVOID BufferAddress)
-{
- ExFreePoolWithTag(BufferAddress, POOLTAG);
-}
-
-#else
-#error "Unsupported platform"
-#endif
diff --git a/hyperdbg/include/platform/kernel/code/platform_mem.c b/hyperdbg/include/platform/kernel/code/platform_mem.c
new file mode 100644
index 00000000..531252a0
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/platform_mem.c
@@ -0,0 +1,111 @@
+/**
+ * @file mem.c
+ * @author Behrooz Abbassi (BehroozAbbassi@hyperdbg.org)
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @author alireza moradi (alish014)
+ * @brief Implementation of cross APIs for different platforms for memory allocation
+ * @details
+ * @version 0.1
+ * @date 2022-01-17
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "../header/platform_mem.h"
+
+/**
+ * @file mem.c
+ * @brief Implementation of cross APIs for different platforms for memory allocation
+ */
+#include "platform_mem.h"
+
+/**
+ * @brief Allocates zeroed memory
+ */
+PLAT_PTR
+PlatformAllocateMemory(
+ PLAT_SIZE Size
+)
+{
+#ifdef _WIN32
+ // Windows Kernel: Allocate from NonPagedPool
+ PLAT_PTR Result = ExAllocatePoolWithTag(NonPagedPool, Size, POOLTAG);
+
+ if (Result != NULL)
+ RtlSecureZeroMemory(Result, Size);
+
+ return Result;
+#else
+ // Linux Kernel: kzalloc allocates zeroed memory
+ PLAT_PTR ptr = kzalloc(Size, GFP_KERNEL);
+
+ if (ptr) {
+ // printk(KERN_INFO "MemAllocKernel: Allocated %zu bytes at %px\n", Size, ptr);
+ } else {
+ printk(KERN_ERR "MemAllocKernel: failed to allocate %zu bytes\n", Size);
+ }
+
+ return ptr;
+#endif
+}
+
+/**
+ * @brief Frees memory
+ */
+void
+PlatformFreeMemory(
+ PLAT_PTR Memory
+)
+{
+ if (!Memory) return;
+
+#ifdef _WIN32
+ ExFreePoolWithTag(Memory, POOLTAG);
+#else
+ // printk(KERN_INFO "MemFree: Freeing memory at %px\n", Memory);
+ kfree(Memory);
+#endif
+}
+
+/**
+ * @brief Copy memory (Write Buffer into Address)
+ * @note Currently acts as a local memcpy. 'Process' arg is unused.
+ */
+PLAT_STATUS
+PlatformWriteMemory(
+ PLAT_PTR Process,
+ PLAT_PTR Address, // Destination
+ PLAT_PTR Buffer, // Source
+ PLAT_SIZE Size
+)
+{
+ // Check for null pointers
+ if (!Address || !Buffer) return PLAT_FAIL;
+
+#ifdef _WIN32
+ RtlCopyMemory(Address, Buffer, Size);
+ return PLAT_SUCCESS;
+#else
+ memcpy(Address, Buffer, Size);
+ return PLAT_SUCCESS;
+#endif
+}
+
+/**
+ * @brief Set memory to a specific value (memset)
+ */
+void
+PlatformSetMemory(
+ PLAT_PTR Destination,
+ int Value,
+ PLAT_SIZE Size
+)
+{
+ if (!Destination) return;
+
+#ifdef _WIN32
+ RtlFillMemory(Destination, Size, Value);
+#else
+ memset(Destination, Value, Size);
+#endif
+}
\ No newline at end of file
diff --git a/hyperdbg/include/platform/kernel/header/Mem.h b/hyperdbg/include/platform/kernel/header/Mem.h
deleted file mode 100644
index d61461db..00000000
--- a/hyperdbg/include/platform/kernel/header/Mem.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * @file Mem.h
- * @author Behrooz Abbassi (BehroozAbbassi@hyperdbg.org)
- * @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Cross platform APIs for memory allocation
- * @details
- * @version 0.1
- * @date 2022-01-17
- *
- * @copyright This project is released under the GNU Public License v3.
- *
- */
-#pragma once
-
-//////////////////////////////////////////////////
-// Functions //
-//////////////////////////////////////////////////
-
-//
-// Some functions are globally defined in SDK
-//
-#ifdef __linux__
-#include
-void* MemAllocKernel(size_t Size);
-void MemFree(void* Ptr);
-void MemCopy(void* Destination, const void* Source, size_t Size);
-void MemSet(void* Destination, int Value, size_t Size);
-
-#elif defined(_WIN32)
-
-PVOID
-PlatformMemAllocateContiguousZeroedMemory(SIZE_T NumberOfBytes);
-
-// ----------------------------------------------------------------------------
-// Cross Platform Memory Allocate/Free Functions
-//
-PVOID
-PlatformMemAllocateNonPagedPool(SIZE_T NumberOfBytes);
-
-PVOID
-PlatformMemAllocateNonPagedPoolWithQuota(SIZE_T NumberOfBytes);
-
-PVOID
-PlatformMemAllocateZeroedNonPagedPool(SIZE_T NumberOfBytes);
-
-VOID
-PlatformMemFreePool(PVOID BufferAddress);
-#else
-#error "Unsupported platform"
-#endif
diff --git a/hyperdbg/include/platform/kernel/header/platform_mem.h b/hyperdbg/include/platform/kernel/header/platform_mem.h
new file mode 100644
index 00000000..a5a43a1c
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/platform_mem.h
@@ -0,0 +1,48 @@
+/**
+ * @file platform_mem.h
+ * @author Behrooz Abbassi (BehroozAbbassi@hyperdbg.org)
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Cross platform APIs for memory allocation
+ * @details
+ * @version 0.1
+ * @date 2022-01-17
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+#include "platform_types.h"
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+PLAT_STATUS
+PlatformReadMemory(
+ PLAT_PTR Process,
+ PLAT_PTR Address,
+ PLAT_PTR Buffer,
+ PLAT_SIZE Size
+);
+
+PLAT_STATUS
+PlatformWriteMemory(
+ PLAT_PTR Process,
+ PLAT_PTR Address,
+ PLAT_PTR Buffer,
+ PLAT_SIZE Size
+);
+
+PLAT_PTR
+PlatformAllocMemory(
+ PLAT_SIZE Size
+);
+
+void
+PlatformFreeMemory(
+ PLAT_PTR Memory
+);
+//#elif defined(_WIN32)
+//#else
+//#error "Unsupported platform"
+//#endif
diff --git a/hyperdbg/include/platform/kernel/header/module_info.h b/hyperdbg/include/platform/kernel/header/platform_module_info.h
similarity index 89%
rename from hyperdbg/include/platform/kernel/header/module_info.h
rename to hyperdbg/include/platform/kernel/header/platform_module_info.h
index e5c82f7a..6f56267f 100644
--- a/hyperdbg/include/platform/kernel/header/module_info.h
+++ b/hyperdbg/include/platform/kernel/header/platform_module_info.h
@@ -1,4 +1,4 @@
-// module_info.h
+// platform_module_info.h
#ifndef MODULE_INFO_H
#define MODULE_INFO_H
diff --git a/hyperdbg/include/platform/kernel/header/platform_types.h b/hyperdbg/include/platform/kernel/header/platform_types.h
new file mode 100644
index 00000000..a26a4782
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/platform_types.h
@@ -0,0 +1,58 @@
+/**
+ * @file platform_mem.h
+ * @author Alireza Moradi (Alish)
+ * @brief Cross platform types definitions
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Definitions //
+//////////////////////////////////////////////////
+
+#ifdef _WIN32
+ #include
+
+ // Define a Pool Tag for memory allocation (Required by ExAllocatePoolWithTag)
+ #ifndef POOLTAG
+ #define POOLTAG 'gmEM'
+ #endif
+
+ typedef PVOID PLAT_PTR;
+ typedef ULONG PLAT_U32;
+ typedef ULONGLONG PLAT_U64;
+ typedef SIZE_T PLAT_SIZE;
+ typedef NTSTATUS PLAT_STATUS;
+
+ #define PLAT_SUCCESS STATUS_SUCCESS
+ #define PLAT_FAIL STATUS_UNSUCCESSFUL
+
+#else // Linux Kernel
+ #include
+ #include
+ #include
+ #include
+
+ typedef void* PLAT_PTR;
+ typedef u32 PLAT_U32;
+ typedef u64 PLAT_U64;
+ typedef size_t PLAT_SIZE;
+ typedef long PLAT_STATUS;
+
+ #define PLAT_SUCCESS 0
+ #define PLAT_FAIL -1
+#endif
+
+//////////////////////////////////////////////////
+// Prototypes //
+//////////////////////////////////////////////////
+
+PLAT_PTR PlatformAllocateMemory(PLAT_SIZE Size);
+
+void PlatformFreeMemory(PLAT_PTR Memory);
+
+PLAT_STATUS PlatformWriteMemory(PLAT_PTR Process, PLAT_PTR Address, PLAT_PTR Buffer, PLAT_SIZE Size);
+
+void PlatformSetMemory(PLAT_PTR Destination, int Value, PLAT_SIZE Size);
\ No newline at end of file
diff --git a/hyperdbg/linux/mock/Makefile b/hyperdbg/linux/mock/Makefile
index cfee9673..c1ebae9b 100644
--- a/hyperdbg/linux/mock/Makefile
+++ b/hyperdbg/linux/mock/Makefile
@@ -1,13 +1,21 @@
+# Define the kernel build directory
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
+# Define the root of your project
+HYPERDBG_ROOT ?= /home/alish/Documents/HyperDbg/hyperdbg
+
+# Name of the final kernel module
obj-m += mymodule.o
-mymodule-objs := mock.o \
- ../../include/platform/kernel/code/Mem.o
-HYPERDBG_ROOT := /home/alish/Documents/HyperDbg/hyperdbg
+# List of object files required to build 'mymodule.o'
+# Kbuild will automatically compile the corresponding .c files
+mymodule-objs := mock.o \
+ ../../include/platform/kernel/code/mem.o
-ccflags-y += -I$(HYPERDBG_ROOT)/include
+# Add include directories
+ccflags-y += -I$(HYPERDBG_ROOT)/include \
+ -I$(HYPERDBG_ROOT)/include/platform/header
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
diff --git a/hyperdbg/linux/mock/mock.c b/hyperdbg/linux/mock/mock.c
index 29d6f597..c8fa4025 100644
--- a/hyperdbg/linux/mock/mock.c
+++ b/hyperdbg/linux/mock/mock.c
@@ -1,38 +1,94 @@
+/**
+ * @file mock_module.c
+ * @author Alireza moradi (alish014)
+ * @brief Mock Linux kernel module for testing cross-platform memory APIs.
+ * @details This file demonstrates the usage of the unified Platform* memory
+ * API (Allocate, Write, Set, Free) within a Linux kernel module environment.
+ * @version 0.1
+ * @date 2026-02-05
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ */
+
#include
-#include
-#include
-#include
-#include
+#include
+#include "../header/platform_mem.h"
+/**
+ * @brief Global pointer to the allocated test buffer.
+ * @details Stores the address returned by PlatformAllocateMemory so it can be
+ * freed when the module unloads.
+ */
+static PLAT_PTR g_AllocatedBuffer = NULL;
-static void* g_AllocatedBuffer;
-static size_t g_BufferSize = 4096;
+/**
+ * @brief Size of the buffer to allocate during tests.
+ * @note Default size is 4096 bytes (1 page).
+ */
+static PLAT_SIZE g_BufferSize = 4096;
-static int mock_init(void)
+/**
+ * @brief Module initialization entry point.
+ *
+ * @details Performs the following test sequence:
+ * 1. Allocates memory using the cross-platform wrapper.
+ * 2. Copies a test string into the allocated memory.
+ * 3. Prints the content to the kernel log.
+ * 4. Zeroes out the memory contents.
+ *
+ * @return int
+ * - 0: Initialization successful.
+ * - -ENOMEM: Memory allocation failed.
+ */
+static int __init mock_init(void)
{
char source_data[] = "This is a test string from Linux kernel module";
printk(KERN_INFO "Mock module loading\n");
- g_AllocatedBuffer = MemAllocKernel(g_BufferSize);
+ // 1. Allocation
+ g_AllocatedBuffer = PlatformAllocateMemory(g_BufferSize);
if (!g_AllocatedBuffer)
return -ENOMEM;
- MemCopy(g_AllocatedBuffer, source_data, sizeof(source_data));
+ // 2. Copying (Write Memory)
+ // We pass NULL for 'Process' as the current implementation targets local kernel memory.
+ PlatformWriteMemory(NULL, g_AllocatedBuffer, source_data, sizeof(source_data));
+
printk(KERN_INFO "Copied data: %s\n", (char*)g_AllocatedBuffer);
- MemSet(g_AllocatedBuffer, 0, g_BufferSize);
+ // 3. Zeroing (Set Memory)
+ PlatformSetMemory(g_AllocatedBuffer, 0, g_BufferSize);
+
printk(KERN_INFO "Buffer zeroed\n");
return 0;
}
-static void mock_exit(void)
+/**
+ * @brief Module cleanup/exit entry point.
+ *
+ * @details Frees the global buffer allocated during initialization to prevent
+ * memory leaks.
+ *
+ * @return void
+ */
+static void __exit mock_exit(void)
{
printk(KERN_INFO "Mock module unloading\n");
- MemFree(g_AllocatedBuffer);
+
+ // 4. Freeing
+ if (g_AllocatedBuffer) {
+ PlatformFreeMemory(g_AllocatedBuffer);
+ g_AllocatedBuffer = NULL; // Good practice to nullify after free
+ }
}
+// Register entry and exit points
module_init(mock_init);
module_exit(mock_exit);
+// Module Metadata
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Alireza Moradi");
+MODULE_DESCRIPTION("Cross-platform memory API test module");
From b12e3d06a943e367ae40bb8db5149ecb97fc1435 Mon Sep 17 00:00:00 2001
From: alish14
Date: Thu, 5 Feb 2026 22:22:55 +0330
Subject: [PATCH 086/323] fixed comment
---
.../platform/kernel/code/platform_mem.c | 42 ++++++++++++++-----
1 file changed, 31 insertions(+), 11 deletions(-)
diff --git a/hyperdbg/include/platform/kernel/code/platform_mem.c b/hyperdbg/include/platform/kernel/code/platform_mem.c
index 531252a0..7b3a2496 100644
--- a/hyperdbg/include/platform/kernel/code/platform_mem.c
+++ b/hyperdbg/include/platform/kernel/code/platform_mem.c
@@ -11,16 +11,19 @@
* @copyright This project is released under the GNU Public License v3.
*
*/
+
+/**
+ * @file paltform_mem.c
+ * @brief Implementation of cross APIs for different platforms for memory allocation
+ */
#include "../header/platform_mem.h"
/**
- * @file mem.c
- * @brief Implementation of cross APIs for different platforms for memory allocation
- */
-#include "platform_mem.h"
-
-/**
- * @brief Allocates zeroed memory
+ * @brief @brief Allocates a contiguous block of zeroed memory in the kernel pool.
+ * @param Size The number of bytes to allocate.
+ * @return PLAT_PTR
+ * - Pointer to the allocated memory block on success.
+ * - NULL if the allocation failed.
*/
PLAT_PTR
PlatformAllocateMemory(
@@ -50,7 +53,11 @@ PlatformAllocateMemory(
}
/**
- * @brief Frees memory
+ * @brief Frees a previously allocated memory block.
+ *
+ * @param Memory Pointer to the memory block to be freed. If NULL, the function
+ * returns immediately.
+ * @return void
*/
void
PlatformFreeMemory(
@@ -68,8 +75,15 @@ PlatformFreeMemory(
}
/**
- * @brief Copy memory (Write Buffer into Address)
- * @note Currently acts as a local memcpy. 'Process' arg is unused.
+ * @brief Writes data from a source buffer to a destination address.
+ * @param Process Reserved for target process context (currently unused/NULL).
+ * @param Address The destination memory address to write to.
+ * @param Buffer The source buffer containing data to copy.
+ * @param Size The number of bytes to copy.
+ *
+ * @return PLAT_STATUS
+ * - PLAT_SUCCESS (0) on success.
+ * - PLAT_FAIL if Address or Buffer is NULL.
*/
PLAT_STATUS
PlatformWriteMemory(
@@ -92,7 +106,13 @@ PlatformWriteMemory(
}
/**
- * @brief Set memory to a specific value (memset)
+ * @brief Sets a block of memory to a specific value.
+ *
+ * @param Destination Pointer to the memory block to be set.
+ * @param Value The value to set (interpreted as an unsigned char).
+ * @param Size The number of bytes to be set to the value.
+ *
+ * @return void
*/
void
PlatformSetMemory(
From 5f00c98583634ed06a9759d624b6e15ed74f39b1 Mon Sep 17 00:00:00 2001
From: alish14
Date: Fri, 6 Feb 2026 22:35:42 +0330
Subject: [PATCH 087/323] updates cmakes
---
hyperdbg/hyperhv/CMakeLists.txt | 4 ++--
hyperdbg/hyperlog/CMakeLists.txt | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/hyperdbg/hyperhv/CMakeLists.txt b/hyperdbg/hyperhv/CMakeLists.txt
index a92b3180..8d6cf5ab 100644
--- a/hyperdbg/hyperhv/CMakeLists.txt
+++ b/hyperdbg/hyperhv/CMakeLists.txt
@@ -5,7 +5,7 @@ set(SourceFiles
"../include/components/optimizations/code/InsertionSort.c"
"../include/components/optimizations/code/OptimizationsExamples.c"
"../include/components/spinlock/code/Spinlock.c"
- "../include/platform/kernel/code/Mem.c"
+ "../include/platform/kernel/code/platform_mem.c"
"code/broadcast/Broadcast.c"
"code/broadcast/DpcRoutines.c"
"code/common/Bitwise.c"
@@ -102,7 +102,7 @@ set(SourceFiles
"../include/components/spinlock/header/Spinlock.h"
"../include/macros/MetaMacros.h"
"../include/platform/kernel/header/Environment.h"
- "../include/platform/kernel/header/Mem.h"
+ "../include/platform/kernel/header/platform_mem.h"
"header/assembly/InlineAsm.h"
"header/broadcast/Broadcast.h"
"header/broadcast/DpcRoutines.h"
diff --git a/hyperdbg/hyperlog/CMakeLists.txt b/hyperdbg/hyperlog/CMakeLists.txt
index b760f0f4..4bf61005 100644
--- a/hyperdbg/hyperlog/CMakeLists.txt
+++ b/hyperdbg/hyperlog/CMakeLists.txt
@@ -1,12 +1,12 @@
# Code generated by Visual Studio kit, DO NOT EDIT.
set(SourceFiles
"../include/components/spinlock/code/Spinlock.c"
- "../include/platform/kernel/code/Mem.c"
+ "../include/platform/kernel/code/platform_mem.c"
"code/Logging.c"
"code/UnloadDll.c"
"../include/components/spinlock/header/Spinlock.h"
"../include/platform/kernel/header/Environment.h"
- "../include/platform/kernel/header/Mem.h"
+ "../include/platform/kernel/header/platform_mem.h"
"header/Logging.h"
"header/pch.h"
"header/UnloadDll.h"
From 0ffe8c714c5a3a4f03ad1401093989b2541a773f Mon Sep 17 00:00:00 2001
From: alish14
Date: Thu, 12 Feb 2026 21:20:46 +0330
Subject: [PATCH 088/323] change arch and file names
---
hyperdbg/hyperhv/CMakeLists.txt | 4 +-
hyperdbg/hyperlog/CMakeLists.txt | 4 +-
.../platform/kernel/code/PlatformMem.c | 232 ++++++++++++++++++
.../platform/kernel/code/platform_mem.c | 131 ----------
.../platform/kernel/header/PlatformMem.h | 99 ++++++++
...orm_module_info.h => PlatformModuleInfo.h} | 2 +-
.../{platform_types.h => PlatformTypes.h} | 2 +-
.../platform/kernel/header/platform_mem.h | 48 ----
8 files changed, 337 insertions(+), 185 deletions(-)
create mode 100644 hyperdbg/include/platform/kernel/code/PlatformMem.c
delete mode 100644 hyperdbg/include/platform/kernel/code/platform_mem.c
create mode 100644 hyperdbg/include/platform/kernel/header/PlatformMem.h
rename hyperdbg/include/platform/kernel/header/{platform_module_info.h => PlatformModuleInfo.h} (89%)
rename hyperdbg/include/platform/kernel/header/{platform_types.h => PlatformTypes.h} (97%)
delete mode 100644 hyperdbg/include/platform/kernel/header/platform_mem.h
diff --git a/hyperdbg/hyperhv/CMakeLists.txt b/hyperdbg/hyperhv/CMakeLists.txt
index 8d6cf5ab..990c533c 100644
--- a/hyperdbg/hyperhv/CMakeLists.txt
+++ b/hyperdbg/hyperhv/CMakeLists.txt
@@ -5,7 +5,7 @@ set(SourceFiles
"../include/components/optimizations/code/InsertionSort.c"
"../include/components/optimizations/code/OptimizationsExamples.c"
"../include/components/spinlock/code/Spinlock.c"
- "../include/platform/kernel/code/platform_mem.c"
+ "../include/platform/kernel/code/PlatformMem.c"
"code/broadcast/Broadcast.c"
"code/broadcast/DpcRoutines.c"
"code/common/Bitwise.c"
@@ -102,7 +102,7 @@ set(SourceFiles
"../include/components/spinlock/header/Spinlock.h"
"../include/macros/MetaMacros.h"
"../include/platform/kernel/header/Environment.h"
- "../include/platform/kernel/header/platform_mem.h"
+ "../include/platform/kernel/header/PlatformMem.h"
"header/assembly/InlineAsm.h"
"header/broadcast/Broadcast.h"
"header/broadcast/DpcRoutines.h"
diff --git a/hyperdbg/hyperlog/CMakeLists.txt b/hyperdbg/hyperlog/CMakeLists.txt
index 4bf61005..d6e772a5 100644
--- a/hyperdbg/hyperlog/CMakeLists.txt
+++ b/hyperdbg/hyperlog/CMakeLists.txt
@@ -1,12 +1,12 @@
# Code generated by Visual Studio kit, DO NOT EDIT.
set(SourceFiles
"../include/components/spinlock/code/Spinlock.c"
- "../include/platform/kernel/code/platform_mem.c"
+ "../include/platform/kernel/code/PlatformMem.c"
"code/Logging.c"
"code/UnloadDll.c"
"../include/components/spinlock/header/Spinlock.h"
"../include/platform/kernel/header/Environment.h"
- "../include/platform/kernel/header/platform_mem.h"
+ "../include/platform/kernel/header/PlatformMem.h"
"header/Logging.h"
"header/pch.h"
"header/UnloadDll.h"
diff --git a/hyperdbg/include/platform/kernel/code/PlatformMem.c b/hyperdbg/include/platform/kernel/code/PlatformMem.c
new file mode 100644
index 00000000..162795a6
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/PlatformMem.c
@@ -0,0 +1,232 @@
+/**
+ * @file PlatformMem.c
+ * @author Behrooz Abbassi (BehroozAbbassi@hyperdbg.org)
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @author alireza moradi (alish014)
+ * @brief Implementation of cross APIs for different platforms for memory allocation
+ * @details
+ * @version 0.1
+ * @date 2022-01-17
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+
+/**
+ * @file paltform_mem.c
+ * @brief Implementation of cross APIs for different platforms for memory allocation
+ */
+#include "../header/platform_mem.h"
+
+
+/////////////////////////////////////////////////
+/// ... New Unified API ...
+/////////////////////////////////////////////////
+
+
+/**
+ * @brief Allocates a block of memory in the kernel pool.
+ * @details On Windows: Allocates from NonPagedPool and zeroes it.
+ * On Linux: Uses kzalloc (GFP_KERNEL) which zeroes memory.
+ *
+ * @param Size The number of bytes to allocate.
+ * @return PLAT_PTR Pointer to the allocated memory, or NULL on failure.
+ */
+PLAT_PTR
+PlatformAllocateMemory(
+ PLAT_SIZE Size
+)
+{
+#ifdef _WIN32
+ PLAT_PTR Result = ExAllocatePoolWithTag(NonPagedPool, Size, POOLTAG);
+
+ if (Result != NULL)
+ RtlSecureZeroMemory(Result, Size);
+
+ return Result;
+#else
+ // Linux Kernel: kzalloc allocates zeroed memory
+ PLAT_PTR ptr = kzalloc(Size, GFP_KERNEL);
+
+ if (ptr) {
+ printk(KERN_INFO "MemAllocKernel: Allocated %zu bytes at %px\n", Size, ptr);
+ } else {
+ printk(KERN_ERR "MemAllocKernel: failed to allocate %zu bytes\n", Size);
+ }
+
+ return ptr;
+#endif
+}
+
+/**
+ * @brief Frees a previously allocated memory block.
+ * @param Memory Pointer to the memory block. Handles NULL safely.
+ */
+void
+PlatformFreeMemory(
+ PLAT_PTR Memory
+)
+{
+ if (!Memory) return;
+
+#ifdef _WIN32
+ ExFreePoolWithTag(Memory, POOLTAG);
+#else
+ kfree(Memory);
+#endif
+}
+
+/**
+ * @brief Writes data from a buffer to a memory address.
+ * @param Process Reserved (unused).
+ * @param Address Destination address.
+ * @param Buffer Source buffer.
+ * @param Size Number of bytes to copy.
+ * @return PLAT_STATUS PLAT_SUCCESS or PLAT_FAIL.
+ */
+PLAT_STATUS
+PlatformWriteMemory(
+ PLAT_PTR Process,
+ PLAT_PTR Address, // Destination
+ PLAT_PTR Buffer, // Source
+ PLAT_SIZE Size
+)
+{
+ // Process argument currently unused (local copy)
+ (void)Process;
+
+ if (!Address || !Buffer) return PLAT_FAIL;
+
+#ifdef _WIN32
+ RtlCopyMemory(Address, Buffer, Size);
+#else
+ memcpy(Address, Buffer, Size);
+#endif
+ return PLAT_SUCCES
+}
+
+/**
+ * @brief Sets a memory block to a specific value.
+ * @param Destination Memory address.
+ * @param Value Value to set.
+ * @param Size Number of bytes.
+ */
+void
+PlatformSetMemory(
+ PLAT_PTR Destination,
+ int Value,
+ PLAT_SIZE Size
+)
+{
+ if (!Destination) return;
+
+#ifdef _WIN32
+ RtlFillMemory(Destination, Size, Value);
+#else
+ memset(Destination, Value, Size);
+#endif
+}
+
+
+/////////////////////////////////////////////////
+/// ... Backward Compatibility / Specific APIs ...
+/////////////////////////////////////////////////
+
+/**
+ * @brief Allocates contiguous zeroed physical memory.
+ * @details On Windows: Uses MmAllocateContiguousMemory.
+ * On Linux: Uses kmalloc (which is usually physically contiguous) or dma_alloc_coherent.
+ * For simplicity in this driver, we map to kzalloc.
+ * @param NumberOfBytes Size in bytes.
+ * @return PLAT_PTR Pointer to memory or NULL.
+ */
+PLAT_PTR
+PlatformMemAllocateContiguousZeroedMemory(PLAT_SIZE NumberOfBytes)
+{
+#ifdef _WIN32
+ PLAT_PTR Result = NULL;
+ PHYSICAL_ADDRESS MaxPhysicalAddr = {0};
+ MaxPhysicalAddr.QuadPart = MAXULONG64;
+
+ Result = MmAllocateContiguousMemory(NumberOfBytes, MaxPhysicalAddr);
+ if (Result != NULL)
+ RtlSecureZeroMemory(Result, NumberOfBytes);
+ return Result;
+#else
+ // In Linux, kmalloc/kzalloc returns physically contiguous memory
+ // (unless vmalloc is used, which we aren't using here).
+ return kzalloc(NumberOfBytes, GFP_KERNEL);
+#endif
+}
+
+/**
+ * @brief Allocates non-paged pool memory.
+ * @param NumberOfBytes Size in bytes.
+ * @return PLAT_PTR Pointer to memory.
+ */
+PLAT_PTR
+PlatformMemAllocateNonPagedPool(PLAT_SIZE NumberOfBytes)
+{
+#ifdef _WIN32
+ return ExAllocatePoolWithTag(NonPagedPool, NumberOfBytes, POOLTAG);
+#else
+ // Linux kernel memory is non-paged by default (except vmalloc)
+ return kmalloc(NumberOfBytes, GFP_KERNEL);
+#endif
+}
+
+
+/**
+ * @brief Allocates non-paged pool memory with quota charging.
+ * @param NumberOfBytes Size in bytes.
+ * @return PLAT_PTR Pointer to memory.
+ */
+PLAT_PTR
+PlatformMemAllocateNonPagedPoolWithQuota(PLAT_SIZE NumberOfBytes)
+{
+#ifdef _WIN32
+ // POOL_FLAG_USE_QUOTA is used with ExAllocatePool2
+ // Note: Ensure your WDK supports ExAllocatePool2, otherwise use ExAllocatePoolWithQuotaTag
+ return ExAllocatePool2(POOL_FLAG_NON_PAGED | POOL_FLAG_USE_QUOTA, NumberOfBytes, POOLTAG);
+#else
+ // Quotas are not explicitly managed in simple Linux kernel allocations like this
+ return kmalloc(NumberOfBytes, GFP_KERNEL);
+#endif
+}
+
+/**
+ * @brief Allocates zeroed non-paged pool memory.
+ * @param NumberOfBytes Size in bytes.
+ * @return PLAT_PTR Pointer to memory.
+ */
+PLAT_PTR
+PlatformMemAllocateZeroedNonPagedPool(PLAT_SIZE NumberOfBytes)
+{
+#ifdef _WIN32
+ PLAT_PTR Result = ExAllocatePoolWithTag(NonPagedPool, NumberOfBytes, POOLTAG);
+ if (Result != NULL)
+ RtlSecureZeroMemory(Result, NumberOfBytes);
+ return Result;
+#else
+ return kzalloc(NumberOfBytes, GFP_KERNEL);
+#endif
+}
+
+
+/**
+ * @brief Frees a memory pool.
+ * @param BufferAddress Pointer to the memory to free.
+ * @return PLAT_PTR (Void pointer in original API, usually ignored).
+ */
+PLAT_PTR
+PlatformMemFreePool(PLAT_PTR BufferAddress)
+{
+ if (!BufferAddress) return NULL;
+
+#ifdef _WIN32
+ ExFreePoolWithTag(BufferAddress, POOLTAG);
+#else
+ kfree(BufferAddress);
+#endif
+ return NULL;
+}
\ No newline at end of file
diff --git a/hyperdbg/include/platform/kernel/code/platform_mem.c b/hyperdbg/include/platform/kernel/code/platform_mem.c
deleted file mode 100644
index 7b3a2496..00000000
--- a/hyperdbg/include/platform/kernel/code/platform_mem.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/**
- * @file mem.c
- * @author Behrooz Abbassi (BehroozAbbassi@hyperdbg.org)
- * @author Sina Karvandi (sina@hyperdbg.org)
- * @author alireza moradi (alish014)
- * @brief Implementation of cross APIs for different platforms for memory allocation
- * @details
- * @version 0.1
- * @date 2022-01-17
- *
- * @copyright This project is released under the GNU Public License v3.
- *
- */
-
-/**
- * @file paltform_mem.c
- * @brief Implementation of cross APIs for different platforms for memory allocation
- */
-#include "../header/platform_mem.h"
-
-/**
- * @brief @brief Allocates a contiguous block of zeroed memory in the kernel pool.
- * @param Size The number of bytes to allocate.
- * @return PLAT_PTR
- * - Pointer to the allocated memory block on success.
- * - NULL if the allocation failed.
- */
-PLAT_PTR
-PlatformAllocateMemory(
- PLAT_SIZE Size
-)
-{
-#ifdef _WIN32
- // Windows Kernel: Allocate from NonPagedPool
- PLAT_PTR Result = ExAllocatePoolWithTag(NonPagedPool, Size, POOLTAG);
-
- if (Result != NULL)
- RtlSecureZeroMemory(Result, Size);
-
- return Result;
-#else
- // Linux Kernel: kzalloc allocates zeroed memory
- PLAT_PTR ptr = kzalloc(Size, GFP_KERNEL);
-
- if (ptr) {
- // printk(KERN_INFO "MemAllocKernel: Allocated %zu bytes at %px\n", Size, ptr);
- } else {
- printk(KERN_ERR "MemAllocKernel: failed to allocate %zu bytes\n", Size);
- }
-
- return ptr;
-#endif
-}
-
-/**
- * @brief Frees a previously allocated memory block.
- *
- * @param Memory Pointer to the memory block to be freed. If NULL, the function
- * returns immediately.
- * @return void
- */
-void
-PlatformFreeMemory(
- PLAT_PTR Memory
-)
-{
- if (!Memory) return;
-
-#ifdef _WIN32
- ExFreePoolWithTag(Memory, POOLTAG);
-#else
- // printk(KERN_INFO "MemFree: Freeing memory at %px\n", Memory);
- kfree(Memory);
-#endif
-}
-
-/**
- * @brief Writes data from a source buffer to a destination address.
- * @param Process Reserved for target process context (currently unused/NULL).
- * @param Address The destination memory address to write to.
- * @param Buffer The source buffer containing data to copy.
- * @param Size The number of bytes to copy.
- *
- * @return PLAT_STATUS
- * - PLAT_SUCCESS (0) on success.
- * - PLAT_FAIL if Address or Buffer is NULL.
- */
-PLAT_STATUS
-PlatformWriteMemory(
- PLAT_PTR Process,
- PLAT_PTR Address, // Destination
- PLAT_PTR Buffer, // Source
- PLAT_SIZE Size
-)
-{
- // Check for null pointers
- if (!Address || !Buffer) return PLAT_FAIL;
-
-#ifdef _WIN32
- RtlCopyMemory(Address, Buffer, Size);
- return PLAT_SUCCESS;
-#else
- memcpy(Address, Buffer, Size);
- return PLAT_SUCCESS;
-#endif
-}
-
-/**
- * @brief Sets a block of memory to a specific value.
- *
- * @param Destination Pointer to the memory block to be set.
- * @param Value The value to set (interpreted as an unsigned char).
- * @param Size The number of bytes to be set to the value.
- *
- * @return void
- */
-void
-PlatformSetMemory(
- PLAT_PTR Destination,
- int Value,
- PLAT_SIZE Size
-)
-{
- if (!Destination) return;
-
-#ifdef _WIN32
- RtlFillMemory(Destination, Size, Value);
-#else
- memset(Destination, Value, Size);
-#endif
-}
\ No newline at end of file
diff --git a/hyperdbg/include/platform/kernel/header/PlatformMem.h b/hyperdbg/include/platform/kernel/header/PlatformMem.h
new file mode 100644
index 00000000..59d4bab1
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/PlatformMem.h
@@ -0,0 +1,99 @@
+/**
+ * @file PlatformMem.h
+ * @author Behrooz Abbassi (BehroozAbbassi@hyperdbg.org)
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @author Alirez Moradi (alish014)
+ * @brief Cross platform APIs for memory allocation
+ * @details
+ * @version 0.1
+ * @date 2022-01-17
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+#include "platform_types.h"
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+PLAT_STATUS PlatformReadMemory(
+ PLAT_PTR Process,
+ PLAT_PTR Address,
+ PLAT_PTR Buffer,
+ PLAT_SIZE Size
+);
+
+PLAT_STATUS PlatformWriteMemory(
+ PLAT_PTR Process,
+ PLAT_PTR Address,
+ PLAT_PTR Buffer,
+ PLAT_SIZE Size
+);
+
+PLAT_PTR PlatformAllocMemory(
+ PLAT_SIZE Size
+);
+
+void PlatformFreeMemory(
+ PLAT_PTR Memory
+);
+
+
+
+PLAT_PTR
+PlatformMemAllocateContiguousZeroedMemory(
+ PLAT_SIZE NumberOfBytes
+);
+
+
+
+PLAT_PTR
+PlatformMemAllocateNonPagedPool(
+ PLAT_SIZE NumberOfBytes
+);
+
+
+
+PLAT_PTR
+PlatformMemAllocateNonPagedPoolWithQuota(
+ PLAT_SIZE NumberOfBytes
+);
+
+
+PLAT_PTR
+PlatformMemAllocateZeroedNonPagedPool(
+ PLAT_SIZE NumberOfBytes
+);
+
+
+PLAT_PTR
+PlatformMemFreePool(
+ PLAT_PTR BufferAddress
+);
+
+
+//////////////////////////////////////////////////
+// Backward-compatible / legacy functions //
+//////////////////////////////////////////////////
+
+PLAT_PTR PlatformMemAllocateContiguousZeroedMemory(
+ PLAT_SIZE NumberOfBytes
+);
+
+PLAT_PTR PlatformMemAllocateNonPagedPool(
+ PLAT_SIZE NumberOfBytes
+);
+
+PLAT_PTR PlatformMemAllocateNonPagedPoolWithQuota(
+ PLAT_SIZE NumberOfBytes
+);
+
+PLAT_PTR PlatformMemAllocateZeroedNonPagedPool(
+ PLAT_SIZE NumberOfBytes
+);
+
+PLAT_PTR PlatformMemFreePool(
+ PLAT_PTR BufferAddress
+);
\ No newline at end of file
diff --git a/hyperdbg/include/platform/kernel/header/platform_module_info.h b/hyperdbg/include/platform/kernel/header/PlatformModuleInfo.h
similarity index 89%
rename from hyperdbg/include/platform/kernel/header/platform_module_info.h
rename to hyperdbg/include/platform/kernel/header/PlatformModuleInfo.h
index 6f56267f..4d4693ef 100644
--- a/hyperdbg/include/platform/kernel/header/platform_module_info.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformModuleInfo.h
@@ -1,4 +1,4 @@
-// platform_module_info.h
+// PlatformModuleInfo.h
#ifndef MODULE_INFO_H
#define MODULE_INFO_H
diff --git a/hyperdbg/include/platform/kernel/header/platform_types.h b/hyperdbg/include/platform/kernel/header/PlatformTypes.h
similarity index 97%
rename from hyperdbg/include/platform/kernel/header/platform_types.h
rename to hyperdbg/include/platform/kernel/header/PlatformTypes.h
index a26a4782..1bc2e690 100644
--- a/hyperdbg/include/platform/kernel/header/platform_types.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformTypes.h
@@ -1,5 +1,5 @@
/**
- * @file platform_mem.h
+ * @file PlatformMem.h
* @author Alireza Moradi (Alish)
* @brief Cross platform types definitions
*
diff --git a/hyperdbg/include/platform/kernel/header/platform_mem.h b/hyperdbg/include/platform/kernel/header/platform_mem.h
deleted file mode 100644
index a5a43a1c..00000000
--- a/hyperdbg/include/platform/kernel/header/platform_mem.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * @file platform_mem.h
- * @author Behrooz Abbassi (BehroozAbbassi@hyperdbg.org)
- * @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Cross platform APIs for memory allocation
- * @details
- * @version 0.1
- * @date 2022-01-17
- *
- * @copyright This project is released under the GNU Public License v3.
- *
- */
-#pragma once
-#include "platform_types.h"
-
-//////////////////////////////////////////////////
-// Functions //
-//////////////////////////////////////////////////
-
-PLAT_STATUS
-PlatformReadMemory(
- PLAT_PTR Process,
- PLAT_PTR Address,
- PLAT_PTR Buffer,
- PLAT_SIZE Size
-);
-
-PLAT_STATUS
-PlatformWriteMemory(
- PLAT_PTR Process,
- PLAT_PTR Address,
- PLAT_PTR Buffer,
- PLAT_SIZE Size
-);
-
-PLAT_PTR
-PlatformAllocMemory(
- PLAT_SIZE Size
-);
-
-void
-PlatformFreeMemory(
- PLAT_PTR Memory
-);
-//#elif defined(_WIN32)
-//#else
-//#error "Unsupported platform"
-//#endif
From f40f1d818316f8b68495941666371bb46ca099c0 Mon Sep 17 00:00:00 2001
From: alish14
Date: Thu, 12 Feb 2026 22:21:28 +0330
Subject: [PATCH 089/323] fix dependecies after changing file names and now it
work
---
hyperdbg/hyperdbg.sln | 6 ++--
hyperdbg/hyperevade/CMakeLists.txt | 2 +-
hyperdbg/hyperevade/header/pch.h | 2 +-
hyperdbg/hyperevade/hyperevade.vcxproj | 4 +--
.../hyperevade/hyperevade.vcxproj.filters | 4 +--
hyperdbg/hyperhv/hyperhv.vcxproj | 4 +--
hyperdbg/hyperhv/hyperhv.vcxproj.filters | 4 +--
hyperdbg/hyperhv/pch.h | 2 +-
hyperdbg/hyperkd/CMakeLists.txt | 4 +--
hyperdbg/hyperkd/header/pch.h | 2 +-
hyperdbg/hyperkd/hyperkd.vcxproj | 4 +--
hyperdbg/hyperkd/hyperkd.vcxproj.filters | 4 +--
hyperdbg/hyperlog/header/pch.h | 2 +-
hyperdbg/hyperlog/hyperlog.vcxproj | 4 +--
hyperdbg/hyperlog/hyperlog.vcxproj.filters | 4 +--
hyperdbg/hypertrace/CMakeLists.txt | 4 +--
hyperdbg/hypertrace/header/pch.h | 2 +-
hyperdbg/hypertrace/hypertrace.vcxproj | 4 +--
.../hypertrace/hypertrace.vcxproj.filters | 4 +--
.../platform/kernel/code/PlatformMem.c | 30 +++++++++++++++----
.../platform/kernel/header/PlatformMem.h | 2 +-
hyperdbg/linux/mock/mock.c | 2 +-
22 files changed, 60 insertions(+), 40 deletions(-)
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index ebcb85a6..2f62484b 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -147,13 +147,15 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "kernel", "kernel", "{D0E5A2
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{6498728B-D9B0-4CAB-A9E3-ACE5BC371010}"
ProjectSection(SolutionItems) = preProject
- include\platform\kernel\code\Mem.c = include\platform\kernel\code\Mem.c
+ include\platform\kernel\code\PlatformMem.c = include\platform\kernel\code\PlatformMem.c
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{AA41FFF1-A730-433E-8D26-13DA5B653825}"
ProjectSection(SolutionItems) = preProject
include\platform\kernel\header\Environment.h = include\platform\kernel\header\Environment.h
- include\platform\kernel\header\Mem.h = include\platform\kernel\header\Mem.h
+ include\platform\kernel\header\PlatformMem.h = include\platform\kernel\header\PlatformMem.h
+ include\platform\kernel\header\PlatformModuleInfo.h = include\platform\kernel\header\PlatformModuleInfo.h
+ include\platform\kernel\header\PlatformTypes.h = include\platform\kernel\header\PlatformTypes.h
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{4BF590C3-1032-4DD2-BF87-BB9E5781977C}"
diff --git a/hyperdbg/hyperevade/CMakeLists.txt b/hyperdbg/hyperevade/CMakeLists.txt
index 904c7992..85e1fe45 100644
--- a/hyperdbg/hyperevade/CMakeLists.txt
+++ b/hyperdbg/hyperevade/CMakeLists.txt
@@ -6,7 +6,7 @@ set(SourceFiles
"code/UnloadDll.c"
"../include/components/spinlock/header/Spinlock.h"
"../include/platform/kernel/header/Environment.h"
- "../include/platform/kernel/header/Mem.h"
+ "../include/platform/kernel/header/PlatformMem.h"
"header/Logging.h"
"header/pch.h"
"header/UnloadDll.h"
diff --git a/hyperdbg/hyperevade/header/pch.h b/hyperdbg/hyperevade/header/pch.h
index d52101a9..c03d3f2b 100644
--- a/hyperdbg/hyperevade/header/pch.h
+++ b/hyperdbg/hyperevade/header/pch.h
@@ -74,7 +74,7 @@
//
// Platform independent headers
//
-#include "platform/kernel/header/Mem.h"
+#include "platform/kernel/header/PlatformMem.h"
//
// Hyperevade Callbacks
diff --git a/hyperdbg/hyperevade/hyperevade.vcxproj b/hyperdbg/hyperevade/hyperevade.vcxproj
index e95f4b8c..73f7187b 100644
--- a/hyperdbg/hyperevade/hyperevade.vcxproj
+++ b/hyperdbg/hyperevade/hyperevade.vcxproj
@@ -107,7 +107,7 @@
-
+
@@ -116,7 +116,7 @@
-
+
diff --git a/hyperdbg/hyperevade/hyperevade.vcxproj.filters b/hyperdbg/hyperevade/hyperevade.vcxproj.filters
index ee739db9..270443b2 100644
--- a/hyperdbg/hyperevade/hyperevade.vcxproj.filters
+++ b/hyperdbg/hyperevade/hyperevade.vcxproj.filters
@@ -45,7 +45,7 @@
code
-
+
code\platform
@@ -86,7 +86,7 @@
header\platform
-
+
header\platform
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj b/hyperdbg/hyperhv/hyperhv.vcxproj
index 4adf66c0..2514ef15 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj
@@ -132,7 +132,7 @@
-
+
@@ -238,7 +238,7 @@
-
+
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj.filters b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
index 69dc9669..2f9631b6 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj.filters
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
@@ -299,7 +299,7 @@
code\interface
-
+
code\platform
@@ -577,7 +577,7 @@
header\platform
-
+
header\platform
diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h
index c3fd0dc1..efa9ebaf 100644
--- a/hyperdbg/hyperhv/pch.h
+++ b/hyperdbg/hyperhv/pch.h
@@ -60,7 +60,7 @@
//
// Platform independent headers
//
-#include "platform/kernel/header/Mem.h"
+#include "platform/kernel/header/PlatformMem.h"
//
// VMM Callbacks
diff --git a/hyperdbg/hyperkd/CMakeLists.txt b/hyperdbg/hyperkd/CMakeLists.txt
index 0adcdfbc..2dc81aaf 100644
--- a/hyperdbg/hyperkd/CMakeLists.txt
+++ b/hyperdbg/hyperkd/CMakeLists.txt
@@ -5,7 +5,7 @@ set(SourceFiles
"../include/components/optimizations/code/InsertionSort.c"
"../include/components/optimizations/code/OptimizationsExamples.c"
"../include/components/spinlock/code/Spinlock.c"
- "../include/platform/kernel/code/Mem.c"
+ "../include/platform/kernel/code/PlatformMem.c"
"../script-eval/code/Functions.c"
"../script-eval/code/Keywords.c"
"../script-eval/code/PseudoRegisters.c"
@@ -49,7 +49,7 @@ set(SourceFiles
"../include/components/spinlock/header/Spinlock.h"
"../include/macros/MetaMacros.h"
"../include/platform/kernel/header/Environment.h"
- "../include/platform/kernel/header/Mem.h"
+ "../include/platform/kernel/header/PlatformMem.h"
"header/assembly/Assembly.h"
"header/common/Common.h"
"header/common/Dpc.h"
diff --git a/hyperdbg/hyperkd/header/pch.h b/hyperdbg/hyperkd/header/pch.h
index 2c5375fe..8c7fbe73 100644
--- a/hyperdbg/hyperkd/header/pch.h
+++ b/hyperdbg/hyperkd/header/pch.h
@@ -84,7 +84,7 @@
//
// Platform independent headers
//
-#include "platform/kernel/header/Mem.h"
+#include "platform/kernel/header/PlatformMem.h"
//
// Optimization algorithms
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj b/hyperdbg/hyperkd/hyperkd.vcxproj
index e1b3f224..90b7e325 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj
@@ -108,7 +108,7 @@
-
+
@@ -155,7 +155,7 @@
-
+
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj.filters b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
index b3774320..db51aa3a 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj.filters
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
@@ -261,7 +261,7 @@
code\debugger\meta-events
-
+
code\platform
@@ -398,7 +398,7 @@
header\platform
-
+
header\platform
diff --git a/hyperdbg/hyperlog/header/pch.h b/hyperdbg/hyperlog/header/pch.h
index 1dd8a75d..d9053cff 100644
--- a/hyperdbg/hyperlog/header/pch.h
+++ b/hyperdbg/hyperlog/header/pch.h
@@ -48,4 +48,4 @@
//
// Platform independent headers
//
-#include "platform/kernel/header/Mem.h"
+#include "platform/kernel/header/PlatformMem.h"
diff --git a/hyperdbg/hyperlog/hyperlog.vcxproj b/hyperdbg/hyperlog/hyperlog.vcxproj
index 1b9bfc9e..24c1e098 100644
--- a/hyperdbg/hyperlog/hyperlog.vcxproj
+++ b/hyperdbg/hyperlog/hyperlog.vcxproj
@@ -104,14 +104,14 @@
-
+
-
+
diff --git a/hyperdbg/hyperlog/hyperlog.vcxproj.filters b/hyperdbg/hyperlog/hyperlog.vcxproj.filters
index 32ae1d04..4bd91367 100644
--- a/hyperdbg/hyperlog/hyperlog.vcxproj.filters
+++ b/hyperdbg/hyperlog/hyperlog.vcxproj.filters
@@ -35,7 +35,7 @@
code
-
+
code\platform
@@ -55,7 +55,7 @@
header\platform
-
+
header\platform
diff --git a/hyperdbg/hypertrace/CMakeLists.txt b/hyperdbg/hypertrace/CMakeLists.txt
index 56d3af1d..ec2c68bb 100644
--- a/hyperdbg/hypertrace/CMakeLists.txt
+++ b/hyperdbg/hypertrace/CMakeLists.txt
@@ -1,12 +1,12 @@
# Code generated by Visual Studio kit, DO NOT EDIT.
set(SourceFiles
"../include/components/spinlock/code/Spinlock.c"
- "../include/platform/kernel/code/Mem.c"
+ "../include/platform/kernel/code/PlatformMem.c"
"code/Logging.c"
"code/UnloadDll.c"
"../include/components/spinlock/header/Spinlock.h"
"../include/platform/kernel/header/Environment.h"
- "../include/platform/kernel/header/Mem.h"
+ "../include/platform/kernel/header/PlatformMem.h"
"header/Logging.h"
"header/pch.h"
"header/UnloadDll.h"
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 24fcbd01..094a3659 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -78,7 +78,7 @@
//
// Platform independent headers
//
-#include "platform/kernel/header/Mem.h"
+#include "platform/kernel/header/PlatformMem.h"
//
// Export functions
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index 60bb63d2..e83d514f 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -102,7 +102,7 @@
-
+
@@ -111,7 +111,7 @@
-
+
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
index d291223a..b4ac3cc5 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj.filters
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -32,7 +32,7 @@
code
-
+
code\platform
@@ -58,7 +58,7 @@
header\platform
-
+
header\platform
diff --git a/hyperdbg/include/platform/kernel/code/PlatformMem.c b/hyperdbg/include/platform/kernel/code/PlatformMem.c
index 162795a6..3da7e6b3 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformMem.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformMem.c
@@ -16,7 +16,8 @@
* @file paltform_mem.c
* @brief Implementation of cross APIs for different platforms for memory allocation
*/
-#include "../header/platform_mem.h"
+#include "pch.h"
+#include "../header/PlatformMem.h"
/////////////////////////////////////////////////
@@ -38,7 +39,12 @@ PlatformAllocateMemory(
)
{
#ifdef _WIN32
- PLAT_PTR Result = ExAllocatePoolWithTag(NonPagedPool, Size, POOLTAG);
+ PLAT_PTR Result = ExAllocatePool2(
+ POOL_FLAG_NON_PAGED, // non-paged pool
+ Size,
+ POOLTAG
+ );
+
if (Result != NULL)
RtlSecureZeroMemory(Result, Size);
@@ -102,7 +108,7 @@ PlatformWriteMemory(
#else
memcpy(Address, Buffer, Size);
#endif
- return PLAT_SUCCES
+ return PLAT_SUCCESS;
}
/**
@@ -168,7 +174,11 @@ PLAT_PTR
PlatformMemAllocateNonPagedPool(PLAT_SIZE NumberOfBytes)
{
#ifdef _WIN32
- return ExAllocatePoolWithTag(NonPagedPool, NumberOfBytes, POOLTAG);
+ return ExAllocatePool2(
+ POOL_FLAG_NON_PAGED,
+ NumberOfBytes,
+ POOLTAG
+ );
#else
// Linux kernel memory is non-paged by default (except vmalloc)
return kmalloc(NumberOfBytes, GFP_KERNEL);
@@ -187,7 +197,11 @@ PlatformMemAllocateNonPagedPoolWithQuota(PLAT_SIZE NumberOfBytes)
#ifdef _WIN32
// POOL_FLAG_USE_QUOTA is used with ExAllocatePool2
// Note: Ensure your WDK supports ExAllocatePool2, otherwise use ExAllocatePoolWithQuotaTag
- return ExAllocatePool2(POOL_FLAG_NON_PAGED | POOL_FLAG_USE_QUOTA, NumberOfBytes, POOLTAG);
+ return ExAllocatePool2(
+ POOL_FLAG_NON_PAGED | POOL_FLAG_USE_QUOTA,
+ NumberOfBytes,
+ POOLTAG
+ );
#else
// Quotas are not explicitly managed in simple Linux kernel allocations like this
return kmalloc(NumberOfBytes, GFP_KERNEL);
@@ -203,7 +217,11 @@ PLAT_PTR
PlatformMemAllocateZeroedNonPagedPool(PLAT_SIZE NumberOfBytes)
{
#ifdef _WIN32
- PLAT_PTR Result = ExAllocatePoolWithTag(NonPagedPool, NumberOfBytes, POOLTAG);
+ PLAT_PTR Result = ExAllocatePool2(
+ POOL_FLAG_NON_PAGED,
+ NumberOfBytes,
+ POOLTAG
+ );
if (Result != NULL)
RtlSecureZeroMemory(Result, NumberOfBytes);
return Result;
diff --git a/hyperdbg/include/platform/kernel/header/PlatformMem.h b/hyperdbg/include/platform/kernel/header/PlatformMem.h
index 59d4bab1..3c06ef7b 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformMem.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformMem.h
@@ -12,7 +12,7 @@
*
*/
#pragma once
-#include "platform_types.h"
+#include "PlatformTypes.h"
//////////////////////////////////////////////////
// Functions //
diff --git a/hyperdbg/linux/mock/mock.c b/hyperdbg/linux/mock/mock.c
index c8fa4025..e9f91ee7 100644
--- a/hyperdbg/linux/mock/mock.c
+++ b/hyperdbg/linux/mock/mock.c
@@ -12,7 +12,7 @@
#include
#include
-#include "../header/platform_mem.h"
+#include "../header/PlatformMem.h"
/**
* @brief Global pointer to the allocated test buffer.
From 44f79b6bb9f707fe679dbdfd1adc33596c1858a1 Mon Sep 17 00:00:00 2001
From: alish14
Date: Thu, 12 Feb 2026 23:55:49 +0330
Subject: [PATCH 090/323] add if condition macro in PlatformMem for including
header only in windows
---
hyperdbg/include/platform/kernel/code/PlatformMem.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/hyperdbg/include/platform/kernel/code/PlatformMem.c b/hyperdbg/include/platform/kernel/code/PlatformMem.c
index 3da7e6b3..5edbd22b 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformMem.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformMem.c
@@ -13,10 +13,12 @@
*/
/**
- * @file paltform_mem.c
+ * @file PlatformMem.c
* @brief Implementation of cross APIs for different platforms for memory allocation
*/
+#ifdef _WIN32
#include "pch.h"
+#endif
#include "../header/PlatformMem.h"
From 3a21e72f32817eab900a01d1fd71133f51f56619 Mon Sep 17 00:00:00 2001
From: alish14
Date: Fri, 13 Feb 2026 00:17:11 +0330
Subject: [PATCH 091/323] add README
---
hyperdbg/linux/mock/README.md | 89 +++++++++++++++++++++++++++++++++++
1 file changed, 89 insertions(+)
create mode 100644 hyperdbg/linux/mock/README.md
diff --git a/hyperdbg/linux/mock/README.md b/hyperdbg/linux/mock/README.md
new file mode 100644
index 00000000..a9a09e50
--- /dev/null
+++ b/hyperdbg/linux/mock/README.md
@@ -0,0 +1,89 @@
+# HyperDbg Linux Kernel Module
+
+This directory contains a Linux kernel module that demonstrates and tests the
+cross-platform memory management APIs (`PlatformMem.c`) from the HyperDbg project.
+
+The module provides a simple test harness (`mock.c`) that exercises memory
+allocation, copy, and deallocation functions in kernel space
+
+---
+## Prerequisites
+Before building the module, ensure you have the necessary development tools
+and kernel headers installed:
+
+```bash
+# Install build essentials and kernel module utilities
+sudo apt-get update
+sudo apt-get install build-essential kmod
+
+# Install kernel headers for your running kernel
+sudo apt-get install linux-headers-`uname -r`
+```
+
+---
+# project structure
+
+```
+hyperdbg/
+ ├── include/
+ │ └── platform/
+ │ └── kernel/
+ │ ├── header/
+ │ └── code/
+ └── linux/
+ └── mock/
+ ├── Makefile
+ ├── mock.c
+ └── HyperDbg.ko
+
+```
+
+
+
+---
+## Build the Module
+```bash
+cd hyperdbg/linux/mock```
+then build module:
+```bash
+make
+```
+If successful, this will generate:
+
+```bash
+HyperDbg.ko
+```
+---
+# Load the Module
+
+to insert the module into the kernel:
+
+```bash
+sudo insmod HyperDbg.ko
+```
+
+---
+# Verify Module Loaded Successfully
+
+you can use `lsmod` :
+```bash
+lsmod | grep HyperDbg
+```
+
+or you can inspect kernel module:
+```bash
+sudo dmesg | tail -10
+```
+---
+# Remove the Module
+```bash
+sudo rmmod HyperDbg
+```
+
+---
+
+# finally you can clean project:
+```bash
+make clean
+```
+
From 9e8dcba265fb1833e65d4ea9ba889f7acecf5c33 Mon Sep 17 00:00:00 2001
From: alish14
Date: Fri, 13 Feb 2026 11:10:17 +0330
Subject: [PATCH 092/323] add dummy pch for handling error in linux
---
hyperdbg/include/platform/kernel/code/PlatformMem.c | 6 ++----
hyperdbg/include/platform/kernel/header/PlatformTypes.h | 2 +-
hyperdbg/include/platform/kernel/header/pch.h | 5 +++++
3 files changed, 8 insertions(+), 5 deletions(-)
create mode 100644 hyperdbg/include/platform/kernel/header/pch.h
diff --git a/hyperdbg/include/platform/kernel/code/PlatformMem.c b/hyperdbg/include/platform/kernel/code/PlatformMem.c
index 5edbd22b..5441bcbc 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformMem.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformMem.c
@@ -16,11 +16,9 @@
* @file PlatformMem.c
* @brief Implementation of cross APIs for different platforms for memory allocation
*/
-#ifdef _WIN32
-#include "pch.h"
-#endif
-#include "../header/PlatformMem.h"
+#include "pch.h"
+#include "../header/PlatformMem.h"
/////////////////////////////////////////////////
/// ... New Unified API ...
diff --git a/hyperdbg/include/platform/kernel/header/PlatformTypes.h b/hyperdbg/include/platform/kernel/header/PlatformTypes.h
index 1bc2e690..845d4b80 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformTypes.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformTypes.h
@@ -14,7 +14,7 @@
#ifdef _WIN32
#include
-
+ #include "pch.h"
// Define a Pool Tag for memory allocation (Required by ExAllocatePoolWithTag)
#ifndef POOLTAG
#define POOLTAG 'gmEM'
diff --git a/hyperdbg/include/platform/kernel/header/pch.h b/hyperdbg/include/platform/kernel/header/pch.h
new file mode 100644
index 00000000..4efa1695
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/pch.h
@@ -0,0 +1,5 @@
+/* pch.h for Linux/Unix builds - empty to satisfy PCH requirements */
+#ifndef PCH_H
+#define PCH_H
+// This file is intentionally left blank for non-Windows platforms.
+#endif
\ No newline at end of file
From f5c54341ac41bcd6a0fe99b4dc3f58d22f8975c6 Mon Sep 17 00:00:00 2001
From: Alireza moradi
Date: Fri, 13 Feb 2026 11:13:32 +0330
Subject: [PATCH 093/323] change linux mock makefile
---
hyperdbg/linux/mock/Makefile | 19 ++++++-------------
1 file changed, 6 insertions(+), 13 deletions(-)
diff --git a/hyperdbg/linux/mock/Makefile b/hyperdbg/linux/mock/Makefile
index c1ebae9b..f43942b7 100644
--- a/hyperdbg/linux/mock/Makefile
+++ b/hyperdbg/linux/mock/Makefile
@@ -1,24 +1,17 @@
-# Define the kernel build directory
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
-# Define the root of your project
-HYPERDBG_ROOT ?= /home/alish/Documents/HyperDbg/hyperdbg
+obj-m := Hyperdbg.o
-# Name of the final kernel module
-obj-m += mymodule.o
+Hyperdbg-objs := mock.o \
+ ../../include/platform/kernel/code/PlatformMem.o
-# List of object files required to build 'mymodule.o'
-# Kbuild will automatically compile the corresponding .c files
-mymodule-objs := mock.o \
- ../../include/platform/kernel/code/mem.o
-
-# Add include directories
-ccflags-y += -I$(HYPERDBG_ROOT)/include \
- -I$(HYPERDBG_ROOT)/include/platform/header
+ccflags-y += -I$(PWD)/../../include \
+ -I$(PWD)/../../include/platform/kernel/header
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
+
From 0f60d24921ce3476ad55cf81d2169c763701c0ec Mon Sep 17 00:00:00 2001
From: Alireza moradi
Date: Fri, 13 Feb 2026 11:14:37 +0330
Subject: [PATCH 094/323] change include path in mock.c
---
hyperdbg/linux/mock/mock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hyperdbg/linux/mock/mock.c b/hyperdbg/linux/mock/mock.c
index e9f91ee7..c2920adb 100644
--- a/hyperdbg/linux/mock/mock.c
+++ b/hyperdbg/linux/mock/mock.c
@@ -12,7 +12,7 @@
#include
#include
-#include "../header/PlatformMem.h"
+#include "../../include/platform/kernel/header/PlatformMem.h"
/**
* @brief Global pointer to the allocated test buffer.
From ae8ce290c1dab95b6ac376d5fee4554be7f7b2fd Mon Sep 17 00:00:00 2001
From: Alireza moradi
Date: Fri, 13 Feb 2026 11:57:01 +0330
Subject: [PATCH 095/323] change dummy file header location and some changes in
makefile
---
hyperdbg/include/platform/kernel/code/pch.h | 1 +
hyperdbg/include/platform/kernel/header/pch.h | 5 -----
hyperdbg/linux/mock/Makefile | 9 ++++++---
3 files changed, 7 insertions(+), 8 deletions(-)
create mode 100644 hyperdbg/include/platform/kernel/code/pch.h
delete mode 100644 hyperdbg/include/platform/kernel/header/pch.h
diff --git a/hyperdbg/include/platform/kernel/code/pch.h b/hyperdbg/include/platform/kernel/code/pch.h
new file mode 100644
index 00000000..b49f0338
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/pch.h
@@ -0,0 +1 @@
+// Empty pch.h for Linux
diff --git a/hyperdbg/include/platform/kernel/header/pch.h b/hyperdbg/include/platform/kernel/header/pch.h
deleted file mode 100644
index 4efa1695..00000000
--- a/hyperdbg/include/platform/kernel/header/pch.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* pch.h for Linux/Unix builds - empty to satisfy PCH requirements */
-#ifndef PCH_H
-#define PCH_H
-// This file is intentionally left blank for non-Windows platforms.
-#endif
\ No newline at end of file
diff --git a/hyperdbg/linux/mock/Makefile b/hyperdbg/linux/mock/Makefile
index f43942b7..5020982d 100644
--- a/hyperdbg/linux/mock/Makefile
+++ b/hyperdbg/linux/mock/Makefile
@@ -6,12 +6,15 @@ obj-m := Hyperdbg.o
Hyperdbg-objs := mock.o \
../../include/platform/kernel/code/PlatformMem.o
-ccflags-y += -I$(PWD)/../../include \
- -I$(PWD)/../../include/platform/kernel/header
+ccflags-y += -I$(PWD)/../../include
+ccflags-y += -I$(PWD)/../../include/platform/kernel/header
+ccflags-y += -I$(PWD)/../../include/platform/kernel/code
+
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
-
+ rm ../../include/platform/kernel/code/PlatformMem.o
+ rm ../../include/platform/kernel/code/.PlatformMem.o.cmd
From 6e0aee6c0192ff711639b16a953dc1892fadd807 Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 13 Feb 2026 15:25:45 +0100
Subject: [PATCH 096/323] add information for current state of supporting linux
---
CHANGELOG.md | 1 +
hyperdbg/linux/README.md | 9 +++++++++
hyperdbg/linux/mock/mock.c | 2 +-
3 files changed, 11 insertions(+), 1 deletion(-)
create mode 100644 hyperdbg/linux/README.md
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fdd153e5..bc8b05a4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,7 @@ New release of the HyperDbg Debugger.
- Script engine now supports writing libraries using the '#include' keyword thanks to [@xmaple555](https://github.com/xmaple555) ([link](https://docs.hyperdbg.org/commands/scripting-language/casting-and-inclusion))([link](https://github.com/HyperDbg/HyperDbg/issues/557))([link](https://github.com/HyperDbg/HyperDbg/pull/561))
- Initial codes for the hypertrace project by using Intel Last Branch Record (LBR) and Branch Trace Store (BTS) thanks to [@harimishal1](https://github.com/harimishal1) ([link](https://github.com/HyperDbg/HyperDbg/tree/master/hyperdbg/hypertrace))
- The hypertrace project is now linked to the hyperkd
+- Initial efforts to port HyperDbg to Linux have started thanks to [@xmaple555](https://github.com/xmaple555) ([link](https://github.com/HyperDbg/HyperDbg/pull/563))
### Changed
- Fix bugs for interpreting 'db_pa, 'dd_pa', 'eb_pa', and 'ed_pa' keywords in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/assumptions-and-evaluations#keywords))([link](https://github.com/HyperDbg/HyperDbg/pull/507))
diff --git a/hyperdbg/linux/README.md b/hyperdbg/linux/README.md
new file mode 100644
index 00000000..6ee5f6a6
--- /dev/null
+++ b/hyperdbg/linux/README.md
@@ -0,0 +1,9 @@
+# HyperDbg for Linux
+
+## Status
+
+⚠️ **HyperDbg for Linux is not yet ready.**
+
+Linux is currently **not supported**.
+
+We are in the process of porting HyperDbg to Linux. This effort is ongoing and may take some time to complete.
\ No newline at end of file
diff --git a/hyperdbg/linux/mock/mock.c b/hyperdbg/linux/mock/mock.c
index c2920adb..baf486ec 100644
--- a/hyperdbg/linux/mock/mock.c
+++ b/hyperdbg/linux/mock/mock.c
@@ -1,5 +1,5 @@
/**
- * @file mock_module.c
+ * @file mock.c
* @author Alireza moradi (alish014)
* @brief Mock Linux kernel module for testing cross-platform memory APIs.
* @details This file demonstrates the usage of the unified Platform* memory
From aafc61457fbfce760558112494bcb70e067d601c Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 13 Feb 2026 15:29:51 +0100
Subject: [PATCH 097/323] removed zydis submodule to update
---
.gitmodules | 3 ---
hyperdbg/dependencies/zydis | 1 -
2 files changed, 4 deletions(-)
delete mode 160000 hyperdbg/dependencies/zydis
diff --git a/.gitmodules b/.gitmodules
index b28c2459..6475936f 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
-[submodule "hyperdbg/dependencies/zydis"]
- path = hyperdbg/dependencies/zydis
- url = https://github.com/HyperDbg/zydis.git
[submodule "hyperdbg/dependencies/pdbex"]
path = hyperdbg/dependencies/pdbex
url = https://github.com/HyperDbg/pdbex.git
diff --git a/hyperdbg/dependencies/zydis b/hyperdbg/dependencies/zydis
deleted file mode 160000
index 9bfadd6a..00000000
--- a/hyperdbg/dependencies/zydis
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 9bfadd6a55fc92dbd37fa3ba089bf8b36622df4f
From bc2779f1c13406bcf21442f77544addb2b02cd80 Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 13 Feb 2026 16:05:35 +0100
Subject: [PATCH 098/323] add updated version of zydis to fix new WDK error
---
.gitmodules | 3 +++
CHANGELOG.md | 6 ++++--
hyperdbg/dependencies/zydis | 1 +
3 files changed, 8 insertions(+), 2 deletions(-)
create mode 160000 hyperdbg/dependencies/zydis
diff --git a/.gitmodules b/.gitmodules
index 6475936f..8cd3de74 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -10,3 +10,6 @@
[submodule "hyperdbg/dependencies/ia32-doc"]
path = hyperdbg/dependencies/ia32-doc
url = https://github.com/HyperDbg/ia32-doc.git
+[submodule "hyperdbg/dependencies/zydis"]
+ path = hyperdbg/dependencies/zydis
+ url = https://github.com/HyperDbg/zydis.git
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bc8b05a4..af94e3c7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,19 +4,21 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## [0.18.0.0] - 2026-XX-XX
+## [0.18.0.0] - 2026-02-16
New release of the HyperDbg Debugger.
### Added
- Script engine now supports writing libraries using the '#include' keyword thanks to [@xmaple555](https://github.com/xmaple555) ([link](https://docs.hyperdbg.org/commands/scripting-language/casting-and-inclusion))([link](https://github.com/HyperDbg/HyperDbg/issues/557))([link](https://github.com/HyperDbg/HyperDbg/pull/561))
- Initial codes for the hypertrace project by using Intel Last Branch Record (LBR) and Branch Trace Store (BTS) thanks to [@harimishal1](https://github.com/harimishal1) ([link](https://github.com/HyperDbg/HyperDbg/tree/master/hyperdbg/hypertrace))
- The hypertrace project is now linked to the hyperkd
-- Initial efforts to port HyperDbg to Linux have started thanks to [@xmaple555](https://github.com/xmaple555) ([link](https://github.com/HyperDbg/HyperDbg/pull/563))
+- Initial efforts to port HyperDbg to Linux have started thanks to [@Alish14](https://github.com/Alish14) ([link](https://github.com/HyperDbg/HyperDbg/pull/563))
### Changed
- Fix bugs for interpreting 'db_pa, 'dd_pa', 'eb_pa', and 'ed_pa' keywords in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/assumptions-and-evaluations#keywords))([link](https://github.com/HyperDbg/HyperDbg/pull/507))
- Fix variable types in the script engine ([link](https://github.com/HyperDbg/HyperDbg/commit/43b0245fa11b5c73ce4cd21d8b8787b86a05f89d))
- Fix and update array index for boolean expressions in the script engine ([link](https://github.com/HyperDbg/HyperDbg/commit/ba2cec3c12c3ff45ddc0004051884983ff62a0b3))
+- Fix and update array index for boolean expressions in the script engine ([link](https://github.com/HyperDbg/HyperDbg/commit/ba2cec3c12c3ff45ddc0004051884983ff62a0b3))
+- Fix compilation error in Zydis with the new Windows WDK ([link](https://github.com/HyperDbg/zydis/commit/e61f59332ce49f8853006573ca853e404fafdd08))
## [0.17.0.0] - 2025-11-10
New release of the HyperDbg Debugger. All credit for this release goes to [@xmaple555](https://github.com/xmaple555).
diff --git a/hyperdbg/dependencies/zydis b/hyperdbg/dependencies/zydis
new file mode 160000
index 00000000..e61f5933
--- /dev/null
+++ b/hyperdbg/dependencies/zydis
@@ -0,0 +1 @@
+Subproject commit e61f59332ce49f8853006573ca853e404fafdd08
From aa0a9ff7eed79e79b02e0eb22fdfedfe34ce99bc Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 16 Feb 2026 13:37:08 +0100
Subject: [PATCH 099/323] change version and fix CHANGELOG
---
CHANGELOG.md | 13 +++++++++----
hyperdbg/include/SDK/headers/Constants.h | 2 +-
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index af94e3c7..3ad1fb06 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.19.0.0] - 2026-XX-XX
+New release of the HyperDbg Debugger.
+
+### Added
+-
+
+### Changed
+-
+
## [0.18.0.0] - 2026-02-16
New release of the HyperDbg Debugger.
@@ -14,10 +23,6 @@ New release of the HyperDbg Debugger.
- Initial efforts to port HyperDbg to Linux have started thanks to [@Alish14](https://github.com/Alish14) ([link](https://github.com/HyperDbg/HyperDbg/pull/563))
### Changed
-- Fix bugs for interpreting 'db_pa, 'dd_pa', 'eb_pa', and 'ed_pa' keywords in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/assumptions-and-evaluations#keywords))([link](https://github.com/HyperDbg/HyperDbg/pull/507))
-- Fix variable types in the script engine ([link](https://github.com/HyperDbg/HyperDbg/commit/43b0245fa11b5c73ce4cd21d8b8787b86a05f89d))
-- Fix and update array index for boolean expressions in the script engine ([link](https://github.com/HyperDbg/HyperDbg/commit/ba2cec3c12c3ff45ddc0004051884983ff62a0b3))
-- Fix and update array index for boolean expressions in the script engine ([link](https://github.com/HyperDbg/HyperDbg/commit/ba2cec3c12c3ff45ddc0004051884983ff62a0b3))
- Fix compilation error in Zydis with the new Windows WDK ([link](https://github.com/HyperDbg/zydis/commit/e61f59332ce49f8853006573ca853e404fafdd08))
## [0.17.0.0] - 2025-11-10
diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h
index dc306339..734d4a9a 100644
--- a/hyperdbg/include/SDK/headers/Constants.h
+++ b/hyperdbg/include/SDK/headers/Constants.h
@@ -17,7 +17,7 @@
//////////////////////////////////////////////////
#define VERSION_MAJOR 0
-#define VERSION_MINOR 18
+#define VERSION_MINOR 19
#define VERSION_PATCH 0
//
From b0a839222b3a94bd53f65f42dd1a67542fcf971d Mon Sep 17 00:00:00 2001
From: Hari Mishal
Date: Thu, 19 Feb 2026 20:33:24 +0100
Subject: [PATCH 100/323] hypertrace now works when you load the vmm. call has
been commented out
---
hyperdbg/hypertrace/code/Lbr.c | 148 ++++++++++++-----------------
hyperdbg/hypertrace/code/Tracing.c | 46 +++++----
hyperdbg/hypertrace/header/Lbr.h | 2 +-
3 files changed, 88 insertions(+), 108 deletions(-)
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index cdf35f1c..ececdf09 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -130,6 +130,7 @@ LbrGetLbr(LBR_STATE * State)
* @param State
* @return VOID
*/
+/*
VOID
LbrPutLbr(LBR_STATE * State)
{
@@ -152,6 +153,36 @@ LbrPutLbr(LBR_STATE * State)
DbgCtlMsr |= DEBUGCTLMSR_LBR;
xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
}
+*/
+
+VOID
+LbrPutLbr(LBR_STATE * State)
+{
+ ULONGLONG DbgCtlMsr;
+ KIRQL OldIrql;
+
+ xacquire_lock(&LbrStateLock, &OldIrql);
+
+ // Force the selection mask
+ xwrmsr(MSR_LBR_SELECT, State->Config.LbrSelect);
+
+ // Clear hardware state
+ xwrmsr(MSR_LBR_TOS, 0);
+ for (ULONG i = 0; i < (ULONG)LbrCapacity; i++)
+ {
+ xwrmsr(MSR_LBR_NHM_FROM + i, 0);
+ xwrmsr(MSR_LBR_NHM_TO + i, 0);
+ }
+
+ xrelease_lock(&LbrStateLock, &OldIrql);
+
+ // Enable LBR and CLEAR 'Freeze LBRs on PMI' (Bit 11)
+ // If Bit 11 is set, the LBR stops as soon as a single interrupt happens.
+ xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
+ DbgCtlMsr |= DEBUGCTLMSR_LBR; // Bit 0 = 1
+ DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
+ xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+}
/**
* @brief Flush LBR MSRs by disabling LBR and clearing all LBR entries
@@ -201,6 +232,12 @@ LbrEnableLbr(LBR_IOCTL_REQUEST * Request)
{
LBR_STATE * State;
+ if (LbrCapacity == 0)
+ {
+ LogInfo("LBR: Aborting, CPU model not supported.\n");
+ return FALSE;
+ }
+
State = LbrFindLbrState(Request->LbrConfig.Pid);
if (State)
{
@@ -268,92 +305,33 @@ LbrDisableLbr(LBR_IOCTL_REQUEST * Request)
* @param Request
* @return BOOLEAN
*/
+
BOOLEAN
LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
{
- ULONGLONG i, BytesLeft;
- LBR_STATE * State;
- LBR_DATA ReqBuf;
- KIRQL OldIrql;
-
- State = LbrFindLbrState(Request->LbrConfig.Pid);
-
+ LBR_STATE * State = LbrFindLbrState(Request->LbrConfig.Pid);
if (State == NULL)
- {
- LogInfo("LIBIHT-COM: LBR not enabled for pid %d\n",
- Request->LbrConfig.Pid);
return FALSE;
- }
- //
- // Examine if the current process is the owner of the LBR state
- //
- if (State->Config.Pid == xgetcurrent_pid())
+ ULONG CurrentIdx;
+
+ LogInfo("--- LBR Chronological Trace (Oldest -> Newest) ---\n");
+
+ // The oldest entry is TOS + 1 (wrapped around the capacity)
+ // We loop 'LbrCapacity' times to cover the whole stack
+ for (ULONG i = 1; i <= LbrCapacity; i++)
{
- LogInfo("LIBIHT-COM: Dump LBR for current process\n");
+ CurrentIdx = (ULONG)(State->Data->LbrTos + i) % (ULONG)LbrCapacity;
- //
- // Get fresh LBR info
- //
- LbrGetLbr(State);
- LbrPutLbr(State);
+ // Skip empty entries
+ if (State->Data->Entries[CurrentIdx].From == 0)
+ continue;
+
+ LogInfo("[%2u] FROM: 0x%llx TO: 0x%llx\n",
+ CurrentIdx,
+ State->Data->Entries[CurrentIdx].From,
+ State->Data->Entries[CurrentIdx].To);
}
-
- xacquire_lock(&LbrStateLock, &OldIrql);
-
- //
- // Dump the LBR state to debug logs
- //
- LogInfo("PROC_PID: %d\n", State->Config.Pid);
- LogInfo("MSR_LBR_SELECT: 0x%llx\n", State->Config.LbrSelect);
- LogInfo("MSR_LBR_TOS: %lld\n", State->Data->LbrTos);
-
- for (i = 0; i < LbrCapacity; i++)
- {
- LogInfo("MSR_LBR_NHM_FROM[%2d]: 0x%llx\n", (ULONG)i, State->Data->Entries[i].From);
- LogInfo("MSR_LBR_NHM_TO [%2d]: 0x%llx\n", (ULONG)i, State->Data->Entries[i].To);
- }
-
- LogInfo("LIBIHT-COM: LBR info for cpuid: %d\n", xcoreid());
-
- //
- // Dump the LBR data to userspace buffer
- //
- if (Request->Buffer)
- {
- BytesLeft = xcopy_from_user(&ReqBuf, Request->Buffer, sizeof(LBR_DATA));
- if (BytesLeft)
- {
- LogInfo("LIBIHT-COM: Copy LBR data from user failed\n");
- xrelease_lock(LbrStateLock, &OldIrql);
- return FALSE;
- }
-
- ReqBuf.LbrTos = State->Data->LbrTos;
- if (ReqBuf.Entries)
- {
- BytesLeft = xcopy_to_user(ReqBuf.Entries,
- State->Data->Entries,
- LbrCapacity * sizeof(LBR_STACK_ENTRY));
-
- if (BytesLeft)
- {
- LogInfo("LIBIHT-COM: Copy LBR data to user failed\n");
- xrelease_lock(LbrStateLock, &OldIrql);
- return FALSE;
- }
- }
-
- BytesLeft = xcopy_to_user(Request->Buffer, &ReqBuf, sizeof(LBR_DATA));
- if (BytesLeft)
- {
- LogInfo("LIBIHT-COM: Copy LBR data to user failed\n");
- xrelease_lock(LbrStateLock, &OldIrql);
- return FALSE;
- }
- }
-
- xrelease_lock(LbrStateLock, &OldIrql);
return TRUE;
}
@@ -445,15 +423,13 @@ LbrFindLbrState(ULONG Pid)
LBR_STATE * RetState = NULL;
PLIST_ENTRY Link;
+ ULONG TargetPid = (Pid == 0) ? xgetcurrent_pid() : Pid;
xacquire_lock(&LbrStateLock, &OldIrql);
- //
- // Iterating through LIST_ENTRY correctly
- //
for (Link = LbrStateHead.Flink; Link != &LbrStateHead; Link = Link->Flink)
{
LBR_STATE * Curr = CONTAINING_RECORD(Link, LBR_STATE, List);
- if (Pid != 0 && Curr->Config.Pid == Pid)
+ if (Curr->Config.Pid == TargetPid)
{
RetState = Curr;
break;
@@ -481,7 +457,7 @@ LbrInsertLbrState(LBR_STATE * NewState)
xacquire_lock(&LbrStateLock, &OldIrql);
LogInfo("LIBIHT-COM: Insert LBR state for pid %d\n", NewState->Config.Pid);
xlist_add(NewState->List, LbrStateHead);
- xrelease_lock(LbrStateLock, &OldIrql);
+ xrelease_lock(&LbrStateLock, &OldIrql);
}
/**
@@ -506,7 +482,7 @@ LbrRemoveLbrState(LBR_STATE * OldState)
xfree(OldState->Data);
xfree(OldState);
- xrelease_lock(LbrStateLock, &OldIrql);
+ xrelease_lock(&LbrStateLock, &OldIrql);
}
/**
@@ -527,7 +503,7 @@ LbrFreeLbrStatList()
while (CurrLink != &LbrStateHead)
{
CurrState = CONTAINING_RECORD(CurrLink, LBR_STATE, List);
- CurrLink = CurrLink->Flink; // Get next before deleting
+ CurrLink = CurrLink->Flink;
xlist_del(CurrState->List);
xfree(CurrState->Data->Entries);
@@ -615,7 +591,7 @@ LbrCswitchHandler(ULONG PrevPid,
* @return VOID
*/
VOID
-LbrNewprocHandler(
+LbrNewProcHandler(
ULONG ParentPid,
ULONG ChildPid)
{
@@ -641,7 +617,7 @@ LbrNewprocHandler(
xmemcpy(ChildState->Data,
ParentState->Data,
sizeof(LBR_DATA) + LbrCapacity * sizeof(LBR_STACK_ENTRY));
- xrelease_lock(LbrStateLock, &OldIrql);
+ xrelease_lock(&LbrStateLock, &OldIrql);
LbrInsertLbrState(ChildState);
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index d45057d2..5095baa6 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -24,40 +24,44 @@ PerformLbrTraceAfterEnable()
{
LBR_IOCTL_REQUEST Request;
RtlZeroMemory(&Request, sizeof(LBR_IOCTL_REQUEST));
+
+ KAFFINITY Affinity = 1;
+ KeSetSystemAffinityThread(Affinity);
+
LbrInitialize();
- // Check if LBR is supported
- // This populates LbrCapacity based on the CPU Model
if (!LbrCheck())
- {
- LogInfo("LBR is not supported on this CPU model.\n");
return;
- }
- LogInfo("LBR Support detected. Capacity: %llu entries.\n", LbrCapacity);
- // Enable LBR
- // We set Pid to 0 to target the current process
Request.LbrConfig.Pid = 0;
- Request.LbrConfig.LbrSelect = 0; // Uses default LBR_SELECT defined in your headers
+ Request.LbrConfig.LbrSelect = LBR_SELECT;
if (LbrEnableLbr(&Request))
{
- LogInfo("LBR successfully enabled for current process.\n");
+ for (volatile int i = 0; i < 50; i++)
+ {
+ if (i % 2)
+ {
+ int a = i * 2;
+ a += 5;
+ }
+ else
+ {
+ __nop();
+ __nop();
+ }
+ }
+ LBR_STATE * State = LbrFindLbrState(0);
+ if (State)
+ LbrGetLbr(State);
- // LbrDumpLbr prints directly to LogInfo inside Lbr.c
- LogInfo("Dumping LBR Buffer:\n");
+ LogInfo("Dumping LBR Buffer...\n");
LbrDumpLbr(&Request);
- // This cleans up the LBR_STATE and stops the tracing
- if (LbrDisableLbr(&Request))
- {
- LogInfo("LBR successfully disabled.\n");
- }
- }
- else
- {
- LogInfo("Failed to enable LBR.\n");
+ LbrDisableLbr(&Request);
}
+
+ KeRevertToUserAffinityThread();
}
BOOLEAN
diff --git a/hyperdbg/hypertrace/header/Lbr.h b/hyperdbg/hypertrace/header/Lbr.h
index 8273347f..4fafda1d 100644
--- a/hyperdbg/hypertrace/header/Lbr.h
+++ b/hyperdbg/hypertrace/header/Lbr.h
@@ -22,7 +22,7 @@
#define MSR_LBR_TOS 0x000001C9
#define MSR_LBR_NHM_FROM 0x00000680
#define MSR_LBR_NHM_TO 0x000006C0
-#define LBR_SELECT 0x0
+#define LBR_SELECT 0x00000000
//////////////////////////////////////////////////
// Structures //
From 815e1b0ef9e97bf4ff0d9477448de660612993b5 Mon Sep 17 00:00:00 2001
From: Hari Mishal
Date: Thu, 19 Feb 2026 20:51:03 +0100
Subject: [PATCH 101/323] changed some comments
---
hyperdbg/hypertrace/code/Lbr.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index ececdf09..2e181494 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -315,15 +315,12 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
ULONG CurrentIdx;
- LogInfo("--- LBR Chronological Trace (Oldest -> Newest) ---\n");
+ LogInfo("LBR Chronological Trace\n");
- // The oldest entry is TOS + 1 (wrapped around the capacity)
- // We loop 'LbrCapacity' times to cover the whole stack
for (ULONG i = 1; i <= LbrCapacity; i++)
{
CurrentIdx = (ULONG)(State->Data->LbrTos + i) % (ULONG)LbrCapacity;
- // Skip empty entries
if (State->Data->Entries[CurrentIdx].From == 0)
continue;
From 3691c5e34334599f12754cc137f2aad526301763 Mon Sep 17 00:00:00 2001
From: Hari Mishal
Date: Thu, 19 Feb 2026 21:07:59 +0100
Subject: [PATCH 102/323] more comments changed
---
hyperdbg/hypertrace/code/Lbr.c | 24 ------------------------
1 file changed, 24 deletions(-)
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index 2e181494..e551c80b 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -130,30 +130,6 @@ LbrGetLbr(LBR_STATE * State)
* @param State
* @return VOID
*/
-/*
-VOID
-LbrPutLbr(LBR_STATE * State)
-{
- ULONG i;
- ULONGLONG DbgCtlMsr;
- KIRQL OldIrql;
-
- xacquire_lock(&LbrStateLock, &OldIrql);
- xwrmsr(MSR_LBR_SELECT, State->Config.LbrSelect);
- xwrmsr(MSR_LBR_TOS, State->Data->LbrTos);
-
- for (i = 0; i < (ULONG)LbrCapacity; i++)
- {
- xwrmsr(MSR_LBR_NHM_FROM + i, State->Data->Entries[i].From);
- xwrmsr(MSR_LBR_NHM_TO + i, State->Data->Entries[i].To);
- }
- xrelease_lock(&LbrStateLock, &OldIrql);
-
- xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
- DbgCtlMsr |= DEBUGCTLMSR_LBR;
- xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
-}
-*/
VOID
LbrPutLbr(LBR_STATE * State)
From bff7f7b7c30dadc442bde418dfad80203f77ebf0 Mon Sep 17 00:00:00 2001
From: ShirokoLEET <2498469253@qq.com>
Date: Fri, 20 Feb 2026 23:14:37 +0800
Subject: [PATCH 103/323] fix by change to tracking VA when split pages
---
hyperdbg/hyperhv/code/vmm/ept/Ept.c | 115 ++++++++++++++-----------
hyperdbg/hyperhv/header/common/State.h | 7 ++
2 files changed, 74 insertions(+), 48 deletions(-)
diff --git a/hyperdbg/hyperhv/code/vmm/ept/Ept.c b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
index a01fa70a..88ed3cd4 100644
--- a/hyperdbg/hyperhv/code/vmm/ept/Ept.c
+++ b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
@@ -13,11 +13,11 @@
*/
#include "pch.h"
-/**
- * @brief Check whether EPT features are present or not
- *
- * @return BOOLEAN Shows whether EPT is supported in this machine or not
- */
+ /**
+ * @brief Check whether EPT features are present or not
+ *
+ * @return BOOLEAN Shows whether EPT is supported in this machine or not
+ */
BOOLEAN
EptCheckFeatures(VOID)
{
@@ -196,7 +196,7 @@ EptBuildMtrrMap(VOID)
// address ranges from C0000H to FFFFFH. This range is divided into sixty-four 4-KByte sub-ranges, 8 ranges per
// register.
//
- if (MTRRCap.FixedRangeSupported && MTRRDefType.FixedRangeMtrrEnable)
+ if (MTRRCap.FixedRangeSupported && MTRRDefType.FixedRangeMtrrEnable)
{
const UINT32 K64Base = 0x0;
const UINT32 K64Size = 0x10000;
@@ -293,6 +293,28 @@ EptBuildMtrrMap(VOID)
return TRUE;
}
+/**
+ * @brief Resolve the split PML1 VA that belongs to a given PML2 entry
+ *
+ * @param EptPageTable The EPT page table
+ * @param TargetEntry The target PML2 entry
+ * @return PEPT_PML1_ENTRY Returns base VA of PML1 page, or NULL if not tracked
+ */
+_Must_inspect_result_
+static PEPT_PML1_ENTRY
+EptGetSplitPml1VaByPml2Entry(_In_ PVMM_EPT_PAGE_TABLE EptPageTable, _In_ PEPT_PML2_ENTRY TargetEntry)
+{
+ LIST_FOR_EACH_LINK(EptPageTable->DynamicSplitList, VMM_EPT_DYNAMIC_SPLIT, DynamicSplitList, CurrentSplit)
+ {
+ if (CurrentSplit->u.Entry == TargetEntry)
+ {
+ return &CurrentSplit->PML1[0];
+ }
+ }
+
+ return NULL;
+}
+
/**
* @brief Get the PML1 entry for this physical address if the page is split
*
@@ -306,7 +328,6 @@ EptGetPml1Entry(PVMM_EPT_PAGE_TABLE EptPageTable, SIZE_T PhysicalAddress)
SIZE_T Directory, DirectoryPointer, PML4Entry;
PEPT_PML2_ENTRY PML2;
PEPT_PML1_ENTRY PML1;
- PEPT_PML2_POINTER PML2Pointer;
Directory = ADDRMASK_EPT_PML2_INDEX(PhysicalAddress);
DirectoryPointer = ADDRMASK_EPT_PML3_INDEX(PhysicalAddress);
@@ -331,15 +352,9 @@ EptGetPml1Entry(PVMM_EPT_PAGE_TABLE EptPageTable, SIZE_T PhysicalAddress)
}
//
- // Conversion to get the right PageFrameNumber.
- // These pointers occupy the same place in the table and are directly convertible.
+ // Resolve the split PML1 VA that was recorded during EptSplitLargePage.
//
- PML2Pointer = (PEPT_PML2_POINTER)PML2;
-
- //
- // If it is, translate to the PML1 pointer
- //
- PML1 = (PEPT_PML1_ENTRY)PhysicalAddressToVirtualAddress(PML2Pointer->PageFrameNumber * PAGE_SIZE);
+ PML1 = EptGetSplitPml1VaByPml2Entry(EptPageTable, PML2);
if (!PML1)
{
@@ -370,7 +385,6 @@ EptGetPml1OrPml2Entry(PVMM_EPT_PAGE_TABLE EptPageTable, SIZE_T PhysicalAddress,
SIZE_T Directory, DirectoryPointer, PML4Entry;
PEPT_PML2_ENTRY PML2;
PEPT_PML1_ENTRY PML1;
- PEPT_PML2_POINTER PML2Pointer;
Directory = ADDRMASK_EPT_PML2_INDEX(PhysicalAddress);
DirectoryPointer = ADDRMASK_EPT_PML3_INDEX(PhysicalAddress);
@@ -396,15 +410,9 @@ EptGetPml1OrPml2Entry(PVMM_EPT_PAGE_TABLE EptPageTable, SIZE_T PhysicalAddress,
}
//
- // Conversion to get the right PageFrameNumber.
- // These pointers occupy the same place in the table and are directly convertible.
+ // Resolve the split PML1 VA that was recorded during EptSplitLargePage.
//
- PML2Pointer = (PEPT_PML2_POINTER)PML2;
-
- //
- // If it is, translate to the PML1 pointer
- //
- PML1 = (PEPT_PML1_ENTRY)PhysicalAddressToVirtualAddress(PML2Pointer->PageFrameNumber * PAGE_SIZE);
+ PML1 = EptGetSplitPml1VaByPml2Entry(EptPageTable, PML2);
if (!PML1)
{
@@ -460,8 +468,8 @@ EptGetPml2Entry(PVMM_EPT_PAGE_TABLE EptPageTable, SIZE_T PhysicalAddress)
*/
BOOLEAN
EptSplitLargePage(PVMM_EPT_PAGE_TABLE EptPageTable,
- BOOLEAN UsePreAllocatedBuffer,
- SIZE_T PhysicalAddress)
+ BOOLEAN UsePreAllocatedBuffer,
+ SIZE_T PhysicalAddress)
{
PVMM_EPT_DYNAMIC_SPLIT NewSplit;
EPT_PML1_ENTRY EntryTemplate;
@@ -585,6 +593,12 @@ EptSplitLargePage(PVMM_EPT_PAGE_TABLE EptPageTable,
//
RtlCopyMemory(TargetEntry, &NewPointer, sizeof(NewPointer));
+ //
+ // Track the split so we can directly resolve PML1 VA from PML2 entry
+ // without any PA->VA reverse translation.
+ //
+ InsertHeadList(&EptPageTable->DynamicSplitList, &(NewSplit->DynamicSplitList));
+
return TRUE;
}
@@ -607,9 +621,9 @@ EptIsValidForLargePage(SIZE_T PageFrameNumber)
CurrentMemoryRange = &g_EptState->MemoryRanges[CurrentMtrrRange];
if ((StartAddressOfPage <= CurrentMemoryRange->PhysicalEndAddress &&
- EndAddressOfPage > CurrentMemoryRange->PhysicalEndAddress) ||
+ EndAddressOfPage > CurrentMemoryRange->PhysicalEndAddress) ||
(StartAddressOfPage < CurrentMemoryRange->PhysicalBaseAddress &&
- EndAddressOfPage >= CurrentMemoryRange->PhysicalBaseAddress))
+ EndAddressOfPage >= CurrentMemoryRange->PhysicalBaseAddress))
{
return FALSE;
}
@@ -684,6 +698,11 @@ EptAllocateAndCreateIdentityPageTable(VOID)
return NULL;
}
+ //
+ // Keep track of dynamic 2MB->4KB split metadata for this EPT table.
+ //
+ InitializeListHead(&PageTable->DynamicSplitList);
+
//
// Create the template for the first entry in the PML4
//
@@ -774,8 +793,8 @@ EptAllocateAndCreateIdentityPageTable(VOID)
// The first 512GB is used for the main system memory and the rest is reserved for MMIO
//
PageTable->PML3_RSVD[i][j].PageFrameNumber = (SIZE_512_GB + // First 512GB is used for system memory
- (i * SIZE_512_GB) + (j * SIZE_1_GB)) >> // MMIO ranges
- 30; // Convert to page frame number
+ (i * SIZE_512_GB) + (j * SIZE_1_GB)) >> // MMIO ranges
+ 30; // Convert to page frame number
}
}
@@ -918,8 +937,8 @@ EptLogicalProcessorInitialize(VOID)
_Use_decl_annotations_
BOOLEAN
EptHandlePageHookExit(VIRTUAL_MACHINE_STATE * VCpu,
- VMX_EXIT_QUALIFICATION_EPT_VIOLATION ViolationQualification,
- UINT64 GuestPhysicalAddr)
+ VMX_EXIT_QUALIFICATION_EPT_VIOLATION ViolationQualification,
+ UINT64 GuestPhysicalAddr)
{
PVOID TargetPage;
UINT64 CurrentRip;
@@ -955,12 +974,12 @@ EptHandlePageHookExit(VIRTUAL_MACHINE_STATE * VCpu,
if (GuestPhysicalAddr >= HookedEntry->StartOfTargetPhysicalAddress && GuestPhysicalAddr <= HookedEntry->EndOfTargetPhysicalAddress)
{
ResultOfHandlingHook = EptHookHandleHookedPage(VCpu,
- HookedEntry,
- ViolationQualification,
- GuestPhysicalAddr,
- &HookedEntry->LastContextState,
- &IgnoreReadOrWriteOrExec,
- &IsExecViolation);
+ HookedEntry,
+ ViolationQualification,
+ GuestPhysicalAddr,
+ &HookedEntry->LastContextState,
+ &IgnoreReadOrWriteOrExec,
+ &IsExecViolation);
}
else
{
@@ -989,9 +1008,9 @@ EptHandlePageHookExit(VIRTUAL_MACHINE_STATE * VCpu,
// Restore to its original entry for one instruction
//
EptSetPML1AndInvalidateTLB(VCpu,
- TargetPage,
- HookedEntry->OriginalEntry,
- InveptSingleContext);
+ TargetPage,
+ HookedEntry->OriginalEntry,
+ InveptSingleContext);
//
// Next we have to save the current hooked entry to restore on the next instruction's vm-exit
@@ -1128,7 +1147,7 @@ EptHandleMisconfiguration(VOID)
LogInfo("EPT Misconfiguration!");
LogError("Err, a field in the EPT paging structure was invalid, faulting guest address : 0x%llx",
- GuestPhysicalAddr);
+ GuestPhysicalAddr);
//
// We can't continue now.
@@ -1149,9 +1168,9 @@ EptHandleMisconfiguration(VOID)
_Use_decl_annotations_
VOID
EptSetPML1AndInvalidateTLB(VIRTUAL_MACHINE_STATE * VCpu,
- PEPT_PML1_ENTRY EntryAddress,
- EPT_PML1_ENTRY EntryValue,
- INVEPT_TYPE InvalidationType)
+ PEPT_PML1_ENTRY EntryAddress,
+ EPT_PML1_ENTRY EntryValue,
+ INVEPT_TYPE InvalidationType)
{
//
// set the value
@@ -1229,9 +1248,9 @@ EptCheckAndHandleEptHookBreakpoints(VIRTUAL_MACHINE_STATE * VCpu, UINT64 GuestRi
// Restore to its original entry for one instruction
//
EptSetPML1AndInvalidateTLB(VCpu,
- TargetPage,
- HookedEntry->OriginalEntry,
- InveptSingleContext);
+ TargetPage,
+ HookedEntry->OriginalEntry,
+ InveptSingleContext);
//
// Next we have to save the current hooked entry to restore on the next instruction's vm-exit
diff --git a/hyperdbg/hyperhv/header/common/State.h b/hyperdbg/hyperhv/header/common/State.h
index b131839d..8204bef4 100644
--- a/hyperdbg/hyperhv/header/common/State.h
+++ b/hyperdbg/hyperhv/header/common/State.h
@@ -132,6 +132,13 @@ typedef struct _VMM_EPT_PAGE_TABLE
DECLSPEC_ALIGN(PAGE_SIZE)
EPT_PML2_ENTRY PML2[VMM_EPT_PML3E_COUNT][VMM_EPT_PML2E_COUNT];
+ /**
+ * @brief Tracks dynamic 2MB->4KB splits for this EPT table.
+ * @details Each item stores a direct VA to the split PML1 page and the
+ * corresponding PML2 entry it services.
+ */
+ LIST_ENTRY DynamicSplitList;
+
} VMM_EPT_PAGE_TABLE, *PVMM_EPT_PAGE_TABLE;
//////////////////////////////////////////////////
From fba6f66e1a5cee473f148c08a026cc7fcd9023bc Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 24 Feb 2026 15:48:23 +0100
Subject: [PATCH 104/323] minor refactor and modify changelog
---
CHANGELOG.md | 4 +-
hyperdbg/hyperhv/code/vmm/ept/Ept.c | 82 +++++++++++++-------------
hyperdbg/hyperhv/header/common/State.h | 4 +-
hyperdbg/hyperhv/header/vmm/ept/Ept.h | 4 +-
4 files changed, 47 insertions(+), 47 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3ad1fb06..12bf2482 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,10 +8,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
New release of the HyperDbg Debugger.
### Added
--
+- Hypertrace now works with HyperDbg VMM ([link](https://github.com/HyperDbg/HyperDbg/pull/568))
### Changed
--
+- Fix the problem of getting the PML1 entry of the target address on Intel Core Ultra processors (#567) ([link](https://github.com/HyperDbg/HyperDbg/issues/567))
## [0.18.0.0] - 2026-02-16
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/hyperhv/code/vmm/ept/Ept.c b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
index 88ed3cd4..5052b4e0 100644
--- a/hyperdbg/hyperhv/code/vmm/ept/Ept.c
+++ b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
@@ -13,11 +13,11 @@
*/
#include "pch.h"
- /**
- * @brief Check whether EPT features are present or not
- *
- * @return BOOLEAN Shows whether EPT is supported in this machine or not
- */
+/**
+ * @brief Check whether EPT features are present or not
+ *
+ * @return BOOLEAN Shows whether EPT is supported in this machine or not
+ */
BOOLEAN
EptCheckFeatures(VOID)
{
@@ -196,7 +196,7 @@ EptBuildMtrrMap(VOID)
// address ranges from C0000H to FFFFFH. This range is divided into sixty-four 4-KByte sub-ranges, 8 ranges per
// register.
//
- if (MTRRCap.FixedRangeSupported && MTRRDefType.FixedRangeMtrrEnable)
+ if (MTRRCap.FixedRangeSupported && MTRRDefType.FixedRangeMtrrEnable)
{
const UINT32 K64Base = 0x0;
const UINT32 K64Size = 0x10000;
@@ -306,7 +306,7 @@ EptGetSplitPml1VaByPml2Entry(_In_ PVMM_EPT_PAGE_TABLE EptPageTable, _In_ PEPT_PM
{
LIST_FOR_EACH_LINK(EptPageTable->DynamicSplitList, VMM_EPT_DYNAMIC_SPLIT, DynamicSplitList, CurrentSplit)
{
- if (CurrentSplit->u.Entry == TargetEntry)
+ if (CurrentSplit->Fields.Entry == TargetEntry)
{
return &CurrentSplit->PML1[0];
}
@@ -325,9 +325,9 @@ EptGetSplitPml1VaByPml2Entry(_In_ PVMM_EPT_PAGE_TABLE EptPageTable, _In_ PEPT_PM
PEPT_PML1_ENTRY
EptGetPml1Entry(PVMM_EPT_PAGE_TABLE EptPageTable, SIZE_T PhysicalAddress)
{
- SIZE_T Directory, DirectoryPointer, PML4Entry;
- PEPT_PML2_ENTRY PML2;
- PEPT_PML1_ENTRY PML1;
+ SIZE_T Directory, DirectoryPointer, PML4Entry;
+ PEPT_PML2_ENTRY PML2;
+ PEPT_PML1_ENTRY PML1;
Directory = ADDRMASK_EPT_PML2_INDEX(PhysicalAddress);
DirectoryPointer = ADDRMASK_EPT_PML3_INDEX(PhysicalAddress);
@@ -352,7 +352,7 @@ EptGetPml1Entry(PVMM_EPT_PAGE_TABLE EptPageTable, SIZE_T PhysicalAddress)
}
//
- // Resolve the split PML1 VA that was recorded during EptSplitLargePage.
+ // Resolve the split PML1 VA that was recorded during EptSplitLargePage
//
PML1 = EptGetSplitPml1VaByPml2Entry(EptPageTable, PML2);
@@ -382,9 +382,9 @@ EptGetPml1Entry(PVMM_EPT_PAGE_TABLE EptPageTable, SIZE_T PhysicalAddress)
PVOID
EptGetPml1OrPml2Entry(PVMM_EPT_PAGE_TABLE EptPageTable, SIZE_T PhysicalAddress, BOOLEAN * IsLargePage)
{
- SIZE_T Directory, DirectoryPointer, PML4Entry;
- PEPT_PML2_ENTRY PML2;
- PEPT_PML1_ENTRY PML1;
+ SIZE_T Directory, DirectoryPointer, PML4Entry;
+ PEPT_PML2_ENTRY PML2;
+ PEPT_PML1_ENTRY PML1;
Directory = ADDRMASK_EPT_PML2_INDEX(PhysicalAddress);
DirectoryPointer = ADDRMASK_EPT_PML3_INDEX(PhysicalAddress);
@@ -410,7 +410,7 @@ EptGetPml1OrPml2Entry(PVMM_EPT_PAGE_TABLE EptPageTable, SIZE_T PhysicalAddress,
}
//
- // Resolve the split PML1 VA that was recorded during EptSplitLargePage.
+ // Resolve the split PML1 VA that was recorded during EptSplitLargePage
//
PML1 = EptGetSplitPml1VaByPml2Entry(EptPageTable, PML2);
@@ -468,8 +468,8 @@ EptGetPml2Entry(PVMM_EPT_PAGE_TABLE EptPageTable, SIZE_T PhysicalAddress)
*/
BOOLEAN
EptSplitLargePage(PVMM_EPT_PAGE_TABLE EptPageTable,
- BOOLEAN UsePreAllocatedBuffer,
- SIZE_T PhysicalAddress)
+ BOOLEAN UsePreAllocatedBuffer,
+ SIZE_T PhysicalAddress)
{
PVMM_EPT_DYNAMIC_SPLIT NewSplit;
EPT_PML1_ENTRY EntryTemplate;
@@ -520,7 +520,7 @@ EptSplitLargePage(PVMM_EPT_PAGE_TABLE EptPageTable,
// Point back to the entry in the dynamic split for easy reference for which entry that
// dynamic split is for
//
- NewSplit->u.Entry = TargetEntry;
+ NewSplit->Fields.Entry = TargetEntry;
//
// Make a template for RWX
@@ -595,7 +595,7 @@ EptSplitLargePage(PVMM_EPT_PAGE_TABLE EptPageTable,
//
// Track the split so we can directly resolve PML1 VA from PML2 entry
- // without any PA->VA reverse translation.
+ // without any PA->VA reverse translation
//
InsertHeadList(&EptPageTable->DynamicSplitList, &(NewSplit->DynamicSplitList));
@@ -621,9 +621,9 @@ EptIsValidForLargePage(SIZE_T PageFrameNumber)
CurrentMemoryRange = &g_EptState->MemoryRanges[CurrentMtrrRange];
if ((StartAddressOfPage <= CurrentMemoryRange->PhysicalEndAddress &&
- EndAddressOfPage > CurrentMemoryRange->PhysicalEndAddress) ||
+ EndAddressOfPage > CurrentMemoryRange->PhysicalEndAddress) ||
(StartAddressOfPage < CurrentMemoryRange->PhysicalBaseAddress &&
- EndAddressOfPage >= CurrentMemoryRange->PhysicalBaseAddress))
+ EndAddressOfPage >= CurrentMemoryRange->PhysicalBaseAddress))
{
return FALSE;
}
@@ -793,8 +793,8 @@ EptAllocateAndCreateIdentityPageTable(VOID)
// The first 512GB is used for the main system memory and the rest is reserved for MMIO
//
PageTable->PML3_RSVD[i][j].PageFrameNumber = (SIZE_512_GB + // First 512GB is used for system memory
- (i * SIZE_512_GB) + (j * SIZE_1_GB)) >> // MMIO ranges
- 30; // Convert to page frame number
+ (i * SIZE_512_GB) + (j * SIZE_1_GB)) >> // MMIO ranges
+ 30; // Convert to page frame number
}
}
@@ -937,8 +937,8 @@ EptLogicalProcessorInitialize(VOID)
_Use_decl_annotations_
BOOLEAN
EptHandlePageHookExit(VIRTUAL_MACHINE_STATE * VCpu,
- VMX_EXIT_QUALIFICATION_EPT_VIOLATION ViolationQualification,
- UINT64 GuestPhysicalAddr)
+ VMX_EXIT_QUALIFICATION_EPT_VIOLATION ViolationQualification,
+ UINT64 GuestPhysicalAddr)
{
PVOID TargetPage;
UINT64 CurrentRip;
@@ -974,12 +974,12 @@ EptHandlePageHookExit(VIRTUAL_MACHINE_STATE * VCpu,
if (GuestPhysicalAddr >= HookedEntry->StartOfTargetPhysicalAddress && GuestPhysicalAddr <= HookedEntry->EndOfTargetPhysicalAddress)
{
ResultOfHandlingHook = EptHookHandleHookedPage(VCpu,
- HookedEntry,
- ViolationQualification,
- GuestPhysicalAddr,
- &HookedEntry->LastContextState,
- &IgnoreReadOrWriteOrExec,
- &IsExecViolation);
+ HookedEntry,
+ ViolationQualification,
+ GuestPhysicalAddr,
+ &HookedEntry->LastContextState,
+ &IgnoreReadOrWriteOrExec,
+ &IsExecViolation);
}
else
{
@@ -1008,9 +1008,9 @@ EptHandlePageHookExit(VIRTUAL_MACHINE_STATE * VCpu,
// Restore to its original entry for one instruction
//
EptSetPML1AndInvalidateTLB(VCpu,
- TargetPage,
- HookedEntry->OriginalEntry,
- InveptSingleContext);
+ TargetPage,
+ HookedEntry->OriginalEntry,
+ InveptSingleContext);
//
// Next we have to save the current hooked entry to restore on the next instruction's vm-exit
@@ -1147,7 +1147,7 @@ EptHandleMisconfiguration(VOID)
LogInfo("EPT Misconfiguration!");
LogError("Err, a field in the EPT paging structure was invalid, faulting guest address : 0x%llx",
- GuestPhysicalAddr);
+ GuestPhysicalAddr);
//
// We can't continue now.
@@ -1168,9 +1168,9 @@ EptHandleMisconfiguration(VOID)
_Use_decl_annotations_
VOID
EptSetPML1AndInvalidateTLB(VIRTUAL_MACHINE_STATE * VCpu,
- PEPT_PML1_ENTRY EntryAddress,
- EPT_PML1_ENTRY EntryValue,
- INVEPT_TYPE InvalidationType)
+ PEPT_PML1_ENTRY EntryAddress,
+ EPT_PML1_ENTRY EntryValue,
+ INVEPT_TYPE InvalidationType)
{
//
// set the value
@@ -1248,9 +1248,9 @@ EptCheckAndHandleEptHookBreakpoints(VIRTUAL_MACHINE_STATE * VCpu, UINT64 GuestRi
// Restore to its original entry for one instruction
//
EptSetPML1AndInvalidateTLB(VCpu,
- TargetPage,
- HookedEntry->OriginalEntry,
- InveptSingleContext);
+ TargetPage,
+ HookedEntry->OriginalEntry,
+ InveptSingleContext);
//
// Next we have to save the current hooked entry to restore on the next instruction's vm-exit
diff --git a/hyperdbg/hyperhv/header/common/State.h b/hyperdbg/hyperhv/header/common/State.h
index 8204bef4..e1890b44 100644
--- a/hyperdbg/hyperhv/header/common/State.h
+++ b/hyperdbg/hyperhv/header/common/State.h
@@ -134,8 +134,8 @@ typedef struct _VMM_EPT_PAGE_TABLE
/**
* @brief Tracks dynamic 2MB->4KB splits for this EPT table.
- * @details Each item stores a direct VA to the split PML1 page and the
- * corresponding PML2 entry it services.
+ * NOTE: Each item stores a direct VA to the split PML1 page and the corresponding PML2 entry it services.
+ *
*/
LIST_ENTRY DynamicSplitList;
diff --git a/hyperdbg/hyperhv/header/vmm/ept/Ept.h b/hyperdbg/hyperhv/header/vmm/ept/Ept.h
index fdd73392..b8a69750 100644
--- a/hyperdbg/hyperhv/header/vmm/ept/Ept.h
+++ b/hyperdbg/hyperhv/header/vmm/ept/Ept.h
@@ -147,14 +147,14 @@ typedef struct _VMM_EPT_DYNAMIC_SPLIT
EPT_PML1_ENTRY PML1[VMM_EPT_PML1E_COUNT];
/**
- * @brief The pointer to the 2MB entry in the page table which this split is servicing.
+ * @brief The pointer to the 2MB entry in the page table which this split is servicing
*
*/
union
{
PEPT_PML2_ENTRY Entry;
PEPT_PML2_POINTER Pointer;
- } u;
+ } Fields;
/**
* @brief Linked list entries for each dynamic split
From e040a1c71148923471b1e3c4a403d7a0a8e2667c Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 15 Mar 2026 21:53:58 +0100
Subject: [PATCH 105/323] fix .clang-format error
---
CHANGELOG.md | 1 +
hyperdbg/.clang-format | 131 +----------------------------------------
2 files changed, 2 insertions(+), 130 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 12bf2482..053f22b9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,7 @@ New release of the HyperDbg Debugger.
### Changed
- Fix the problem of getting the PML1 entry of the target address on Intel Core Ultra processors (#567) ([link](https://github.com/HyperDbg/HyperDbg/issues/567))
+- Fix .clang-format formating error
## [0.18.0.0] - 2026-02-16
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/.clang-format b/hyperdbg/.clang-format
index 3dbd8e3f..2a528fa1 100644
--- a/hyperdbg/.clang-format
+++ b/hyperdbg/.clang-format
@@ -1,132 +1,3 @@
-Language: C
-BasedOnStyle: webkit
-AccessModifierOffset: -4
-
-AlignAfterOpenBracket: Align
-AlignConsecutiveAssignments: true
-AlignConsecutiveDeclarations: true
-
-AlignConsecutiveMacros: true
-
-AlignEscapedNewlines: Left
-AlignOperands: true
-
-AlignTrailingComments: true
-
-AllowAllArgumentsOnNextLine: false
-AllowAllParametersOfDeclarationOnNextLine: false
-
-AllowShortBlocksOnASingleLine: false
-AllowShortCaseLabelsOnASingleLine: false
-AllowShortFunctionsOnASingleLine: Inline
-AllowShortIfStatementsOnASingleLine: false
-AllowShortLoopsOnASingleLine: false
-AlwaysBreakAfterReturnType: TopLevel
-AlwaysBreakBeforeMultilineStrings: false
-
-AlwaysBreakTemplateDeclarations: true #false
-
-BinPackArguments: false
-BinPackParameters: false
-
-BreakBeforeBraces: Custom
-BraceWrapping:
- AfterCaseLabel: true
- AfterClass: true
- AfterControlStatement: true
- AfterEnum: true
- AfterFunction: true
- AfterNamespace: false
- AfterStruct: true
- AfterUnion: true
- AfterExternBlock: false
- BeforeCatch: true
- BeforeElse: true
-
-BreakBeforeBinaryOperators: None
-BreakBeforeTernaryOperators: true
-BreakConstructorInitializers: AfterColon
-BreakStringLiterals: false
-
-ColumnLimit: 0
-CommentPragmas: '^begin_wpp|^end_wpp|^FUNC |^USESUFFIX |^USESUFFIX '
-
-ConstructorInitializerAllOnOneLineOrOnePerLine: true
-ConstructorInitializerIndentWidth: 4
-ContinuationIndentWidth: 4
-Cpp11BracedListStyle: true
-
-DerivePointerAlignment: false
-ExperimentalAutoDetectBinPacking: false
-
-IndentCaseLabels: false
-IndentPPDirectives: AfterHash
-IndentWidth: 4
-
-KeepEmptyLinesAtTheStartOfBlocks: false
-
-MacroBlockBegin: '^BEGIN_MODULE$|^BEGIN_TEST_CLASS$|^BEGIN_TEST_METHOD$'
-MacroBlockEnd: '^END_MODULE$|^END_TEST_CLASS$|^END_TEST_METHOD$'
-
-MaxEmptyLinesToKeep: 1
-NamespaceIndentation: None #All
-PointerAlignment: Middle
-ReflowComments: true
-SortIncludes: false
-
-SpaceAfterCStyleCast: false
-SpaceBeforeAssignmentOperators: true
-SpaceBeforeCtorInitializerColon: true
-SpaceBeforeParens: ControlStatements
-SpaceBeforeRangeBasedForLoopColon: true
-SpaceInEmptyParentheses: false
-SpacesInAngles: false
-SpacesInCStyleCastParentheses: false
-SpacesInParentheses: false
-SpacesInSquareBrackets: false
-
-Standard: Cpp11
-StatementMacros: [
- 'EXTERN_C',
- 'PAGED',
- 'PAGEDX',
- 'NONPAGED',
- 'PNPCODE',
- 'INITCODE',
- '_At_',
- '_When_',
- '_Success_',
- '_Check_return_',
- '_Must_inspect_result_',
- '_IRQL_requires_same_',
- '_IRQL_requires_',
- '_IRQL_requires_max_',
- '_IRQL_requires_min_',
- '_IRQL_saves_',
- '_IRQL_restores_',
- '_IRQL_saves_global_',
- '_IRQL_restores_global_',
- '_IRQL_raises_',
- '_IRQL_lowers_',
- '_Acquires_lock_',
- '_Releases_lock_',
- '_Acquires_exclusive_lock_',
- '_Releases_exclusive_lock_',
- '_Acquires_shared_lock_',
- '_Releases_shared_lock_',
- '_Requires_lock_held_',
- '_Use_decl_annotations_',
- '_Guarded_by_',
- '__drv_preferredFunction',
- '__drv_allocatesMem',
- '__drv_freesMem',
- ]
-
-TabWidth: '4'
-UseTab: Never
-
----
-
Language: Cpp
BasedOnStyle: webkit
AccessModifierOffset: -4
@@ -252,4 +123,4 @@ StatementMacros: [
]
TabWidth: '4'
-UseTab: Never
+UseTab: Never
\ No newline at end of file
From 2329fd3c19104114e53243090b017acdbe3ab539 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 5 Apr 2026 22:56:59 +0200
Subject: [PATCH 106/323] add user mode side of initializing LBR
---
hyperdbg/hyperkd/code/driver/Loader.c | 96 +++++-----
hyperdbg/hyperkd/header/driver/Loader.h | 3 +
hyperdbg/hypertrace/code/Tracing.c | 2 +-
hyperdbg/include/SDK/headers/Connection.h | 1 +
hyperdbg/include/SDK/headers/Ioctls.h | 7 +
.../include/SDK/headers/RequestStructures.h | 32 ++++
.../commands/extension-commands/lbr.cpp | 169 ++++++++++++++++++
.../code/debugger/core/interpreter.cpp | 2 +
.../code/debugger/kernel-level/kd.cpp | 35 ++++
hyperdbg/libhyperdbg/header/commands.h | 6 +
hyperdbg/libhyperdbg/header/debugger.h | 1 +
hyperdbg/libhyperdbg/header/help.h | 3 +
hyperdbg/libhyperdbg/header/kd.h | 3 +
hyperdbg/libhyperdbg/libhyperdbg.vcxproj | 1 +
.../libhyperdbg/libhyperdbg.vcxproj.filters | 3 +
15 files changed, 320 insertions(+), 44 deletions(-)
create mode 100644 hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index d8f056fb..c62be847 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -10,6 +10,59 @@
*/
#include "pch.h"
+/**
+ * @brief Initialize the hyper trace module
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+LoaderInitHyperTrace()
+{
+ HYPERTRACE_CALLBACKS HyperTraceCallbacks = {0};
+
+ //
+ // *** Fill the callbacks for using hypertrace ***
+ //
+
+ //
+ // Fill the callbacks for using hyperlog in hypertrace
+ // We use the callbacks directly to avoid two calls to the same function
+ //
+ HyperTraceCallbacks.LogCallbackPrepareAndSendMessageToQueueWrapper = LogCallbackPrepareAndSendMessageToQueueWrapper;
+ HyperTraceCallbacks.LogCallbackSendMessageToQueue = LogCallbackSendMessageToQueue;
+ HyperTraceCallbacks.LogCallbackSendBuffer = LogCallbackSendBuffer;
+ HyperTraceCallbacks.LogCallbackCheckIfBufferIsFull = LogCallbackCheckIfBufferIsFull;
+
+ //
+ // Memory callbacks
+ //
+ HyperTraceCallbacks.CheckAccessValidityAndSafety = CheckAccessValidityAndSafety;
+ HyperTraceCallbacks.MemoryMapperReadMemorySafeOnTargetProcess = MemoryMapperReadMemorySafeOnTargetProcess;
+ HyperTraceCallbacks.MemoryMapperWriteMemorySafeOnTargetProcess = MemoryMapperWriteMemorySafeOnTargetProcess;
+
+ //
+ // Common callbacks
+ //
+ HyperTraceCallbacks.CommonGetProcessNameFromProcessControlBlock = CommonGetProcessNameFromProcessControlBlock;
+
+ //
+ // Initialize hypertrace module
+ //
+ if (HyperTraceInit(&HyperTraceCallbacks))
+ {
+ LogDebugInfo("HyperDbg's hypertrace loaded successfully");
+ return TRUE;
+ }
+ else
+ {
+ //
+ // We won't fail the loading just because of hypertrace, so we just log the error and continue without loading hypertrace
+ //
+ LogDebugInfo("Err, HyperDbg's hypertrace was not loaded");
+ return FALSE;
+ }
+}
+
/**
* @brief Initialize the VMM and Debugger
*
@@ -20,7 +73,6 @@ LoaderInitVmmAndDebugger()
{
MESSAGE_TRACING_CALLBACKS MsgTracingCallbacks = {0};
VMM_CALLBACKS VmmCallbacks = {0};
- HYPERTRACE_CALLBACKS HyperTraceCallbacks = {0};
//
// Allow to server IOCTL
@@ -70,31 +122,6 @@ LoaderInitVmmAndDebugger()
//
VmmCallbacks.InterceptionCallbackTriggerCr3ProcessChange = ProcessTriggerCr3ProcessChange;
- //
- // *** Fill the callbacks for using hypertrace ***
- //
-
- //
- // Fill the callbacks for using hyperlog in hypertrace
- // We use the callbacks directly to avoid two calls to the same function
- //
- HyperTraceCallbacks.LogCallbackPrepareAndSendMessageToQueueWrapper = LogCallbackPrepareAndSendMessageToQueueWrapper;
- HyperTraceCallbacks.LogCallbackSendMessageToQueue = LogCallbackSendMessageToQueue;
- HyperTraceCallbacks.LogCallbackSendBuffer = LogCallbackSendBuffer;
- HyperTraceCallbacks.LogCallbackCheckIfBufferIsFull = LogCallbackCheckIfBufferIsFull;
-
- //
- // Memory callbacks
- //
- HyperTraceCallbacks.CheckAccessValidityAndSafety = CheckAccessValidityAndSafety;
- HyperTraceCallbacks.MemoryMapperReadMemorySafeOnTargetProcess = MemoryMapperReadMemorySafeOnTargetProcess;
- HyperTraceCallbacks.MemoryMapperWriteMemorySafeOnTargetProcess = MemoryMapperWriteMemorySafeOnTargetProcess;
-
- //
- // Common callbacks
- //
- HyperTraceCallbacks.CommonGetProcessNameFromProcessControlBlock = CommonGetProcessNameFromProcessControlBlock;
-
//
// Initialize message tracer
//
@@ -119,23 +146,6 @@ LoaderInitVmmAndDebugger()
//
g_HandleInUse = TRUE;
- //
- // Initialize hypertrace module
- //
- /*
- if (HyperTraceInit(&HyperTraceCallbacks))
- {
- LogDebugInfo("HyperDbg's hypertrace loaded successfully");
- }
- else
- {
- //
- // We won't fail the loading just because of hypertrace, so we just log the error and continue without loading hypertrace
- //
- LogDebugInfo("Err, HyperDbg's hypertrace was not loaded");
- }
- */
-
return TRUE;
}
else
diff --git a/hyperdbg/hyperkd/header/driver/Loader.h b/hyperdbg/hyperkd/header/driver/Loader.h
index 955231cf..cb030d55 100644
--- a/hyperdbg/hyperkd/header/driver/Loader.h
+++ b/hyperdbg/hyperkd/header/driver/Loader.h
@@ -19,5 +19,8 @@
BOOLEAN
LoaderInitVmmAndDebugger();
+BOOLEAN
+LoaderInitHyperTrace();
+
VOID
LoaderUninitializeLogTracer();
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 5095baa6..d0f032df 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -10,7 +10,7 @@
*/
#include "pch.h"
-#include "Lbr.h"
+
/**
* @brief Hide debugger on transparent-mode (activate transparent-mode)
*
diff --git a/hyperdbg/include/SDK/headers/Connection.h b/hyperdbg/include/SDK/headers/Connection.h
index 912f3b8b..940bc562 100644
--- a/hyperdbg/include/SDK/headers/Connection.h
+++ b/hyperdbg/include/SDK/headers/Connection.h
@@ -101,6 +101,7 @@ typedef enum _DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_QUERY_PCIDEVINFO,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_READ_IDT_ENTRIES,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_SMI_OPERATION,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_LBR_OPERATION,
//
// Debuggee to debugger
diff --git a/hyperdbg/include/SDK/headers/Ioctls.h b/hyperdbg/include/SDK/headers/Ioctls.h
index d29be9f7..b3d7db3c 100644
--- a/hyperdbg/include/SDK/headers/Ioctls.h
+++ b/hyperdbg/include/SDK/headers/Ioctls.h
@@ -330,3 +330,10 @@
*/
#define IOCTL_PERFORM_SMI_OPERATION \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x826, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+/**
+ * @brief ioctl, to perform LBR operations
+ *
+ */
+#define IOCTL_PERFORM_LBR_OPERATION \
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x827, METHOD_BUFFERED, FILE_ANY_ACCESS)
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index d5033bb6..f66ff34a 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1264,6 +1264,38 @@ typedef struct _SMI_OPERATION_PACKETS
/* ==============================================================================================
*/
+/**
+ * @brief Perform actions related to LBR
+ *
+ */
+typedef enum _LBR_OPERATION_REQUEST_TYPE
+{
+ LBR_OPERATION_REQUEST_TYPE_ENABLE,
+ LBR_OPERATION_REQUEST_TYPE_DISABLE,
+
+} LBR_OPERATION_REQUEST_TYPE;
+
+/**
+ * @brief The structure of LBR result packet in HyperDbg
+ *
+ */
+typedef struct _LBR_OPERATION_PACKETS
+{
+ LBR_OPERATION_REQUEST_TYPE LbrOperationType;
+ UINT32 KernelStatus;
+
+} LBR_OPERATION_PACKETS, *PLBR_OPERATION_PACKETS;
+
+/**
+ * @brief Debugger size of LBR_OPERATION_PACKETS
+ *
+ */
+#define SIZEOF_LBR_OPERATION_PACKETS \
+ sizeof(LBR_OPERATION_PACKETS)
+
+/* ==============================================================================================
+ */
+
/**
* @brief Maximum number of IDT entries
*
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
new file mode 100644
index 00000000..dc824ea6
--- /dev/null
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -0,0 +1,169 @@
+/**
+ * @file lbr.cpp
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief !lbr command
+ * @details
+ * @version 0.19
+ * @date 2026-04-05
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+//
+// Global Variables
+//
+extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
+
+/**
+ * @brief help of the !lbr command
+ *
+ * @return VOID
+ */
+VOID
+CommandLbrHelp()
+{
+ ShowMessages("!lbr : enables and disables Last Branch Record (LBR).\n");
+
+ ShowMessages("syntax : \t!lbr [Function (string)]\n");
+
+ ShowMessages("\n");
+ ShowMessages("\t\te.g : !lbr enable\n");
+ ShowMessages("\t\te.g : !lbr disable\n");
+}
+
+/**
+ * @brief Send LBR requests
+ *
+ * @param LbrRequest
+ *
+ * @return VOID
+ */
+BOOLEAN
+CommandLbrSendRequest(LBR_OPERATION_PACKETS * LbrRequest)
+{
+ BOOL Status;
+ ULONG ReturnedLength;
+
+ if (g_IsSerialConnectedToRemoteDebuggee)
+ {
+ //
+ // Send the request over serial kernel debugger
+ //
+ if (!KdSendLbrPacketsToDebuggee(LbrRequest, SIZEOF_LBR_OPERATION_PACKETS))
+ {
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+ else
+ {
+ AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnFalse);
+
+ //
+ // Send IOCTL
+ //
+ Status = DeviceIoControl(
+ g_DeviceHandle, // Handle to device
+ IOCTL_PERFORM_LBR_OPERATION, // IO Control Code (IOCTL)
+ LbrRequest, // Input Buffer to driver.
+ SIZEOF_LBR_OPERATION_PACKETS, // Input buffer length
+ LbrRequest, // Output Buffer from driver.
+ SIZEOF_LBR_OPERATION_PACKETS, // Length of output buffer in bytes.
+ &ReturnedLength, // Bytes placed in buffer.
+ NULL // synchronous call
+ );
+
+ if (!Status)
+ {
+ ShowMessages("ioctl failed with code 0x%x\n", GetLastError());
+
+ return FALSE;
+ }
+
+ if (LbrRequest->KernelStatus == DEBUGGER_OPERATION_WAS_SUCCESSFUL)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+}
+
+/**
+ * @brief Request to perform an LBR operation
+ *
+ * @param LbrRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperDbgPerformLbrOperation(LBR_OPERATION_PACKETS * LbrRequest)
+{
+ return CommandLbrSendRequest(LbrRequest);
+}
+
+/**
+ * @brief !lbr command handler
+ *
+ * @param CommandTokens
+ * @param Command
+ *
+ * @return VOID
+ */
+VOID
+CommandLbr(vector CommandTokens, string Command)
+{
+ LBR_OPERATION_PACKETS LbrRequest = {0};
+
+ if (CommandTokens.size() != 2)
+ {
+ ShowMessages("incorrect use of the '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
+
+ CommandLbrHelp();
+ return;
+ }
+
+ if (CompareLowerCaseStrings(CommandTokens.at(1), "enable"))
+ {
+ LbrRequest.LbrOperationType = LBR_OPERATION_REQUEST_TYPE_ENABLE;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "disable"))
+ {
+ LbrRequest.LbrOperationType = LBR_OPERATION_REQUEST_TYPE_DISABLE;
+ }
+ else
+ {
+ ShowMessages("incorrect use of the '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
+ CommandLbrHelp();
+ return;
+ }
+
+ //
+ // Send the LBR operation request
+ //
+ if (CommandLbrSendRequest(&LbrRequest))
+ {
+ if (LbrRequest.LbrOperationType == LBR_OPERATION_REQUEST_TYPE_ENABLE)
+ {
+ ShowMessages("LBR enabled successfully\n");
+ }
+ else if (LbrRequest.LbrOperationType == LBR_OPERATION_REQUEST_TYPE_DISABLE)
+ {
+ ShowMessages("LBR disabled successfully\n");
+ }
+ }
+ else
+ {
+ ShowErrorMessage(LbrRequest.KernelStatus);
+ return;
+ }
+}
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
index bf21ff9c..31956c9a 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
@@ -1629,6 +1629,8 @@ InitializeCommandsDictionary()
g_CommandsList["!smi"] = {&CommandSmi, &CommandSmiHelp, DEBUGGER_COMMAND_SMI_ATTRIBUTES};
+ g_CommandsList["!lbr"] = {&CommandLbr, &CommandLbrHelp, DEBUGGER_COMMAND_LBR_ATTRIBUTES};
+
//
// hwdbg commands
//
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
index 7c2698b4..e760f251 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
@@ -1055,6 +1055,41 @@ KdSendSmiPacketsToDebuggee(PSMI_OPERATION_PACKETS SmiOperationRequest, UINT32 Ex
return TRUE;
}
+/**
+ * @brief Send requests for LBR operation packet to the debuggee
+ *
+ * @param LbrOperationRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+KdSendLbrPacketsToDebuggee(PLBR_OPERATION_PACKETS LbrOperationRequest, UINT32 ExpectedRequestSize)
+{
+ //
+ // Set the request data
+ //
+ DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_LBR_OPERATION_RESULT, LbrOperationRequest, ExpectedRequestSize);
+
+ //
+ // Send the LBR request packets
+ //
+ if (!KdCommandPacketAndBufferToDebuggee(
+ DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGER_TO_DEBUGGEE_EXECUTE_ON_VMX_ROOT,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_LBR_OPERATION,
+ (CHAR *)LbrOperationRequest,
+ SIZEOF_LBR_OPERATION_PACKETS))
+ {
+ return FALSE;
+ }
+
+ //
+ // Wait until the result of actions to LBR is received
+ //
+ DbgWaitForKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_LBR_OPERATION_RESULT);
+
+ return TRUE;
+}
+
/**
* @brief Send requests for IDT packet to the debuggee
* @param IdtRequest
diff --git a/hyperdbg/libhyperdbg/header/commands.h b/hyperdbg/libhyperdbg/header/commands.h
index d6241cd0..d6b43237 100644
--- a/hyperdbg/libhyperdbg/header/commands.h
+++ b/hyperdbg/libhyperdbg/header/commands.h
@@ -477,6 +477,9 @@ typedef std::map CommandType;
#define DEBUGGER_COMMAND_SMI_ATTRIBUTES \
DEBUGGER_COMMAND_ATTRIBUTE_LOCAL_COMMAND_IN_DEBUGGER_MODE
+#define DEBUGGER_COMMAND_LBR_ATTRIBUTES \
+ DEBUGGER_COMMAND_ATTRIBUTE_LOCAL_COMMAND_IN_DEBUGGER_MODE
+
//////////////////////////////////////////////////
// Command Functions //
//////////////////////////////////////////////////
@@ -763,6 +766,9 @@ CommandIdt(vector CommandTokens, string Command);
VOID
CommandSmi(vector CommandTokens, string Command);
+VOID
+CommandLbr(vector CommandTokens, string Command);
+
//
// hwdbg commands
//
diff --git a/hyperdbg/libhyperdbg/header/debugger.h b/hyperdbg/libhyperdbg/header/debugger.h
index 85b6b396..f0159261 100644
--- a/hyperdbg/libhyperdbg/header/debugger.h
+++ b/hyperdbg/libhyperdbg/header/debugger.h
@@ -61,6 +61,7 @@
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_PCIDEVINFO_RESULT 0x1d
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_IDT_ENTRIES 0x1e
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_SMI_OPERATION_RESULT 0x1f
+#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_LBR_OPERATION_RESULT 0x20
//////////////////////////////////////////////////
// Event Details //
diff --git a/hyperdbg/libhyperdbg/header/help.h b/hyperdbg/libhyperdbg/header/help.h
index f28c0d30..e7ab5102 100644
--- a/hyperdbg/libhyperdbg/header/help.h
+++ b/hyperdbg/libhyperdbg/header/help.h
@@ -309,6 +309,9 @@ CommandIdtHelp();
VOID
CommandSmiHelp();
+VOID
+CommandLbrHelp();
+
//
// hwdbg commands
//
diff --git a/hyperdbg/libhyperdbg/header/kd.h b/hyperdbg/libhyperdbg/header/kd.h
index 2bde6dbe..ddb46da2 100644
--- a/hyperdbg/libhyperdbg/header/kd.h
+++ b/hyperdbg/libhyperdbg/header/kd.h
@@ -155,6 +155,9 @@ KdSendApicActionPacketsToDebuggee(PDEBUGGER_APIC_REQUEST ApicRequest, UINT32 Exp
BOOLEAN
KdSendSmiPacketsToDebuggee(PSMI_OPERATION_PACKETS SmiOperationRequest, UINT32 ExpectedRequestSize);
+BOOLEAN
+KdSendLbrPacketsToDebuggee(PLBR_OPERATION_PACKETS LbrOperationRequest, UINT32 ExpectedRequestSize);
+
BOOLEAN
KdSendQueryIdtPacketsToDebuggee(PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS IdtRequest);
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
index 0b622578..62c40fa5 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
@@ -178,6 +178,7 @@
+
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
index 539bcab3..916d4e49 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
@@ -598,6 +598,9 @@
code\debugger\misc
+
+ code\debugger\commands\extension-commands
+
From 1dd73675e9cd78737e013ffb35bc712f385f387e Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 6 Apr 2026 01:05:59 +0200
Subject: [PATCH 107/323] apply the LBR and HyperTrace initialization and
operations
---
.../hyperkd/code/debugger/core/Debugger.c | 10 +++
.../hyperkd/code/debugger/kernel-level/Kd.c | 20 +++++
hyperdbg/hyperkd/code/driver/Ioctl.c | 44 ++++++++++
hyperdbg/hypertrace/code/Lbr.c | 1 -
hyperdbg/hypertrace/code/Tracing.c | 86 ++++++++++++++++++-
hyperdbg/hypertrace/header/Lbr.h | 4 +-
hyperdbg/hypertrace/header/Tracing.h | 1 -
hyperdbg/hypertrace/header/UnloadDll.h | 6 +-
hyperdbg/hypertrace/header/pch.h | 1 -
hyperdbg/include/SDK/headers/Connection.h | 3 +-
hyperdbg/include/SDK/headers/ErrorCodes.h | 12 +++
hyperdbg/include/SDK/headers/Ioctls.h | 4 +-
.../include/SDK/headers/RequestStructures.h | 26 +++---
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 11 ++-
.../commands/extension-commands/lbr.cpp | 32 +++----
.../code/debugger/core/debugger.cpp | 8 ++
.../code/debugger/kernel-level/kd.cpp | 18 ++--
.../kernel-level/kernel-listening.cpp | 22 +++++
hyperdbg/libhyperdbg/header/debugger.h | 2 +-
hyperdbg/libhyperdbg/header/kd.h | 2 +-
20 files changed, 258 insertions(+), 55 deletions(-)
diff --git a/hyperdbg/hyperkd/code/debugger/core/Debugger.c b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
index 0ce91b3e..cd22fe78 100644
--- a/hyperdbg/hyperkd/code/debugger/core/Debugger.c
+++ b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
@@ -208,6 +208,11 @@ DebuggerInitialize()
return FALSE;
}
+ //
+ // Initialize the HyperTrace (if supported by the processor)
+ //
+ LoaderInitHyperTrace();
+
//
// Pre-allocate pools for possible EPT hooks
//
@@ -268,6 +273,11 @@ DebuggerUninitialize()
DebuggerClearAllEvents(FALSE, FALSE);
}
+ //
+ // Unitialize the HyperTrace (if it was initialized)
+ //
+ HyperTraceUninit();
+
//
// Uninitialize kernel debugger
//
diff --git a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
index 02eed173..acc93528 100644
--- a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
+++ b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
@@ -2186,6 +2186,7 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
PDEBUGGEE_BP_PACKET BpPacket;
PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS PtePacket;
PSMI_OPERATION_PACKETS SmiOperationPacket;
+ PHYPERTRACE_OPERATION_PACKETS HyperTraceOperationPacket;
PDEBUGGER_APIC_REQUEST ApicPacket;
PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS IdtEntryPacket;
PDEBUGGER_PAGE_IN_REQUEST PageinPacket;
@@ -2901,6 +2902,25 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
break;
+ case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_OPERATION:
+
+ HyperTraceOperationPacket = (HYPERTRACE_OPERATION_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
+
+ //
+ // Perform the HyperTrace operations (it's in vmx-root)
+ //
+ HyperTracePerformOperation(HyperTraceOperationPacket, TRUE);
+
+ //
+ // Send the result of the HyperTrace back to the debuggee
+ //
+ KdResponsePacketToDebugger(DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGEE_TO_DEBUGGER,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_OPERATION_REQUESTS,
+ (CHAR *)HyperTraceOperationPacket,
+ SIZEOF_HYPERTRACE_OPERATION_PACKETS);
+
+ break;
+
case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_ACTIONS_ON_APIC:
ApicPacket = (DEBUGGER_APIC_REQUEST *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index 03eb8d4b..66dae865 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -59,6 +59,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
PDEBUGGER_PAUSE_PACKET_RECEIVED DebuggerPauseKernelRequest;
PDEBUGGER_GENERAL_ACTION DebuggerNewActionRequest;
PSMI_OPERATION_PACKETS SmiOperationRequest;
+ PHYPERTRACE_OPERATION_PACKETS HyperTraceOperationRequest;
PVOID BufferToStoreThreadsAndProcessesDetails;
NTSTATUS Status;
ULONG InBuffLength; // Input buffer length
@@ -1254,6 +1255,49 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
break;
+ case IOCTL_PERFORM_HYPERTRACE_OPERATION:
+
+ //
+ // First validate the parameters.
+ //
+ if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_HYPERTRACE_OPERATION_PACKETS ||
+ Irp->AssociatedIrp.SystemBuffer == NULL)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ LogError("Err, invalid parameter to IOCTL dispatcher");
+ break;
+ }
+
+ InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
+ OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
+
+ if (!InBuffLength || !OutBuffLength)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place
+ //
+ HyperTraceOperationRequest = (PHYPERTRACE_OPERATION_PACKETS)Irp->AssociatedIrp.SystemBuffer;
+
+ //
+ // Perform the HyperTrace operation
+ //
+ HyperTracePerformOperation(HyperTraceOperationRequest, FALSE);
+
+ Irp->IoStatus.Information = SIZEOF_HYPERTRACE_OPERATION_PACKETS;
+ Status = STATUS_SUCCESS;
+
+ //
+ // Avoid zeroing it
+ //
+ DoNotChangeInformation = TRUE;
+
+ break;
+
case IOCTL_SEND_USER_DEBUGGER_COMMANDS:
//
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index e551c80b..abba061d 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -8,7 +8,6 @@
*
* @copyright This project is released under the GNU Public License v3.
*/
-
#include "pch.h"
//////////////////////////////////////////////////
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index d0f032df..e0865138 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -8,9 +8,14 @@
*
* @copyright This project is released under the GNU Public License v3.
*/
-
#include "pch.h"
+/**
+ * @brief The flag indicating whether the hypertrace module is initialized or not
+ *
+ */
+BOOLEAN g_HyperTraceInitialized = FALSE;
+
/**
* @brief Hide debugger on transparent-mode (activate transparent-mode)
*
@@ -18,7 +23,6 @@
*
* @return BOOLEAN
*/
-
VOID
PerformLbrTraceAfterEnable()
{
@@ -64,9 +68,24 @@ PerformLbrTraceAfterEnable()
KeRevertToUserAffinityThread();
}
+/**
+ * @brief Initialize the hyper trace module
+ *
+ * @param HypertraceCallbacks
+ *
+ * @return BOOLEAN
+ */
BOOLEAN
HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
{
+ //
+ // Check if the LBR is supported on this CPU before initializing the hypertrace module,
+ //
+ if (!LbrCheck())
+ {
+ return FALSE;
+ }
+
//
// Check if any of the required callbacks are NULL
//
@@ -86,8 +105,67 @@ HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
//
RtlCopyMemory(&g_Callbacks, HypertraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
- LogInfo("HyperTrace module initialized successfully with provided callbacks.\n");
- PerformLbrTraceAfterEnable();
+ //
+ // Enable LBR
+ //
+ g_HyperTraceInitialized = TRUE;
return TRUE;
}
+
+/**
+ * @brief Uninitialize the hyper trace module
+ *
+ * @return VOID
+ */
+VOID
+HyperTraceUninit()
+{
+ g_HyperTraceInitialized = FALSE;
+}
+
+/**
+ * @brief Perform actions related to HyperTrace
+ *
+ * @param HyperTraceOperationRequest
+ * @param ApplyFromVmxRootMode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
+{
+ BOOLEAN Status = TRUE;
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
+ //
+ // Check if the hypertrace module is initialized before performing any operation
+ //
+ if (!g_HyperTraceInitialized)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED;
+ return FALSE;
+ }
+
+ //
+ // Perform the requested operation
+ //
+ switch (HyperTraceOperationRequest->HyperTraceOperationType)
+ {
+ case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE:
+ LogInfo("HyperTrace: Enabling LBR tracing...\n");
+ break;
+
+ case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE:
+ LogInfo("HyperTrace: Disabling LBR tracing...\n");
+ break;
+
+ default:
+ Status = FALSE;
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE;
+ break;
+ }
+
+ return Status;
+}
diff --git a/hyperdbg/hypertrace/header/Lbr.h b/hyperdbg/hypertrace/header/Lbr.h
index 4fafda1d..b3ceab87 100644
--- a/hyperdbg/hypertrace/header/Lbr.h
+++ b/hyperdbg/hypertrace/header/Lbr.h
@@ -8,7 +8,6 @@
*
* @copyright This project is released under the GNU Public License v3.
*/
-
#pragma once
//////////////////////////////////////////////////
@@ -149,6 +148,9 @@ LbrCreateLbrState();
LBR_STATE *
LbrFindLbrState(ULONG Pid);
+BOOLEAN
+LbrCheck();
+
VOID
LbrInsertLbrState(LBR_STATE * NewState);
diff --git a/hyperdbg/hypertrace/header/Tracing.h b/hyperdbg/hypertrace/header/Tracing.h
index d2405bbe..3b5ca89e 100644
--- a/hyperdbg/hypertrace/header/Tracing.h
+++ b/hyperdbg/hypertrace/header/Tracing.h
@@ -8,7 +8,6 @@
*
* @copyright This project is released under the GNU Public License v3.
*/
-
#pragma once
//////////////////////////////////////////////////
diff --git a/hyperdbg/hypertrace/header/UnloadDll.h b/hyperdbg/hypertrace/header/UnloadDll.h
index c6388ac7..66d925a8 100644
--- a/hyperdbg/hypertrace/header/UnloadDll.h
+++ b/hyperdbg/hypertrace/header/UnloadDll.h
@@ -15,6 +15,8 @@
// Exported Functions //
//////////////////////////////////////////////////
-__declspec(dllexport) NTSTATUS DllInitialize(_In_ PUNICODE_STRING RegistryPath);
+__declspec(dllexport) NTSTATUS
+DllInitialize(_In_ PUNICODE_STRING RegistryPath);
-__declspec(dllexport) NTSTATUS DllUnload(void);
+__declspec(dllexport) NTSTATUS
+DllUnload(void);
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 094a3659..440b9c8a 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -9,7 +9,6 @@
* @copyright This project is released under the GNU Public License v3.
*
*/
-
#pragma once
#define _NO_CRT_STDIO_INLINE
diff --git a/hyperdbg/include/SDK/headers/Connection.h b/hyperdbg/include/SDK/headers/Connection.h
index 940bc562..1191b870 100644
--- a/hyperdbg/include/SDK/headers/Connection.h
+++ b/hyperdbg/include/SDK/headers/Connection.h
@@ -101,7 +101,7 @@ typedef enum _DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_QUERY_PCIDEVINFO,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_READ_IDT_ENTRIES,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_SMI_OPERATION,
- DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_LBR_OPERATION,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_OPERATION,
//
// Debuggee to debugger
@@ -140,6 +140,7 @@ typedef enum _DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_PCIDEVINFO,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_QUERY_IDT_ENTRIES_REQUESTS,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_SMI_OPERATION_REQUESTS,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_OPERATION_REQUESTS,
//
// hardware debuggee to debugger
diff --git a/hyperdbg/include/SDK/headers/ErrorCodes.h b/hyperdbg/include/SDK/headers/ErrorCodes.h
index 78fbfe99..13531453 100644
--- a/hyperdbg/include/SDK/headers/ErrorCodes.h
+++ b/hyperdbg/include/SDK/headers/ErrorCodes.h
@@ -581,6 +581,18 @@
*/
#define DEBUGGER_ERROR_UNABLE_TO_APPLY_COMMAND_TO_THE_TARGET_THREAD 0xc0000059
+/**
+ * @brief error, HyperTrace is not initialized
+ *
+ */
+#define DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED 0xc000005a
+
+/**
+ * @brief error, invalid HyperTrace operation type is specified in the request,
+ *
+ */
+#define DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE 0xc000005b
+
//
// WHEN YOU ADD ANYTHING TO THIS LIST OF ERRORS, THEN
// MAKE SURE TO ADD AN ERROR MESSAGE TO ShowErrorMessage(UINT32 Error)
diff --git a/hyperdbg/include/SDK/headers/Ioctls.h b/hyperdbg/include/SDK/headers/Ioctls.h
index b3d7db3c..7d6afbd0 100644
--- a/hyperdbg/include/SDK/headers/Ioctls.h
+++ b/hyperdbg/include/SDK/headers/Ioctls.h
@@ -332,8 +332,8 @@
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x826, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
- * @brief ioctl, to perform LBR operations
+ * @brief ioctl, to perform HyperTrace operations
*
*/
-#define IOCTL_PERFORM_LBR_OPERATION \
+#define IOCTL_PERFORM_HYPERTRACE_OPERATION \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x827, METHOD_BUFFERED, FILE_ANY_ACCESS)
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index f66ff34a..103ec69c 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1265,33 +1265,33 @@ typedef struct _SMI_OPERATION_PACKETS
*/
/**
- * @brief Perform actions related to LBR
+ * @brief Perform actions related to HyperTrace
*
*/
-typedef enum _LBR_OPERATION_REQUEST_TYPE
+typedef enum _HYPERTRACE_OPERATION_REQUEST_TYPE
{
- LBR_OPERATION_REQUEST_TYPE_ENABLE,
- LBR_OPERATION_REQUEST_TYPE_DISABLE,
+ HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE,
+ HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE,
-} LBR_OPERATION_REQUEST_TYPE;
+} HYPERTRACE_OPERATION_REQUEST_TYPE;
/**
- * @brief The structure of LBR result packet in HyperDbg
+ * @brief The structure of HyperTrace result packet in HyperDbg
*
*/
-typedef struct _LBR_OPERATION_PACKETS
+typedef struct _HYPERTRACE_OPERATION_PACKETS
{
- LBR_OPERATION_REQUEST_TYPE LbrOperationType;
- UINT32 KernelStatus;
+ HYPERTRACE_OPERATION_REQUEST_TYPE HyperTraceOperationType;
+ UINT32 KernelStatus;
-} LBR_OPERATION_PACKETS, *PLBR_OPERATION_PACKETS;
+} HYPERTRACE_OPERATION_PACKETS, *PHYPERTRACE_OPERATION_PACKETS;
/**
- * @brief Debugger size of LBR_OPERATION_PACKETS
+ * @brief Debugger size of HYPERTRACE_OPERATION_PACKETS
*
*/
-#define SIZEOF_LBR_OPERATION_PACKETS \
- sizeof(LBR_OPERATION_PACKETS)
+#define SIZEOF_HYPERTRACE_OPERATION_PACKETS \
+ sizeof(HYPERTRACE_OPERATION_PACKETS)
/* ==============================================================================================
*/
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 2a190e7c..a722a1d0 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -27,7 +27,14 @@ IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks);
//
-// Check if LBR is supported and initialize LBR state list and lock
+// Uninitialize the HyperTrace module
+//
+IMPORT_EXPORT_HYPERTRACE VOID
+HyperTraceUninit();
+
+//
+// Perform operations related to HyperTrace based on the request type and parameters
//
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-LbrCheck();
+HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * LbrOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index dc824ea6..0d4797cc 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -41,7 +41,7 @@ CommandLbrHelp()
* @return VOID
*/
BOOLEAN
-CommandLbrSendRequest(LBR_OPERATION_PACKETS * LbrRequest)
+CommandLbrSendRequest(HYPERTRACE_OPERATION_PACKETS * LbrRequest)
{
BOOL Status;
ULONG ReturnedLength;
@@ -51,7 +51,7 @@ CommandLbrSendRequest(LBR_OPERATION_PACKETS * LbrRequest)
//
// Send the request over serial kernel debugger
//
- if (!KdSendLbrPacketsToDebuggee(LbrRequest, SIZEOF_LBR_OPERATION_PACKETS))
+ if (!KdSendHyperTracePacketsToDebuggee(LbrRequest, SIZEOF_HYPERTRACE_OPERATION_PACKETS))
{
return FALSE;
}
@@ -68,14 +68,14 @@ CommandLbrSendRequest(LBR_OPERATION_PACKETS * LbrRequest)
// Send IOCTL
//
Status = DeviceIoControl(
- g_DeviceHandle, // Handle to device
- IOCTL_PERFORM_LBR_OPERATION, // IO Control Code (IOCTL)
- LbrRequest, // Input Buffer to driver.
- SIZEOF_LBR_OPERATION_PACKETS, // Input buffer length
- LbrRequest, // Output Buffer from driver.
- SIZEOF_LBR_OPERATION_PACKETS, // Length of output buffer in bytes.
- &ReturnedLength, // Bytes placed in buffer.
- NULL // synchronous call
+ g_DeviceHandle, // Handle to device
+ IOCTL_PERFORM_HYPERTRACE_OPERATION, // IO Control Code (IOCTL)
+ LbrRequest, // Input Buffer to driver.
+ SIZEOF_HYPERTRACE_OPERATION_PACKETS, // Input buffer length
+ LbrRequest, // Output Buffer from driver.
+ SIZEOF_HYPERTRACE_OPERATION_PACKETS, // Length of output buffer in bytes.
+ &ReturnedLength, // Bytes placed in buffer.
+ NULL // synchronous call
);
if (!Status)
@@ -104,7 +104,7 @@ CommandLbrSendRequest(LBR_OPERATION_PACKETS * LbrRequest)
* @return BOOLEAN
*/
BOOLEAN
-HyperDbgPerformLbrOperation(LBR_OPERATION_PACKETS * LbrRequest)
+HyperDbgPerformLbrOperation(HYPERTRACE_OPERATION_PACKETS * LbrRequest)
{
return CommandLbrSendRequest(LbrRequest);
}
@@ -120,7 +120,7 @@ HyperDbgPerformLbrOperation(LBR_OPERATION_PACKETS * LbrRequest)
VOID
CommandLbr(vector CommandTokens, string Command)
{
- LBR_OPERATION_PACKETS LbrRequest = {0};
+ HYPERTRACE_OPERATION_PACKETS LbrRequest = {0};
if (CommandTokens.size() != 2)
{
@@ -133,11 +133,11 @@ CommandLbr(vector CommandTokens, string Command)
if (CompareLowerCaseStrings(CommandTokens.at(1), "enable"))
{
- LbrRequest.LbrOperationType = LBR_OPERATION_REQUEST_TYPE_ENABLE;
+ LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE;
}
else if (CompareLowerCaseStrings(CommandTokens.at(1), "disable"))
{
- LbrRequest.LbrOperationType = LBR_OPERATION_REQUEST_TYPE_DISABLE;
+ LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE;
}
else
{
@@ -152,11 +152,11 @@ CommandLbr(vector CommandTokens, string Command)
//
if (CommandLbrSendRequest(&LbrRequest))
{
- if (LbrRequest.LbrOperationType == LBR_OPERATION_REQUEST_TYPE_ENABLE)
+ if (LbrRequest.HyperTraceOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE)
{
ShowMessages("LBR enabled successfully\n");
}
- else if (LbrRequest.LbrOperationType == LBR_OPERATION_REQUEST_TYPE_DISABLE)
+ else if (LbrRequest.HyperTraceOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE)
{
ShowMessages("LBR disabled successfully\n");
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index 81996516..b53885b6 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -569,6 +569,14 @@ ShowErrorMessage(UINT32 Error)
Error);
break;
+ case DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED:
+ ShowMessages("err, the HyperTrace module is not initialized (%x)\n",
+ Error);
+
+ case DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE:
+ ShowMessages("err, invalid HyperTrace operation type is specified (%x)\n",
+ Error);
+
default:
ShowMessages("err, error not found (%x)\n",
Error);
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
index e760f251..f11e3e53 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
@@ -1056,36 +1056,36 @@ KdSendSmiPacketsToDebuggee(PSMI_OPERATION_PACKETS SmiOperationRequest, UINT32 Ex
}
/**
- * @brief Send requests for LBR operation packet to the debuggee
+ * @brief Send requests for HyperTrace operation packet to the debuggee
*
- * @param LbrOperationRequest
+ * @param HyperTraceOperationRequest
*
* @return BOOLEAN
*/
BOOLEAN
-KdSendLbrPacketsToDebuggee(PLBR_OPERATION_PACKETS LbrOperationRequest, UINT32 ExpectedRequestSize)
+KdSendHyperTracePacketsToDebuggee(PHYPERTRACE_OPERATION_PACKETS HyperTraceOperationRequest, UINT32 ExpectedRequestSize)
{
//
// Set the request data
//
- DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_LBR_OPERATION_RESULT, LbrOperationRequest, ExpectedRequestSize);
+ DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_OPERATION_RESULT, HyperTraceOperationRequest, ExpectedRequestSize);
//
// Send the LBR request packets
//
if (!KdCommandPacketAndBufferToDebuggee(
DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGER_TO_DEBUGGEE_EXECUTE_ON_VMX_ROOT,
- DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_LBR_OPERATION,
- (CHAR *)LbrOperationRequest,
- SIZEOF_LBR_OPERATION_PACKETS))
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_OPERATION,
+ (CHAR *)HyperTraceOperationRequest,
+ SIZEOF_HYPERTRACE_OPERATION_PACKETS))
{
return FALSE;
}
//
- // Wait until the result of actions to LBR is received
+ // Wait until the result of actions to HyperTrace is received
//
- DbgWaitForKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_LBR_OPERATION_RESULT);
+ DbgWaitForKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_OPERATION_RESULT);
return TRUE;
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
index 6c565e62..57b05e67 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
@@ -70,6 +70,7 @@ ListeningSerialPortInDebugger()
PDEBUGGER_SHORT_CIRCUITING_EVENT ShortCircuitingPacket;
PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS PtePacket;
PSMI_OPERATION_PACKETS SmiOperationPacket;
+ PHYPERTRACE_OPERATION_PACKETS HyperTraceOperationPacket;
PDEBUGGER_PAGE_IN_REQUEST PageinPacket;
PDEBUGGER_VA2PA_AND_PA2VA_COMMANDS Va2paPa2vaPacket;
PDEBUGGEE_BP_LIST_OR_MODIFY_PACKET ListOrModifyBreakpointPacket;
@@ -1006,6 +1007,27 @@ StartAgain:
break;
+ case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_OPERATION_REQUESTS:
+
+ HyperTraceOperationPacket = (HYPERTRACE_OPERATION_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
+
+ //
+ // Get the address and size of the caller
+ //
+ DbgWaitGetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_OPERATION_RESULT, &CallerAddress, &CallerSize);
+
+ //
+ // Copy the memory buffer for the caller
+ //
+ memcpy(CallerAddress, HyperTraceOperationPacket, CallerSize);
+
+ //
+ // Signal the event relating to receiving result of HyperTrace operation
+ //
+ DbgReceivedKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_OPERATION_RESULT);
+
+ break;
+
case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_BRINGING_PAGES_IN:
PageinPacket = (DEBUGGER_PAGE_IN_REQUEST *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
diff --git a/hyperdbg/libhyperdbg/header/debugger.h b/hyperdbg/libhyperdbg/header/debugger.h
index f0159261..6f1fabe2 100644
--- a/hyperdbg/libhyperdbg/header/debugger.h
+++ b/hyperdbg/libhyperdbg/header/debugger.h
@@ -61,7 +61,7 @@
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_PCIDEVINFO_RESULT 0x1d
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_IDT_ENTRIES 0x1e
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_SMI_OPERATION_RESULT 0x1f
-#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_LBR_OPERATION_RESULT 0x20
+#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_OPERATION_RESULT 0x20
//////////////////////////////////////////////////
// Event Details //
diff --git a/hyperdbg/libhyperdbg/header/kd.h b/hyperdbg/libhyperdbg/header/kd.h
index ddb46da2..94038ec1 100644
--- a/hyperdbg/libhyperdbg/header/kd.h
+++ b/hyperdbg/libhyperdbg/header/kd.h
@@ -156,7 +156,7 @@ BOOLEAN
KdSendSmiPacketsToDebuggee(PSMI_OPERATION_PACKETS SmiOperationRequest, UINT32 ExpectedRequestSize);
BOOLEAN
-KdSendLbrPacketsToDebuggee(PLBR_OPERATION_PACKETS LbrOperationRequest, UINT32 ExpectedRequestSize);
+KdSendHyperTracePacketsToDebuggee(PHYPERTRACE_OPERATION_PACKETS HyperTraceOperationRequest, UINT32 ExpectedRequestSize);
BOOLEAN
KdSendQueryIdtPacketsToDebuggee(PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS IdtRequest);
From 201820376d338169494dc23b0bca2252eb9411e6 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 6 Apr 2026 16:45:35 +0200
Subject: [PATCH 108/323] enable and disable LBR separately from the HyperTrace
module
---
hyperdbg/hyperkd/code/driver/Loader.c | 2 +-
hyperdbg/hypertrace/code/Tracing.c | 137 ++++++++++++++++--
hyperdbg/include/SDK/headers/ErrorCodes.h | 20 ++-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 2 +-
.../code/debugger/core/debugger.cpp | 17 +++
5 files changed, 164 insertions(+), 14 deletions(-)
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index c62be847..07dc098b 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -48,7 +48,7 @@ LoaderInitHyperTrace()
//
// Initialize hypertrace module
//
- if (HyperTraceInit(&HyperTraceCallbacks))
+ if (HyperTraceInitCallback(&HyperTraceCallbacks))
{
LogDebugInfo("HyperDbg's hypertrace loaded successfully");
return TRUE;
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index e0865138..8ee8c6fc 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -11,10 +11,16 @@
#include "pch.h"
/**
- * @brief The flag indicating whether the hypertrace module is initialized or not
+ * @brief The flag indicating whether the hypertrace module callbacks is initialized or not
*
*/
-BOOLEAN g_HyperTraceInitialized = FALSE;
+BOOLEAN g_HyperTraceCallbacksInitialized = FALSE;
+
+/**
+ * @brief The flag indicating whether the hypertrace LBR tracing is initialized or not
+ *
+ */
+BOOLEAN g_LastBranchRecordEnabled = FALSE;
/**
* @brief Hide debugger on transparent-mode (activate transparent-mode)
@@ -26,8 +32,7 @@ BOOLEAN g_HyperTraceInitialized = FALSE;
VOID
PerformLbrTraceAfterEnable()
{
- LBR_IOCTL_REQUEST Request;
- RtlZeroMemory(&Request, sizeof(LBR_IOCTL_REQUEST));
+ LBR_IOCTL_REQUEST Request = {0};
KAFFINITY Affinity = 1;
KeSetSystemAffinityThread(Affinity);
@@ -35,7 +40,9 @@ PerformLbrTraceAfterEnable()
LbrInitialize();
if (!LbrCheck())
+ {
return;
+ }
Request.LbrConfig.Pid = 0;
Request.LbrConfig.LbrSelect = LBR_SELECT;
@@ -56,8 +63,11 @@ PerformLbrTraceAfterEnable()
}
}
LBR_STATE * State = LbrFindLbrState(0);
+
if (State)
+ {
LbrGetLbr(State);
+ }
LogInfo("Dumping LBR Buffer...\n");
LbrDumpLbr(&Request);
@@ -69,14 +79,15 @@ PerformLbrTraceAfterEnable()
}
/**
- * @brief Initialize the hyper trace module
+ * @brief Initialize the hyper trace module callbacks
+ * @details This only for callback initialization, not for LBR initialization
*
* @param HypertraceCallbacks
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
+HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
{
//
// Check if the LBR is supported on this CPU before initializing the hypertrace module,
@@ -106,9 +117,103 @@ HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
RtlCopyMemory(&g_Callbacks, HypertraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
//
- // Enable LBR
+ // It is initialized, but LBR is disabled at this stage
//
- g_HyperTraceInitialized = TRUE;
+ g_LastBranchRecordEnabled = FALSE;
+
+ //
+ // Enable callbacks and set the initialized flag
+ //
+ g_HyperTraceCallbacksInitialized = TRUE;
+
+ return TRUE;
+}
+
+/**
+ * @brief Enable LBR tracing for HyperTrace
+ *
+ * @param HyperTraceOperationRequest
+ * @param ApplyFromVmxRootMode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceEnableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
+{
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
+ //
+ // Check if LBR is already enabled or not
+ //
+ if (g_LastBranchRecordEnabled)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_ENABLED;
+ return FALSE;
+ }
+
+ if (!LbrCheck())
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_NOT_SUPPORTED;
+ return FALSE;
+ }
+
+ //
+ // Enabling LBR
+ //
+ LbrInitialize();
+
+ //
+ // Set the flag to indicate that LBR tracing is enabled
+ //
+ g_LastBranchRecordEnabled = TRUE;
+
+ //
+ // Set successful status
+ //
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+
+ return TRUE;
+}
+
+/**
+ * @brief Disable LBR tracing for HyperTrace
+ *
+ * @param HyperTraceOperationRequest
+ * @param ApplyFromVmxRootMode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceDisableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
+{
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
+ //
+ // Check if LBR is already disabled or not
+ //
+ if (!g_LastBranchRecordEnabled)
+ {
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_DISABLED;
+ }
+
+ return FALSE;
+ }
+ //
+ // Disabling LBR
+ //
+ g_LastBranchRecordEnabled = FALSE;
+
+ //
+ // Set successful status
+ //
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
return TRUE;
}
@@ -121,7 +226,15 @@ HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
VOID
HyperTraceUninit()
{
- g_HyperTraceInitialized = FALSE;
+ //
+ // Disable LBR tracing if it is still enabled
+ //
+ HyperTraceDisableLbrTracing(NULL, FALSE);
+
+ //
+ // Set callbacks to not initialized
+ //
+ g_HyperTraceCallbacksInitialized = FALSE;
}
/**
@@ -137,12 +250,11 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
BOOLEAN ApplyFromVmxRootMode)
{
BOOLEAN Status = TRUE;
- UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
//
// Check if the hypertrace module is initialized before performing any operation
//
- if (!g_HyperTraceInitialized)
+ if (!g_HyperTraceCallbacksInitialized)
{
HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED;
return FALSE;
@@ -154,7 +266,10 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
switch (HyperTraceOperationRequest->HyperTraceOperationType)
{
case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE:
+
LogInfo("HyperTrace: Enabling LBR tracing...\n");
+ HyperTraceEnableLbrTracing(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+
break;
case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE:
diff --git a/hyperdbg/include/SDK/headers/ErrorCodes.h b/hyperdbg/include/SDK/headers/ErrorCodes.h
index 13531453..9990fbc9 100644
--- a/hyperdbg/include/SDK/headers/ErrorCodes.h
+++ b/hyperdbg/include/SDK/headers/ErrorCodes.h
@@ -588,11 +588,29 @@
#define DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED 0xc000005a
/**
- * @brief error, invalid HyperTrace operation type is specified in the request,
+ * @brief error, invalid HyperTrace operation type is specified in the request
*
*/
#define DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE 0xc000005b
+/**
+ * @brief error, LBR is already enabled
+ *
+ */
+#define DEBUGGER_ERROR_LBR_ALREADY_ENABLED 0xc000005c
+
+/**
+ * @brief error, LBR is already disabled
+ *
+ */
+#define DEBUGGER_ERROR_LBR_ALREADY_DISABLED 0xc000005d
+
+/**
+ * @brief error, LBR is not supported by the processor
+ *
+ */
+#define DEBUGGER_ERROR_LBR_NOT_SUPPORTED 0xc000005e
+
//
// WHEN YOU ADD ANYTHING TO THIS LIST OF ERRORS, THEN
// MAKE SURE TO ADD AN ERROR MESSAGE TO ShowErrorMessage(UINT32 Error)
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index a722a1d0..7e8d7997 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -24,7 +24,7 @@
// Initialize the hypertrace module with the provided callbacks
//
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceInit(HYPERTRACE_CALLBACKS * HypertraceCallbacks);
+HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks);
//
// Uninitialize the HyperTrace module
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index b53885b6..37979cd5 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -572,10 +572,27 @@ ShowErrorMessage(UINT32 Error)
case DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED:
ShowMessages("err, the HyperTrace module is not initialized (%x)\n",
Error);
+ break;
case DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE:
ShowMessages("err, invalid HyperTrace operation type is specified (%x)\n",
Error);
+ break;
+
+ case DEBUGGER_ERROR_LBR_ALREADY_ENABLED:
+ ShowMessages("err, LBR is already enabled (%x)\n",
+ Error);
+ break;
+
+ case DEBUGGER_ERROR_LBR_ALREADY_DISABLED:
+ ShowMessages("err, LBR is already disabled (%x)\n",
+ Error);
+ break;
+
+ case DEBUGGER_ERROR_LBR_NOT_SUPPORTED:
+ ShowMessages("err, LBR is not supported on this processor (%x)\n",
+ Error);
+ break;
default:
ShowMessages("err, error not found (%x)\n",
From c266a880c34581f1b0bf42c2d8591f9562960225 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 6 Apr 2026 18:33:01 +0200
Subject: [PATCH 109/323] add lbr start and lbr stop functions to the script
engine
---
.../hwdbg/script/script_definitions.scala | 2 +-
hyperdbg/hypertrace/code/Lbr.c | 12 +-
hyperdbg/hypertrace/code/Tracing.c | 47 +-
hyperdbg/hypertrace/header/Lbr.h | 4 +-
.../headers/ScriptEngineCommonDefinitions.h | 98 +-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 12 +-
hyperdbg/script-engine/code/parse-table.c | 1454 +++++++++--------
hyperdbg/script-engine/header/parse-table.h | 10 +-
hyperdbg/script-engine/python/Grammar.txt | 2 +-
hyperdbg/script-eval/code/Functions.c | 36 +
hyperdbg/script-eval/code/ScriptEngineEval.c | 12 +
.../header/ScriptEngineInternalHeader.h | 6 +
12 files changed, 910 insertions(+), 785 deletions(-)
diff --git a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
index 1ff8ce41..5f052f33 100644
--- a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
+++ b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
@@ -45,6 +45,6 @@ object ScriptConstantTypes {
object ScriptEvalFunc {
object ScriptOperators extends ChiselEnum {
- val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
+ val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncLbr_start, sFuncLbr_stop, sFuncRdtsc, sFuncRdtscp, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
}
}
\ No newline at end of file
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index abba061d..7ed1c778 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -197,13 +197,13 @@ LbrFlushLbr()
}
/**
- * @brief Enable LBR for a specific process and store the configuration in the global LBR state list
+ * @brief Start collecting LBR branches for a specific process and store the configuration in the global LBR state list
*
* @param Request
* @return BOOLEAN
*/
BOOLEAN
-LbrEnableLbr(LBR_IOCTL_REQUEST * Request)
+LbrStartLbr(LBR_IOCTL_REQUEST * Request)
{
LBR_STATE * State;
@@ -246,13 +246,13 @@ LbrEnableLbr(LBR_IOCTL_REQUEST * Request)
}
/**
- * @brief Disable LBR for a specific process and remove the corresponding LBR state from the global list
+ * @brief Stop collecting LBR branches for a specific process and remove the corresponding LBR state from the global list
*
* @param Request
* @return BOOLEAN
*/
BOOLEAN
-LbrDisableLbr(LBR_IOCTL_REQUEST * Request)
+LbrStopLbr(LBR_IOCTL_REQUEST * Request)
{
LBR_STATE * State;
@@ -501,10 +501,10 @@ LbrIoctlHandler(XIOCTL_REQUEST * Request)
switch (Request->Cmd)
{
case LIBIHT_IOCTL_ENABLE_LBR:
- Status = LbrEnableLbr(&Request->Body.Lbr);
+ Status = LbrStartLbr(&Request->Body.Lbr);
break;
case LIBIHT_IOCTL_DISABLE_LBR:
- Status = LbrDisableLbr(&Request->Body.Lbr);
+ Status = LbrStopLbr(&Request->Body.Lbr);
break;
case LIBIHT_IOCTL_DUMP_LBR:
Status = LbrDumpLbr(&Request->Body.Lbr);
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 8ee8c6fc..f416247e 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -47,7 +47,7 @@ PerformLbrTraceAfterEnable()
Request.LbrConfig.Pid = 0;
Request.LbrConfig.LbrSelect = LBR_SELECT;
- if (LbrEnableLbr(&Request))
+ if (LbrStartLbr(&Request))
{
for (volatile int i = 0; i < 50; i++)
{
@@ -62,6 +62,7 @@ PerformLbrTraceAfterEnable()
__nop();
}
}
+
LBR_STATE * State = LbrFindLbrState(0);
if (State)
@@ -72,12 +73,54 @@ PerformLbrTraceAfterEnable()
LogInfo("Dumping LBR Buffer...\n");
LbrDumpLbr(&Request);
- LbrDisableLbr(&Request);
+ LbrStopLbr(&Request);
}
KeRevertToUserAffinityThread();
}
+/**
+ * @brief Start LBR tracing for HyperTrace
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceStartLbr()
+{
+ LBR_IOCTL_REQUEST Request = {0};
+
+ Request.LbrConfig.Pid = 0;
+ Request.LbrConfig.LbrSelect = LBR_SELECT;
+
+ return LbrStartLbr(&Request);
+}
+
+/**
+ * @brief Stop LBR tracing for HyperTrace
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceStopLbr()
+{
+ LBR_IOCTL_REQUEST Request = {0};
+
+ Request.LbrConfig.Pid = 0;
+ Request.LbrConfig.LbrSelect = LBR_SELECT;
+
+ LBR_STATE * State = LbrFindLbrState(0);
+
+ if (State)
+ {
+ LbrGetLbr(State);
+ }
+
+ LogInfo("Dumping LBR Buffer...\n");
+ LbrDumpLbr(&Request);
+
+ return LbrStopLbr(&Request);
+}
+
/**
* @brief Initialize the hyper trace module callbacks
* @details This only for callback initialization, not for LBR initialization
diff --git a/hyperdbg/hypertrace/header/Lbr.h b/hyperdbg/hypertrace/header/Lbr.h
index b3ceab87..305b50a8 100644
--- a/hyperdbg/hypertrace/header/Lbr.h
+++ b/hyperdbg/hypertrace/header/Lbr.h
@@ -164,10 +164,10 @@ VOID
LbrInitialize();
BOOLEAN
-LbrEnableLbr(LBR_IOCTL_REQUEST * Request);
+LbrStartLbr(LBR_IOCTL_REQUEST * Request);
BOOLEAN
-LbrDisableLbr(LBR_IOCTL_REQUEST * Request);
+LbrStopLbr(LBR_IOCTL_REQUEST * Request);
BOOLEAN
LbrDumpLbr(LBR_IOCTL_REQUEST * Request);
diff --git a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
index c5711835..4b2ff7e9 100644
--- a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
+++ b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
@@ -148,53 +148,55 @@ static const char *const SymbolTypeNames[] = {
#define FUNC_EVENT_TRACE_STEP_OUT 51
#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP 52
#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN 53
-#define FUNC_RDTSC 54
-#define FUNC_RDTSCP 55
-#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 56
-#define FUNC_EVENT_INJECT 57
-#define FUNC_POI 58
-#define FUNC_DB 59
-#define FUNC_DD 60
-#define FUNC_DW 61
-#define FUNC_DQ 62
-#define FUNC_NEG 63
-#define FUNC_HI 64
-#define FUNC_LOW 65
-#define FUNC_NOT 66
-#define FUNC_CHECK_ADDRESS 67
-#define FUNC_DISASSEMBLE_LEN 68
-#define FUNC_DISASSEMBLE_LEN32 69
-#define FUNC_DISASSEMBLE_LEN64 70
-#define FUNC_INTERLOCKED_INCREMENT 71
-#define FUNC_INTERLOCKED_DECREMENT 72
-#define FUNC_PHYSICAL_TO_VIRTUAL 73
-#define FUNC_VIRTUAL_TO_PHYSICAL 74
-#define FUNC_POI_PA 75
-#define FUNC_HI_PA 76
-#define FUNC_LOW_PA 77
-#define FUNC_DB_PA 78
-#define FUNC_DD_PA 79
-#define FUNC_DW_PA 80
-#define FUNC_DQ_PA 81
-#define FUNC_ED 82
-#define FUNC_EB 83
-#define FUNC_EQ 84
-#define FUNC_INTERLOCKED_EXCHANGE 85
-#define FUNC_INTERLOCKED_EXCHANGE_ADD 86
-#define FUNC_EB_PA 87
-#define FUNC_ED_PA 88
-#define FUNC_EQ_PA 89
-#define FUNC_INTERLOCKED_COMPARE_EXCHANGE 90
-#define FUNC_STRLEN 91
-#define FUNC_STRCMP 92
-#define FUNC_MEMCMP 93
-#define FUNC_STRNCMP 94
-#define FUNC_WCSLEN 95
-#define FUNC_WCSCMP 96
-#define FUNC_EVENT_INJECT_ERROR_CODE 97
-#define FUNC_MEMCPY 98
-#define FUNC_MEMCPY_PA 99
-#define FUNC_WCSNCMP 100
+#define FUNC_LBR_START 54
+#define FUNC_LBR_STOP 55
+#define FUNC_RDTSC 56
+#define FUNC_RDTSCP 57
+#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 58
+#define FUNC_EVENT_INJECT 59
+#define FUNC_POI 60
+#define FUNC_DB 61
+#define FUNC_DD 62
+#define FUNC_DW 63
+#define FUNC_DQ 64
+#define FUNC_NEG 65
+#define FUNC_HI 66
+#define FUNC_LOW 67
+#define FUNC_NOT 68
+#define FUNC_CHECK_ADDRESS 69
+#define FUNC_DISASSEMBLE_LEN 70
+#define FUNC_DISASSEMBLE_LEN32 71
+#define FUNC_DISASSEMBLE_LEN64 72
+#define FUNC_INTERLOCKED_INCREMENT 73
+#define FUNC_INTERLOCKED_DECREMENT 74
+#define FUNC_PHYSICAL_TO_VIRTUAL 75
+#define FUNC_VIRTUAL_TO_PHYSICAL 76
+#define FUNC_POI_PA 77
+#define FUNC_HI_PA 78
+#define FUNC_LOW_PA 79
+#define FUNC_DB_PA 80
+#define FUNC_DD_PA 81
+#define FUNC_DW_PA 82
+#define FUNC_DQ_PA 83
+#define FUNC_ED 84
+#define FUNC_EB 85
+#define FUNC_EQ 86
+#define FUNC_INTERLOCKED_EXCHANGE 87
+#define FUNC_INTERLOCKED_EXCHANGE_ADD 88
+#define FUNC_EB_PA 89
+#define FUNC_ED_PA 90
+#define FUNC_EQ_PA 91
+#define FUNC_INTERLOCKED_COMPARE_EXCHANGE 92
+#define FUNC_STRLEN 93
+#define FUNC_STRCMP 94
+#define FUNC_MEMCMP 95
+#define FUNC_STRNCMP 96
+#define FUNC_WCSLEN 97
+#define FUNC_WCSCMP 98
+#define FUNC_EVENT_INJECT_ERROR_CODE 99
+#define FUNC_MEMCPY 100
+#define FUNC_MEMCPY_PA 101
+#define FUNC_WCSNCMP 102
static const char *const FunctionNames[] = {
"FUNC_UNDEFINED",
@@ -251,6 +253,8 @@ static const char *const FunctionNames[] = {
"FUNC_EVENT_TRACE_STEP_OUT",
"FUNC_EVENT_TRACE_INSTRUMENTATION_STEP",
"FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN",
+"FUNC_LBR_START",
+"FUNC_LBR_STOP",
"FUNC_RDTSC",
"FUNC_RDTSCP",
"FUNC_SPINLOCK_LOCK_CUSTOM_WAIT",
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 7e8d7997..17456522 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -17,7 +17,7 @@
#endif
//////////////////////////////////////////////////
-// hypertrace functions //
+// HyperTrace Functions //
//////////////////////////////////////////////////
//
@@ -38,3 +38,13 @@ HyperTraceUninit();
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * LbrOperationRequest,
BOOLEAN ApplyFromVmxRootMode);
+
+//////////////////////////////////////////////////
+// LBR Functions //
+//////////////////////////////////////////////////
+
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTraceStartLbr();
+
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTraceStopLbr();
diff --git a/hyperdbg/script-engine/code/parse-table.c b/hyperdbg/script-engine/code/parse-table.c
index 8d8fad9e..04b11dd7 100644
--- a/hyperdbg/script-engine/code/parse-table.c
+++ b/hyperdbg/script-engine/code/parse-table.c
@@ -140,6 +140,8 @@ const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
+ {NON_TERMINAL, "CALL_FUNC_STATEMENT"},
+ {NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "VA"},
{NON_TERMINAL, "VA"},
{NON_TERMINAL, "IF_STATEMENT"},
@@ -367,6 +369,8 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "event_trace_step_out"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_STEP_OUT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_instrumentation_step"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_INSTRUMENTATION_STEP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_instrumentation_step_in"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_INSTRUMENTATION_STEP_IN"},{SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "lbr_start"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_START"},{SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "lbr_stop"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_STOP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "rdtsc"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSC"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "rdtscp"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSCP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "spinlock_lock_custom_wait"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@SPINLOCK_LOCK_CUSTOM_WAIT"},{SPECIAL_TOKEN, ")"}},
@@ -642,6 +646,8 @@ const unsigned int RhsSize[RULES_COUNT]=
4,
4,
4,
+4,
+4,
5,
5,
7,
@@ -826,260 +832,262 @@ const unsigned int RhsSize[RULES_COUNT]=
};
const char* NoneTerminalMap[NONETERMINAL_COUNT]=
{
-"BOOLEAN_EXPRESSION",
-"END_OF_IF",
-"ARRAY_DIMS2",
-"E3'",
-"VARIABLE_TYPE1",
-"E5",
-"VA2",
-"VA3",
-"ARRAY_DIMS_READ",
+"S2",
+"WHILE_STATEMENT",
"ASSIGNMENT_STATEMENT",
-"RETURN",
-"E2",
-"ELSIF_STATEMENT",
"SIMPLE_ASSIGNMENT",
-"INC_DEC'",
-"INIT_LIST",
-"MULTIPLE_ASSIGNMENT2",
-"WSTRING",
-"INIT_LIST_TAIL",
-"E3",
"ASSIGNMENT_STATEMENT'",
-"INIT_LIST_CONT",
+"E2'",
+"E4",
+"E2",
+"WstringNumber",
+"E3",
+"ELSE_STATEMENT",
+"VARIABLE_TYPE6",
+"ARRAY_DIMS2",
+"ARRAY_DIMS_WRITE_OPT",
+"CONST_NUMBER",
+"STRING",
+"ARRAY_DIMS",
+"ARRAY_DIMS_READ_OPT",
+"WSTRING",
+"VA3",
+"VARIABLE_TYPE2",
+"ELSIF_STATEMENT",
+"VARIABLE_TYPE1",
+"VARIABLE_TYPE3",
+"END_OF_IF",
+"MULTIPLE_ASSIGNMENT2",
+"INIT_LIST_TAIL",
+"ARRAY_DIMS_READ2",
+"INIT_LIST",
+"E0'",
+"ARRAY_DIMS_WRITE",
+"INC_DEC'",
+"VA2",
+"StringNumber",
+"IF_STATEMENT",
+"ARRAY_DIMS_READ",
"S",
+"VARIABLE_TYPE4",
+"E5'",
+"INIT_LIST_CONT",
+"E5",
+"L_VALUE",
+"E1'",
+"E3'",
+"VARIABLE_TYPE5",
+"ARRAY_INIT",
+"VA",
+"E1",
+"RETURN",
+"FOR_STATEMENT",
"MULTIPLE_ASSIGNMENT",
"E12",
-"E5'",
-"INIT_ITEM",
-"ELSE_STATEMENT",
-"IF_STATEMENT",
-"VARIABLE_TYPE3",
-"WstringNumber",
-"VARIABLE_TYPE4",
-"STATEMENT2",
-"VARIABLE_TYPE5",
-"CONST_NUMBER",
-"S2",
-"DO_WHILE_STATEMENT",
-"ARRAY_DIMS_WRITE",
-"EXPRESSION",
-"E1'",
-"VARIABLE_TYPE2",
"CALL_FUNC_STATEMENT",
-"FOR_STATEMENT",
-"VA",
-"E2'",
-"WHILE_STATEMENT",
-"ARRAY_DIMS",
-"VARIABLE_TYPE6",
-"ELSIF_STATEMENT'",
-"E4'",
-"E0'",
-"ARRAY_DIMS_READ_OPT",
-"INC_DEC",
-"ARRAY_DIMS_READ2",
-"STRING",
-"ARRAY_DIMS_WRITE_OPT",
-"L_VALUE",
-"E1",
-"E4",
-"StringNumber",
"ARRAY_DIMS_WRITE2",
"STATEMENT",
-"ARRAY_INIT"
+"INC_DEC",
+"BOOLEAN_EXPRESSION",
+"STATEMENT2",
+"EXPRESSION",
+"ELSIF_STATEMENT'",
+"E4'",
+"INIT_ITEM",
+"DO_WHILE_STATEMENT"
};
const char* TerminalMap[TERMINAL_COUNT]=
{
-"event_sc",
-"interlocked_exchange",
-"spinlock_lock_custom_wait",
"_string",
-"rdtsc",
-"_octal",
-"printf",
-"%=",
-"poi_pa",
-"{",
-"_script_variable_type",
-"formats",
-"dw_pa",
-"event_inject",
-"rdtscp",
-"|=",
-"event_trace_instrumentation_step",
-";",
-"(",
-"hi_pa",
-"else",
-"_hex",
-"<<=",
-"eq",
-"event_inject_error_code",
-"wcsncmp",
-"interlocked_compare_exchange",
-"eb_pa",
-"print",
-">>",
-"event_enable",
-"continue",
-"dq_pa",
-"dw",
-"-=",
-"/=",
-">>=",
-"test_statement",
-"spinlock_lock",
-"interlocked_decrement",
-"low_pa",
-"_global_id",
-"_decimal",
-"virtual_to_physical",
-"+=",
-"_function_parameter_id",
-"event_trace_step",
-"interlocked_exchange_add",
-"check_address",
-"=",
-"pause",
-"flush",
-"#include",
-"-",
-"[",
-"*=",
-"poi",
-"_function_id",
-"spinlock_unlock",
-",",
-"event_clear",
-"memcpy",
-"wcslen",
-"}",
-"db_pa",
-"strlen",
-"do",
-"db",
-"$",
-"memcmp",
-"while",
-"microsleep",
-"_register",
-"&=",
-"_wstring",
-"disassemble_len32",
-"ed_pa",
-"event_disable",
"_binary",
-"interlocked_increment",
-"ed",
-"break",
-"strcmp",
+"&=",
"not",
-"]",
-"wcscmp",
-"event_trace_instrumentation_step_in",
-"*",
-"strncmp",
-"--",
-"dq",
-"for",
-"&",
-"/",
-"disassemble_len64",
+"spinlock_unlock",
"|",
-"eq_pa",
-"eb",
+"--",
"~",
-"^",
-"_local_id",
"neg",
-"hi",
-"elsif",
-"dd",
-"physical_to_virtual",
+"event_trace_step",
+"ed_pa",
+"strlen",
+"_decimal",
+"do",
+"wcsncmp",
"low",
-")",
-"^=",
-"++",
-"event_trace_step_out",
-"_pseudo_register",
-"reference",
"dd_pa",
-"disassemble_len",
+"_register",
+"+=",
+"virtual_to_physical",
+"_pseudo_register",
+"interlocked_decrement",
+"event_inject_error_code",
+"eq",
+">>",
+"interlocked_increment",
+"|=",
+"eb_pa",
+"db_pa",
"<<",
-"memcpy_pa",
+"}",
+"flush",
+"poi_pa",
+"<<=",
+"wcslen",
+"reference",
+",",
+"-=",
+"eb",
+"event_clear",
+")",
+"formats",
+"event_trace_step_out",
"if",
-"%",
-"return",
+"physical_to_virtual",
+"memcmp",
+"event_inject",
+"{",
+"hi",
+"hi_pa",
"+",
-"event_trace_step_in"
+"_script_variable_type",
+"low_pa",
+"_wstring",
+"continue",
+"db",
+"pause",
+"microsleep",
+"interlocked_compare_exchange",
+"disassemble_len32",
+"_global_id",
+"interlocked_exchange",
+"dq",
+"event_enable",
+"print",
+"%=",
+"disassemble_len",
+"_function_id",
+"$",
+"lbr_start",
+"event_sc",
+"strncmp",
+"elsif",
+"++",
+"event_trace_instrumentation_step_in",
+"printf",
+";",
+"memcpy_pa",
+"wcscmp",
+"dw",
+"event_disable",
+"test_statement",
+"memcpy",
+"-",
+"spinlock_lock_custom_wait",
+"_local_id",
+"lbr_stop",
+"%",
+"_octal",
+"_function_parameter_id",
+"eq_pa",
+">>=",
+"dq_pa",
+"dd",
+"return",
+"dw_pa",
+"event_trace_step_in",
+"check_address",
+"while",
+"event_trace_instrumentation_step",
+"/=",
+"interlocked_exchange_add",
+"*",
+"&",
+"]",
+"break",
+"rdtscp",
+"(",
+"poi",
+"strcmp",
+"else",
+"ed",
+"^=",
+"^",
+"#include",
+"rdtsc",
+"spinlock_lock",
+"=",
+"/",
+"_hex",
+"*=",
+"for",
+"disassemble_len64",
+"["
};
const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]=
{
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,2147483648 ,147 ,2147483648 ,147 ,147 ,2147483648 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,191 ,2147483648 ,2147483648 ,191 ,191 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,191 ,191 ,2147483648 ,191 ,2147483648 ,191 ,2147483648 ,191 ,191 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,191 ,191 ,191 ,191 ,2147483648 ,191 ,2147483648 ,191 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,191 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,191 ,191 ,2147483648 ,191 ,2147483648 ,191 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,191 ,191 ,2147483648 ,191 ,191 ,191 ,2147483648 ,191 ,191 ,2147483648 ,191 ,2147483648 ,191 ,191 ,2147483648 ,191 ,2147483648 ,191 ,2147483648 ,191 ,2147483648 ,191 ,191 ,191 ,2147483648 ,191 ,191 ,191 ,2147483648 ,191 ,191 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,191 ,191 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 },
- {2147483648 ,265 ,2147483648 ,2147483648 ,265 ,265 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,265 ,265 ,2147483648 ,265 ,2147483648 ,265 ,2147483648 ,265 ,265 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,265 ,265 ,265 ,265 ,2147483648 ,265 ,2147483648 ,265 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,265 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,265 ,265 ,2147483648 ,265 ,2147483648 ,265 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,265 ,265 ,2147483648 ,265 ,265 ,265 ,2147483648 ,265 ,265 ,2147483648 ,265 ,2147483648 ,265 ,265 ,2147483648 ,265 ,2147483648 ,265 ,2147483648 ,265 ,2147483648 ,265 ,265 ,265 ,2147483648 ,265 ,265 ,265 ,2147483648 ,265 ,265 ,265 ,264 ,2147483648 ,2147483648 ,2147483648 ,265 ,265 ,265 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,28 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 },
- {2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 },
- {143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,2147483648 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,2147483648 ,2147483648 ,2147483648 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,2147483648 ,143 ,2147483648 ,143 ,143 ,2147483648 ,2147483648 ,143 ,143 ,143 ,142 ,143 ,143 ,143 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,143 ,143 ,143 ,2147483648 ,143 ,143 ,2147483648 ,143 ,2147483648 ,143 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,161 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,166 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,64 ,66 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,71 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,47 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 },
- {0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2 ,0 ,0 ,0 ,0 ,2 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,226 ,2147483648 ,2147483648 ,196 ,251 ,2147483648 ,2147483648 ,216 ,2147483648 ,2147483648 ,2147483648 ,221 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,239 ,217 ,2147483648 ,251 ,2147483648 ,225 ,2147483648 ,238 ,231 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,212 ,218 ,240 ,251 ,215 ,2147483648 ,240 ,2147483648 ,227 ,207 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,198 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,219 ,232 ,2147483648 ,199 ,2147483648 ,234 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,209 ,229 ,2147483648 ,251 ,211 ,223 ,2147483648 ,233 ,206 ,2147483648 ,237 ,2147483648 ,256 ,235 ,2147483648 ,202 ,2147483648 ,257 ,2147483648 ,210 ,2147483648 ,230 ,224 ,255 ,2147483648 ,240 ,203 ,204 ,2147483648 ,200 ,214 ,205 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,213 ,220 ,208 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,192 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,193 ,2147483648 ,195 ,2147483648 },
- {2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,42 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 },
- {146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,145 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,271 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,26 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,25 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,21 ,2147483648 ,23 ,2147483648 ,21 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,22 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,19 ,23 ,2147483648 ,23 ,18 ,23 ,21 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,24 ,23 ,23 ,2147483648 ,23 ,23 ,21 ,23 ,2147483648 ,23 ,20 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,21 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,17 ,2147483648 ,27 ,2147483648 ,23 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,14 ,15 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,16 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,174 ,2147483648 ,2147483648 ,174 ,174 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,174 ,174 ,2147483648 ,174 ,2147483648 ,174 ,2147483648 ,174 ,174 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,174 ,174 ,174 ,174 ,2147483648 ,174 ,2147483648 ,174 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,174 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,174 ,174 ,2147483648 ,174 ,2147483648 ,174 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,174 ,174 ,2147483648 ,174 ,174 ,174 ,2147483648 ,174 ,174 ,2147483648 ,174 ,2147483648 ,174 ,174 ,2147483648 ,174 ,2147483648 ,174 ,2147483648 ,174 ,2147483648 ,174 ,174 ,174 ,2147483648 ,174 ,174 ,174 ,2147483648 ,174 ,174 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,174 ,174 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {81 ,123 ,93 ,2147483648 ,91 ,2147483648 ,83 ,2147483648 ,113 ,2147483648 ,2147483648 ,74 ,118 ,94 ,92 ,2147483648 ,89 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,122 ,135 ,138 ,128 ,125 ,73 ,2147483648 ,75 ,2147483648 ,119 ,98 ,2147483648 ,2147483648 ,2147483648 ,78 ,79 ,109 ,115 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,86 ,124 ,104 ,2147483648 ,84 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,80 ,2147483648 ,77 ,136 ,133 ,2147483648 ,116 ,129 ,2147483648 ,96 ,2147483648 ,131 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,106 ,126 ,76 ,2147483648 ,108 ,120 ,2147483648 ,130 ,103 ,2147483648 ,134 ,90 ,2147483648 ,132 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,127 ,121 ,2147483648 ,2147483648 ,2147483648 ,100 ,101 ,2147483648 ,97 ,111 ,102 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,110 ,117 ,105 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,87 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {144 ,144 ,144 ,2147483648 ,144 ,2147483648 ,144 ,2147483648 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,2147483648 ,144 ,2147483648 ,2147483648 ,144 ,144 ,2147483648 ,2147483648 ,144 ,144 ,144 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,144 ,144 ,2147483648 ,2147483648 ,2147483648 ,144 ,144 ,144 ,144 ,144 ,2147483648 ,144 ,2147483648 ,144 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,144 ,2147483648 ,2147483648 ,2147483648 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,144 ,2147483648 ,2147483648 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,2147483648 ,2147483648 ,144 ,2147483648 ,144 ,144 ,2147483648 ,2147483648 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,144 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,144 ,144 ,144 ,2147483648 ,144 ,144 ,2147483648 ,144 ,2147483648 ,144 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,243 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,243 ,2147483648 ,243 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,246 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,246 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,246 ,2147483648 ,246 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,177 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 },
- {2147483648 ,187 ,2147483648 ,2147483648 ,187 ,187 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,187 ,187 ,2147483648 ,187 ,2147483648 ,187 ,2147483648 ,187 ,187 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,187 ,187 ,187 ,187 ,2147483648 ,187 ,2147483648 ,187 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,187 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,187 ,187 ,2147483648 ,187 ,2147483648 ,187 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,187 ,187 ,2147483648 ,187 ,187 ,187 ,2147483648 ,187 ,187 ,2147483648 ,187 ,2147483648 ,187 ,187 ,2147483648 ,187 ,2147483648 ,187 ,2147483648 ,187 ,2147483648 ,187 ,187 ,187 ,2147483648 ,187 ,187 ,187 ,2147483648 ,187 ,187 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,187 ,187 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 },
- {2147483648 ,268 ,2147483648 ,269 ,268 ,268 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,268 ,268 ,2147483648 ,268 ,2147483648 ,268 ,2147483648 ,268 ,268 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,268 ,268 ,268 ,268 ,2147483648 ,268 ,2147483648 ,268 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,268 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,268 ,268 ,2147483648 ,268 ,2147483648 ,268 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,268 ,268 ,2147483648 ,268 ,268 ,268 ,2147483648 ,268 ,268 ,2147483648 ,268 ,2147483648 ,268 ,268 ,2147483648 ,268 ,2147483648 ,268 ,2147483648 ,268 ,2147483648 ,268 ,268 ,268 ,2147483648 ,268 ,268 ,268 ,2147483648 ,268 ,268 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,268 ,268 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,12 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,11 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,9 ,2147483648 ,7 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,13 ,2147483648 ,2147483648 ,2147483648 ,9 ,8 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,5 ,9 ,2147483648 ,9 ,4 ,9 ,7 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,10 ,9 ,9 ,2147483648 ,9 ,9 ,7 ,9 ,2147483648 ,9 ,6 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,7 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,3 ,2147483648 ,2147483648 ,2147483648 ,9 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
+ {2147483648 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,2147483648 ,16 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,15 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 },
+ {2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 },
+ {2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,273 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,272 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 },
+ {2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,185 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,147 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 },
+ {2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,55 },
+ {2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,144 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,248 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,248 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 },
+ {2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 },
+ {2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,267 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,267 ,267 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,267 ,2147483648 ,2147483648 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 },
+ {271 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 },
+ {2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,47 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 },
+ {2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 },
+ {2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,253 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,257 ,205 ,2147483648 ,231 ,234 ,253 ,2147483648 ,240 ,207 ,222 ,242 ,2147483648 ,217 ,254 ,214 ,2147483648 ,227 ,2147483648 ,213 ,2147483648 ,230 ,221 ,2147483648 ,2147483648 ,2147483648 ,218 ,2147483648 ,238 ,215 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,216 ,236 ,2147483648 ,2147483648 ,206 ,219 ,256 ,2147483648 ,220 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,233 ,211 ,242 ,228 ,204 ,2147483648 ,2147483648 ,2147483648 ,210 ,243 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,203 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,242 ,2147483648 ,2147483648 ,253 ,242 ,232 ,2147483648 ,224 ,202 ,2147483648 ,223 ,2147483648 ,209 ,2147483648 ,2147483648 ,2147483648 ,229 ,258 ,259 ,2147483648 ,2147483648 ,199 ,241 ,200 ,235 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,212 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,105 ,80 ,2147483648 ,2147483648 ,2147483648 ,102 ,86 ,128 ,131 ,2147483648 ,2147483648 ,140 ,104 ,119 ,2147483648 ,2147483648 ,114 ,2147483648 ,111 ,137 ,124 ,2147483648 ,110 ,2147483648 ,127 ,118 ,2147483648 ,2147483648 ,85 ,115 ,2147483648 ,135 ,112 ,2147483648 ,2147483648 ,123 ,77 ,2147483648 ,74 ,88 ,2147483648 ,113 ,133 ,96 ,2147483648 ,103 ,116 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,98 ,84 ,82 ,130 ,108 ,2147483648 ,125 ,101 ,75 ,73 ,2147483648 ,107 ,2147483648 ,2147483648 ,91 ,81 ,134 ,2147483648 ,2147483648 ,90 ,83 ,2147483648 ,139 ,136 ,100 ,76 ,78 ,138 ,2147483648 ,95 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,121 ,99 ,2147483648 ,120 ,87 ,106 ,2147483648 ,89 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,97 ,132 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,93 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 },
+ {2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,58 },
+ {2147483648 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,5 ,9 ,9 ,9 ,7 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,3 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,12 ,9 ,2147483648 ,11 ,9 ,9 ,9 ,9 ,9 ,7 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,8 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,7 ,9 ,2147483648 ,2147483648 ,7 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,4 ,9 ,2147483648 ,9 ,7 ,2147483648 ,2147483648 ,10 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,13 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,6 ,9 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,19 ,23 ,23 ,23 ,21 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,17 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,26 ,23 ,2147483648 ,25 ,23 ,23 ,23 ,23 ,23 ,21 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,22 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,21 ,23 ,2147483648 ,2147483648 ,21 ,23 ,2147483648 ,23 ,23 ,27 ,23 ,23 ,23 ,18 ,23 ,2147483648 ,23 ,21 ,2147483648 ,2147483648 ,24 ,23 ,2147483648 ,23 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,20 ,23 ,2147483648 },
+ {2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,42 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
};
const char* KeywordList[]= {
"print",
@@ -1100,6 +1108,8 @@ const char* KeywordList[]= {
"event_trace_step_out",
"event_trace_instrumentation_step",
"event_trace_instrumentation_step_in",
+"lbr_start",
+"lbr_stop",
"rdtsc",
"rdtscp",
"spinlock_lock_custom_wait",
@@ -1315,6 +1325,8 @@ const char* ZeroOpFunc1[] = {
"@EVENT_TRACE_STEP_OUT",
"@EVENT_TRACE_INSTRUMENTATION_STEP",
"@EVENT_TRACE_INSTRUMENTATION_STEP_IN",
+"@LBR_START",
+"@LBR_STOP",
};
const char* ZeroOpFunc2[] = {
"@RDTSC",
@@ -1377,6 +1389,8 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@EVENT_TRACE_STEP_OUT", FUNC_EVENT_TRACE_STEP_OUT},
{"@EVENT_TRACE_INSTRUMENTATION_STEP", FUNC_EVENT_TRACE_INSTRUMENTATION_STEP},
{"@EVENT_TRACE_INSTRUMENTATION_STEP_IN", FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN},
+{"@LBR_START", FUNC_LBR_START},
+{"@LBR_STOP", FUNC_LBR_STOP},
{"@RDTSC", FUNC_RDTSC},
{"@RDTSCP", FUNC_RDTSCP},
{"@SPINLOCK_LOCK_CUSTOM_WAIT", FUNC_SPINLOCK_LOCK_CUSTOM_WAIT},
@@ -1969,117 +1983,117 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
};
const char* LalrNoneTerminalMap[NONETERMINAL_COUNT]=
{
-"ARRAY2",
-"B5",
-"E10",
-"ARRAY3",
-"E5",
-"VA2",
-"VA3",
-"B1",
-"WSTRING",
-"B6",
-"E3",
-"S",
-"E12",
-"E13",
-"BE",
-"B2",
-"EXP",
-"WstringNumber",
-"ARRAY1",
-"ARRAY4",
-"B3",
-"CMP",
-"STRING",
-"StringNumber",
"E4",
-"B4"
+"WstringNumber",
+"E3",
+"STRING",
+"EXP",
+"E13",
+"CMP",
+"ARRAY1",
+"VA3",
+"ARRAY3",
+"B5",
+"ARRAY2",
+"B3",
+"VA2",
+"B1",
+"StringNumber",
+"B4",
+"S",
+"E5",
+"ARRAY4",
+"B6",
+"E12",
+"E10",
+"B2",
+"BE",
+"WSTRING"
};
const char* LalrTerminalMap[TERMINAL_COUNT]=
{
-"interlocked_exchange",
"_string",
-"_octal",
-"poi_pa",
-"dw_pa",
-"<",
-"(",
-"hi_pa",
-"_hex",
-"eq",
-"wcsncmp",
-"interlocked_compare_exchange",
-"eb_pa",
-">>",
-"dq_pa",
-"dw",
-"interlocked_decrement",
-"low_pa",
-"_global_id",
-"==",
-"_decimal",
-"virtual_to_physical",
-"_function_parameter_id",
-"interlocked_exchange_add",
-"check_address",
-"-",
-"[",
-"poi",
-"_function_id",
-",",
-"wcslen",
-"strlen",
-"db_pa",
-"db",
-"$",
-"memcmp",
-"&&",
-"_register",
-"_wstring",
-"disassemble_len32",
-"ed_pa",
"_binary",
-"interlocked_increment",
-">=",
-"!=",
-"ed",
-"strcmp",
"not",
-"]",
-"wcscmp",
-"*",
-"strncmp",
-"dq",
-"&",
-"/",
-"disassemble_len64",
"|",
-"<=",
-"eq_pa",
-"eb",
"~",
-"^",
-"_local_id",
"neg",
-"hi",
-"dd",
-"||",
-"physical_to_virtual",
+"ed_pa",
+"strlen",
+"_decimal",
+"wcsncmp",
"low",
-")",
-"_pseudo_register",
-">",
-"reference",
"dd_pa",
+"_register",
+"virtual_to_physical",
+"_pseudo_register",
+"interlocked_decrement",
+"eq",
+">",
+">=",
+"&&",
+">>",
+"interlocked_increment",
"<<",
+"db_pa",
+"eb_pa",
+"wcslen",
+"poi_pa",
+"reference",
+",",
+"eb",
+")",
+"physical_to_virtual",
+"memcmp",
+"==",
+"hi",
+"+",
+"hi_pa",
+"low_pa",
+"_wstring",
+"db",
+"<=",
+"interlocked_compare_exchange",
+"disassemble_len32",
+"_global_id",
+"interlocked_exchange",
+"dq",
"disassemble_len",
+"_function_id",
+"$",
+"!=",
+"strncmp",
+"||",
+"wcscmp",
+"dw",
+"-",
+"_local_id",
"%",
-"+"
+"_octal",
+"_function_parameter_id",
+"eq_pa",
+"dq_pa",
+"dd",
+"dw_pa",
+"check_address",
+"interlocked_exchange_add",
+"<",
+"*",
+"&",
+"]",
+"(",
+"poi",
+"strcmp",
+"ed",
+"^",
+"/",
+"_hex",
+"disassemble_len64",
+"["
};
const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{
- {18 ,7 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,3 ,2147483648 ,8 ,11 ,1 ,15 ,16 ,2 ,4 ,10 ,2147483648 ,17 ,2147483648 ,5 ,9 ,2147483648 ,2147483648 ,12 ,6 },
+ {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,7 ,18 ,5 ,2147483648 ,3 ,2147483648 ,6 ,1 ,13 ,2147483648 ,8 ,15 ,14 ,4 ,2 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2097,41 +2111,42 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,7 ,18 ,5 ,2147483648 ,3 ,2147483648 ,6 ,2147483648 ,13 ,2147483648 ,8 ,15 ,14 ,4 ,123 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2149,80 +2164,79 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,7 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,3 ,2147483648 ,8 ,11 ,2147483648 ,15 ,16 ,141 ,4 ,10 ,2147483648 ,17 ,2147483648 ,5 ,9 ,2147483648 ,2147483648 ,12 ,6 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,7 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,8 ,11 ,2147483648 ,15 ,16 ,2147483648 ,144 ,10 ,2147483648 ,17 ,2147483648 ,5 ,9 ,2147483648 ,2147483648 ,12 ,6 },
- {18 ,7 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,8 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,10 ,2147483648 ,17 ,2147483648 ,145 ,9 ,2147483648 ,2147483648 ,12 ,6 },
- {18 ,7 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,8 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,10 ,2147483648 ,17 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,12 ,146 },
- {18 ,147 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,8 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,10 ,2147483648 ,17 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,10 ,2147483648 ,17 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,149 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,150 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,151 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,152 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,153 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,154 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,162 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,166 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,167 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,168 ,170 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,173 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,174 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,175 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,7 ,18 ,5 ,2147483648 ,2147483648 ,2147483648 ,6 ,2147483648 ,13 ,2147483648 ,8 ,15 ,14 ,144 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,7 ,18 ,145 ,2147483648 ,2147483648 ,2147483648 ,6 ,2147483648 ,13 ,2147483648 ,8 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,7 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,13 ,2147483648 ,8 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,147 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,8 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,148 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,149 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,150 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,151 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,152 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,153 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,154 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,159 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,160 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,162 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,166 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,167 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,168 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,176 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,177 ,178 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,179 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {12 ,171 ,11 ,2147483648 ,169 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,170 },
+ {12 ,2147483648 ,11 ,2147483648 ,173 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,174 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,175 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,180 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,182 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,184 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,185 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,186 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,180 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,187 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,188 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,176 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,177 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,178 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,189 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,190 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,191 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,192 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,179 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,180 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,181 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,182 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,183 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,184 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,185 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,186 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,187 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,188 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,189 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,190 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,191 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,192 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,193 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,194 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,195 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,196 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,197 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,198 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,199 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,200 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,201 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,202 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,203 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,204 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,180 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,205 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,206 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,207 ,208 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,209 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,210 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,211 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,212 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,213 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,214 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,194 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,195 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,196 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,197 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,199 ,198 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,200 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,202 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,203 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,204 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,205 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,199 ,206 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,207 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,209 ,11 ,2147483648 ,208 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,170 },
+ {12 ,2147483648 ,11 ,2147483648 ,210 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,211 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,212 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,199 ,206 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,213 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,214 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,216 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,217 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {12 ,216 ,11 ,2147483648 ,215 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,170 },
+ {12 ,2147483648 ,11 ,199 ,206 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,217 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2241,9 +2255,9 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2298,55 +2312,55 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,267 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,267 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,268 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,177 ,269 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,268 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,269 ,11 ,2147483648 ,208 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,170 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,270 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,177 ,271 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,270 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,180 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,272 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,273 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,180 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,274 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,271 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,272 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,275 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,276 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,273 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,274 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,277 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,278 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,279 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,280 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,275 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,180 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,181 ,281 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,276 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,277 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,199 ,206 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,278 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,279 ,11 ,2147483648 ,208 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,170 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,280 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,199 ,206 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,282 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,199 ,206 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,282 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2365,19 +2379,19 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,299 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,299 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,300 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,301 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {18 ,2147483648 ,14 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,15 ,16 ,2147483648 ,2147483648 ,302 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,300 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,301 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {12 ,2147483648 ,11 ,2147483648 ,302 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2389,313 +2403,313 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
};
const int LalrActionTable[LALR_STATE_COUNT][LALR_TERMINAL_COUNT]=
{
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,-13 ,83 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,-13 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,90 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,91 ,2147483648 ,2147483648 ,-27 ,93 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,92 ,-27 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-106 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,2147483648 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,2147483648 ,38 ,68 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,2147483648 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,2147483648 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,2147483648 ,38 ,68 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,2147483648 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,2147483648 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,2147483648 ,38 ,68 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,2147483648 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,2147483648 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,2147483648 ,38 ,68 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,2147483648 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,2147483648 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,2147483648 ,38 ,68 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,2147483648 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,-95 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,96 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,171 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,171 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 },
- {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 },
- {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,171 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,215 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,90 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,90 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,91 ,2147483648 ,2147483648 ,-26 ,93 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,92 ,-26 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,91 ,2147483648 ,2147483648 ,-25 ,93 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,92 ,-25 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,96 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,-105 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,-105 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,-108 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,-107 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,171 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,171 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 },
- {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 },
- {36 ,183 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,286 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,289 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,290 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 },
- {36 ,2147483648 ,57 ,25 ,69 ,2147483648 ,73 ,75 ,20 ,59 ,30 ,52 ,42 ,2147483648 ,54 ,43 ,64 ,27 ,21 ,2147483648 ,45 ,48 ,37 ,47 ,67 ,40 ,2147483648 ,66 ,44 ,2147483648 ,65 ,41 ,61 ,34 ,2147483648 ,33 ,2147483648 ,58 ,2147483648 ,39 ,56 ,50 ,31 ,2147483648 ,2147483648 ,55 ,63 ,23 ,2147483648 ,22 ,28 ,38 ,68 ,70 ,2147483648 ,53 ,2147483648 ,2147483648 ,29 ,74 ,32 ,2147483648 ,24 ,60 ,26 ,19 ,2147483648 ,72 ,51 ,2147483648 ,49 ,2147483648 ,35 ,62 ,2147483648 ,71 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 }
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,82 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,84 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,-21 ,88 ,2147483648 ,87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,91 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,92 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 },
+ {2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,2147483648 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,2147483648 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,2147483648 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-106 },
+ {2147483648 ,60 ,41 ,2147483648 ,2147483648 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,2147483648 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,2147483648 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,2147483648 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,2147483648 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,2147483648 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,2147483648 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,2147483648 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,2147483648 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,2147483648 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,2147483648 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,2147483648 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,-95 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,96 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,172 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,172 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,172 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,91 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,92 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,91 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,92 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,96 },
+ {2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,-105 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,-108 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,-107 },
+ {2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,172 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 },
+ {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,172 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 },
+ {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 },
+ {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,286 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,289 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,290 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 }
};
const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{
diff --git a/hyperdbg/script-engine/header/parse-table.h b/hyperdbg/script-engine/header/parse-table.h
index 7e6dad85..96d146e1 100644
--- a/hyperdbg/script-engine/header/parse-table.h
+++ b/hyperdbg/script-engine/header/parse-table.h
@@ -1,19 +1,19 @@
#pragma once
#ifndef PARSE_TABLE_H
#define PARSE_TABLE_H
-#define RULES_COUNT 272
-#define TERMINAL_COUNT 122
+#define RULES_COUNT 274
+#define TERMINAL_COUNT 124
#define NONETERMINAL_COUNT 63
#define START_VARIABLE "S"
#define MAX_RHS_LEN 15
-#define KEYWORD_LIST_LENGTH 109
+#define KEYWORD_LIST_LENGTH 111
#define OPERATORS_ONE_OPERAND_LIST_LENGTH 3
#define OPERATORS_TWO_OPERAND_LIST_LENGTH 16
#define REGISTER_MAP_LIST_LENGTH 120
#define PSEUDO_REGISTER_MAP_LIST_LENGTH 16
#define SCRIPT_VARIABLE_TYPE_LIST_LENGTH 10
#define ASSIGNMENT_OPERATOR_LIST_LENGTH 10
-#define SEMANTIC_RULES_MAP_LIST_LENGTH 154
+#define SEMANTIC_RULES_MAP_LIST_LENGTH 156
#define THREEOPFUNC1_LENGTH 1
#define THREEOPFUNC2_LENGTH 3
#define TWOOPFUNC1_LENGTH 8
@@ -26,7 +26,7 @@
#define THREEOPFUNC4_LENGTH 1
#define ONEOPFUNC4_LENGTH 1
#define TWOOPFUNC4_LENGTH 1
-#define ZEROOPFUNC1_LENGTH 7
+#define ZEROOPFUNC1_LENGTH 9
#define ZEROOPFUNC2_LENGTH 2
#define VARARGFUNC1_LENGTH 1
extern const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT];
diff --git a/hyperdbg/script-engine/python/Grammar.txt b/hyperdbg/script-engine/python/Grammar.txt
index 353fa005..3cc6a45b 100644
--- a/hyperdbg/script-engine/python/Grammar.txt
+++ b/hyperdbg/script-engine/python/Grammar.txt
@@ -35,7 +35,7 @@
# TwoOpFunc4 the two inputs are numbers or wstrings and returns a number.
.TwoOpFunc4->wcscmp
-.ZeroOpFunc1->pause flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in
+.ZeroOpFunc1->pause flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in lbr_start lbr_stop
# ZeroOpFunc2 no input and returns a number
.ZeroOpFunc2->rdtsc rdtscp
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index 66f3d057..578c8cd0 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -2012,3 +2012,39 @@ ScriptEngineFunctionEventTraceStepIn()
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
+
+/**
+ * @brief Implementation of lbr_start function
+ *
+ * @return VOID
+ */
+VOID
+ScriptEngineFunctionLbrStart()
+{
+#ifdef SCRIPT_ENGINE_USER_MODE
+ ShowMessages("err, it's not possible to call lbr_start function in the user-mode\n");
+#endif // SCRIPT_ENGINE_USER_MODE
+
+#ifdef SCRIPT_ENGINE_KERNEL_MODE
+
+ HyperTraceStartLbr();
+
+#endif // SCRIPT_ENGINE_KERNEL_MODE
+}
+
+/**
+ * @brief Implementation of lbr_stop function
+ *
+ * @return VOID
+ */
+VOID
+ScriptEngineFunctionLbrStop()
+{
+#ifdef SCRIPT_ENGINE_USER_MODE
+ ShowMessages("err, it's not possible to call lbr_stop function in the user-mode\n");
+#endif // SCRIPT_ENGINE_USER_MODE
+
+#ifdef SCRIPT_ENGINE_KERNEL_MODE
+ HyperTraceStopLbr();
+#endif // SCRIPT_ENGINE_KERNEL_MODE
+}
diff --git a/hyperdbg/script-eval/code/ScriptEngineEval.c b/hyperdbg/script-eval/code/ScriptEngineEval.c
index dd3b39ce..903930f7 100644
--- a/hyperdbg/script-eval/code/ScriptEngineEval.c
+++ b/hyperdbg/script-eval/code/ScriptEngineEval.c
@@ -736,6 +736,18 @@ ScriptEngineExecute(PGUEST_REGS GuestRegs,
GuestRegs);
break;
+ case FUNC_LBR_START:
+
+ ScriptEngineFunctionLbrStart();
+
+ break;
+
+ case FUNC_LBR_STOP:
+
+ ScriptEngineFunctionLbrStop();
+
+ break;
+
case FUNC_FLUSH:
ScriptEngineFunctionFlush();
diff --git a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
index 49cb4869..2c07f760 100644
--- a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
+++ b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
@@ -263,6 +263,12 @@ ScriptEngineFunctionEventTraceInstrumentationStep();
VOID
ScriptEngineFunctionEventTraceStepIn();
+VOID
+ScriptEngineFunctionLbrStart();
+
+VOID
+ScriptEngineFunctionLbrStop();
+
UINT64
ScriptEngineFunctionStrcmp(const char * Address1, const char * Address2);
From 6abfc0ec46461004d2d766640eb3ad12f5f402dc Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 6 Apr 2026 19:55:08 +0200
Subject: [PATCH 110/323] pass VMX root state over LBR
---
hyperdbg/hypertrace/code/Lbr.c | 59 +++++++++++++------
hyperdbg/hypertrace/code/Tracing.c | 23 ++++----
hyperdbg/hypertrace/header/Lbr.h | 10 ++--
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 4 +-
hyperdbg/script-eval/code/Functions.c | 4 +-
5 files changed, 62 insertions(+), 38 deletions(-)
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index 7ed1c778..30232371 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -98,11 +98,15 @@ LbrInitialize()
* @brief Read LBR MSRs and store the values in the provided LBR_STATE structure
*
* @param State
+ * @param ApplyFromVmxRootMode
+ *
* @return VOID
*/
VOID
-LbrGetLbr(LBR_STATE * State)
+LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode)
{
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
ULONG i;
ULONGLONG DbgCtlMsr;
KIRQL OldIrql;
@@ -127,12 +131,15 @@ LbrGetLbr(LBR_STATE * State)
* @brief Write LBR MSRs from the provided LBR_STATE structure
*
* @param State
+ * @param ApplyFromVmxRootMode
+ *
* @return VOID
*/
-
VOID
-LbrPutLbr(LBR_STATE * State)
+LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode)
{
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
ULONGLONG DbgCtlMsr;
KIRQL OldIrql;
@@ -200,10 +207,12 @@ LbrFlushLbr()
* @brief Start collecting LBR branches for a specific process and store the configuration in the global LBR state list
*
* @param Request
+ * @param ApplyFromVmxRootMode
+ *
* @return BOOLEAN
*/
BOOLEAN
-LbrStartLbr(LBR_IOCTL_REQUEST * Request)
+LbrStartLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
{
LBR_STATE * State;
@@ -240,7 +249,9 @@ LbrStartLbr(LBR_IOCTL_REQUEST * Request)
// If the requesting process is the current process, trace it right away
//
if (State->Config.Pid == xgetcurrent_pid())
- LbrPutLbr(State);
+ {
+ LbrPutLbr(State, ApplyFromVmxRootMode);
+ }
return TRUE;
}
@@ -249,10 +260,12 @@ LbrStartLbr(LBR_IOCTL_REQUEST * Request)
* @brief Stop collecting LBR branches for a specific process and remove the corresponding LBR state from the global list
*
* @param Request
+ * @param ApplyFromVmxRootMode
+ *
* @return BOOLEAN
*/
BOOLEAN
-LbrStopLbr(LBR_IOCTL_REQUEST * Request)
+LbrStopLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
{
LBR_STATE * State;
@@ -266,7 +279,7 @@ LbrStopLbr(LBR_IOCTL_REQUEST * Request)
if (State->Config.Pid == xgetcurrent_pid())
{
- LbrGetLbr(State);
+ LbrGetLbr(State, ApplyFromVmxRootMode);
}
LbrRemoveLbrState(State);
@@ -278,12 +291,16 @@ LbrStopLbr(LBR_IOCTL_REQUEST * Request)
* @brief Dump LBR info for a specific process to debug logs and optionally copy the LBR data to user buffer
*
* @param Request
+ * @param ApplyFromVmxRootMode
+ *
* @return BOOLEAN
*/
BOOLEAN
-LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
+LbrDumpLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
{
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
LBR_STATE * State = LbrFindLbrState(Request->LbrConfig.Pid);
if (State == NULL)
return FALSE;
@@ -311,10 +328,12 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request)
* @brief Update LBR configuration for a specific process and optionally refresh the LBR MSRs if the current process is the owner
*
* @param Request
+ * @param ApplyFromVmxRootMode
+ *
* @return BOOLEAN
*/
BOOLEAN
-LbrConfigLbr(LBR_IOCTL_REQUEST * Request)
+LbrConfigLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
{
LBR_STATE * State;
@@ -329,9 +348,9 @@ LbrConfigLbr(LBR_IOCTL_REQUEST * Request)
if (State->Config.Pid == xgetcurrent_pid())
{
- LbrGetLbr(State);
+ LbrGetLbr(State, ApplyFromVmxRootMode);
State->Config.LbrSelect = Request->LbrConfig.LbrSelect;
- LbrPutLbr(State);
+ LbrPutLbr(State, ApplyFromVmxRootMode);
}
else
{
@@ -490,10 +509,12 @@ LbrFreeLbrStatList()
* @brief Handle IOCTL requests for LBR operations by dispatching to the appropriate function based on the command
*
* @param Request
+ * @param ApplyFromVmxRootMode
+ *
* @return BOOLEAN
*/
BOOLEAN
-LbrIoctlHandler(XIOCTL_REQUEST * Request)
+LbrIoctlHandler(XIOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
{
BOOLEAN Status = TRUE;
@@ -501,16 +522,16 @@ LbrIoctlHandler(XIOCTL_REQUEST * Request)
switch (Request->Cmd)
{
case LIBIHT_IOCTL_ENABLE_LBR:
- Status = LbrStartLbr(&Request->Body.Lbr);
+ Status = LbrStartLbr(&Request->Body.Lbr, ApplyFromVmxRootMode);
break;
case LIBIHT_IOCTL_DISABLE_LBR:
- Status = LbrStopLbr(&Request->Body.Lbr);
+ Status = LbrStopLbr(&Request->Body.Lbr, ApplyFromVmxRootMode);
break;
case LIBIHT_IOCTL_DUMP_LBR:
- Status = LbrDumpLbr(&Request->Body.Lbr);
+ Status = LbrDumpLbr(&Request->Body.Lbr, ApplyFromVmxRootMode);
break;
case LIBIHT_IOCTL_CONFIG_LBR:
- Status = LbrConfigLbr(&Request->Body.Lbr);
+ Status = LbrConfigLbr(&Request->Body.Lbr, ApplyFromVmxRootMode);
break;
default:
LogInfo("LIBIHT-COM: Invalid LBR ioctl command\n");
@@ -543,7 +564,7 @@ LbrCswitchHandler(ULONG PrevPid,
LogInfo("LIBIHT-COM: LBR context switch from pid %d on cpu core %d\n",
PrevState->Config.Pid,
xcoreid());
- LbrGetLbr(PrevState);
+ LbrGetLbr(PrevState, FALSE); // Assume this is called from non-VMX root
}
if (NextState)
@@ -551,7 +572,7 @@ LbrCswitchHandler(ULONG PrevPid,
LogInfo("LIBIHT-COM: LBR context switch to pid %d on cpu core %d\n",
NextState->Config.Pid,
xcoreid());
- LbrPutLbr(NextState);
+ LbrPutLbr(NextState, FALSE); // Assume this is called from non-VMX root
}
}
@@ -594,7 +615,7 @@ LbrNewProcHandler(
LbrInsertLbrState(ChildState);
if (ChildPid == xgetcurrent_pid())
- LbrPutLbr(ChildState);
+ LbrPutLbr(ChildState, FALSE); // Assume this is called from non-VMX root
}
/**
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index f416247e..b1ab5a7e 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -47,7 +47,7 @@ PerformLbrTraceAfterEnable()
Request.LbrConfig.Pid = 0;
Request.LbrConfig.LbrSelect = LBR_SELECT;
- if (LbrStartLbr(&Request))
+ if (LbrStartLbr(&Request, FALSE)) // Assume this is called from non-VMX root
{
for (volatile int i = 0; i < 50; i++)
{
@@ -67,13 +67,14 @@ PerformLbrTraceAfterEnable()
if (State)
{
- LbrGetLbr(State);
+ LbrGetLbr(State, FALSE); // Assume this is called from non-VMX root
}
LogInfo("Dumping LBR Buffer...\n");
- LbrDumpLbr(&Request);
- LbrStopLbr(&Request);
+ LbrDumpLbr(&Request, FALSE); // Assume this is called from non-VMX root
+
+ LbrStopLbr(&Request, FALSE); // Assume this is called from non-VMX root
}
KeRevertToUserAffinityThread();
@@ -81,27 +82,29 @@ PerformLbrTraceAfterEnable()
/**
* @brief Start LBR tracing for HyperTrace
+ * @param ApplyFromVmxRootMode
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceStartLbr()
+HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode)
{
LBR_IOCTL_REQUEST Request = {0};
Request.LbrConfig.Pid = 0;
Request.LbrConfig.LbrSelect = LBR_SELECT;
- return LbrStartLbr(&Request);
+ return LbrStartLbr(&Request, ApplyFromVmxRootMode);
}
/**
* @brief Stop LBR tracing for HyperTrace
+ * @param ApplyFromVmxRootMode
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceStopLbr()
+HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode)
{
LBR_IOCTL_REQUEST Request = {0};
@@ -112,13 +115,13 @@ HyperTraceStopLbr()
if (State)
{
- LbrGetLbr(State);
+ LbrGetLbr(State, ApplyFromVmxRootMode);
}
LogInfo("Dumping LBR Buffer...\n");
- LbrDumpLbr(&Request);
+ LbrDumpLbr(&Request, ApplyFromVmxRootMode);
- return LbrStopLbr(&Request);
+ return LbrStopLbr(&Request, ApplyFromVmxRootMode);
}
/**
diff --git a/hyperdbg/hypertrace/header/Lbr.h b/hyperdbg/hypertrace/header/Lbr.h
index 305b50a8..25cc11af 100644
--- a/hyperdbg/hypertrace/header/Lbr.h
+++ b/hyperdbg/hypertrace/header/Lbr.h
@@ -137,10 +137,10 @@ extern CPU_LBR_MAP CPU_LBR_MAPS[];
//////////////////////////////////////////////////
VOID
-LbrGetLbr(LBR_STATE * State);
+LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode);
VOID
-LbrPutLbr(LBR_STATE * State);
+LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode);
LBR_STATE *
LbrCreateLbrState();
@@ -164,13 +164,13 @@ VOID
LbrInitialize();
BOOLEAN
-LbrStartLbr(LBR_IOCTL_REQUEST * Request);
+LbrStartLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode);
BOOLEAN
-LbrStopLbr(LBR_IOCTL_REQUEST * Request);
+LbrStopLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode);
BOOLEAN
-LbrDumpLbr(LBR_IOCTL_REQUEST * Request);
+LbrDumpLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode);
extern ULONGLONG LbrCapacity;
extern LIST_ENTRY LbrStateHead;
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 17456522..660bb88d 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -44,7 +44,7 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * LbrOperationRequest,
//////////////////////////////////////////////////
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceStartLbr();
+HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceStopLbr();
+HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode);
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index 578c8cd0..046ab531 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -2027,7 +2027,7 @@ ScriptEngineFunctionLbrStart()
#ifdef SCRIPT_ENGINE_KERNEL_MODE
- HyperTraceStartLbr();
+ HyperTraceStartLbr(VmFuncVmxGetCurrentExecutionMode());
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
@@ -2045,6 +2045,6 @@ ScriptEngineFunctionLbrStop()
#endif // SCRIPT_ENGINE_USER_MODE
#ifdef SCRIPT_ENGINE_KERNEL_MODE
- HyperTraceStopLbr();
+ HyperTraceStopLbr(VmFuncVmxGetCurrentExecutionMode());
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
From 15f8b3cca15448acd18d7e198740464a19ce4fe2 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 6 Apr 2026 20:17:40 +0200
Subject: [PATCH 111/323] apply vmx-root LBR to VMCS
---
hyperdbg/hypertrace/code/Lbr.c | 65 ++++++++++++++++++--------
hyperdbg/hypertrace/header/pch.h | 5 ++
hyperdbg/hypertrace/hypertrace.vcxproj | 4 +-
3 files changed, 52 insertions(+), 22 deletions(-)
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index 30232371..d55b07d4 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -105,15 +105,22 @@ LbrInitialize()
VOID
LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode)
{
- UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
-
ULONG i;
ULONGLONG DbgCtlMsr;
KIRQL OldIrql;
- xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
- DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
- xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+ if (ApplyFromVmxRootMode)
+ {
+ __vmx_vmread(VMCS_GUEST_DEBUGCTL, &DbgCtlMsr);
+ DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
+ __vmx_vmwrite(VMCS_GUEST_DEBUGCTL, DbgCtlMsr);
+ }
+ else
+ {
+ xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
+ DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
+ xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+ }
xacquire_lock(&LbrStateLock, &OldIrql);
xrdmsr(MSR_LBR_SELECT, &State->Config.LbrSelect);
@@ -138,8 +145,6 @@ LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode)
VOID
LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode)
{
- UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
-
ULONGLONG DbgCtlMsr;
KIRQL OldIrql;
@@ -158,12 +163,24 @@ LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode)
xrelease_lock(&LbrStateLock, &OldIrql);
- // Enable LBR and CLEAR 'Freeze LBRs on PMI' (Bit 11)
- // If Bit 11 is set, the LBR stops as soon as a single interrupt happens.
- xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
- DbgCtlMsr |= DEBUGCTLMSR_LBR; // Bit 0 = 1
- DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
- xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+ if (ApplyFromVmxRootMode)
+ {
+ __vmx_vmread(VMCS_GUEST_DEBUGCTL, &DbgCtlMsr);
+ DbgCtlMsr |= DEBUGCTLMSR_LBR; // Bit 0 = 1
+ DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
+ __vmx_vmwrite(VMCS_GUEST_DEBUGCTL, DbgCtlMsr);
+ }
+ else
+ {
+ //
+ // Enable LBR and CLEAR 'Freeze LBRs on PMI' (Bit 11)
+ // If Bit 11 is set, the LBR stops as soon as a single interrupt happens
+ //
+ xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
+ DbgCtlMsr |= DEBUGCTLMSR_LBR; // Bit 0 = 1
+ DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
+ xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+ }
}
/**
@@ -547,11 +564,14 @@ LbrIoctlHandler(XIOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
*
* @param PrevPid
* @param NextPid
+ * @param ApplyFromVmxRootMode
+ *
* @return VOID
*/
VOID
-LbrCswitchHandler(ULONG PrevPid,
- ULONG NextPid)
+LbrCswitchHandler(ULONG PrevPid,
+ ULONG NextPid,
+ BOOLEAN ApplyFromVmxRootMode)
{
LBR_STATE * PrevState;
LBR_STATE * NextState;
@@ -564,7 +584,7 @@ LbrCswitchHandler(ULONG PrevPid,
LogInfo("LIBIHT-COM: LBR context switch from pid %d on cpu core %d\n",
PrevState->Config.Pid,
xcoreid());
- LbrGetLbr(PrevState, FALSE); // Assume this is called from non-VMX root
+ LbrGetLbr(PrevState, ApplyFromVmxRootMode);
}
if (NextState)
@@ -572,7 +592,7 @@ LbrCswitchHandler(ULONG PrevPid,
LogInfo("LIBIHT-COM: LBR context switch to pid %d on cpu core %d\n",
NextState->Config.Pid,
xcoreid());
- LbrPutLbr(NextState, FALSE); // Assume this is called from non-VMX root
+ LbrPutLbr(NextState, ApplyFromVmxRootMode);
}
}
@@ -581,12 +601,15 @@ LbrCswitchHandler(ULONG PrevPid,
*
* @param ParentPid
* @param ChildPid
+ * @param ApplyFromVmxRootMode
+ *
* @return VOID
*/
VOID
LbrNewProcHandler(
- ULONG ParentPid,
- ULONG ChildPid)
+ ULONG ParentPid,
+ ULONG ChildPid,
+ BOOLEAN ApplyFromVmxRootMode)
{
LBR_STATE *ParentState, *ChildState;
KIRQL OldIrql;
@@ -615,7 +638,9 @@ LbrNewProcHandler(
LbrInsertLbrState(ChildState);
if (ChildPid == xgetcurrent_pid())
- LbrPutLbr(ChildState, FALSE); // Assume this is called from non-VMX root
+ {
+ LbrPutLbr(ChildState, ApplyFromVmxRootMode);
+ }
}
/**
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 440b9c8a..a781652f 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -37,6 +37,11 @@
#define HYPERDBG_KERNEL_MODE
#define HYPERDBG_HYPERTRACE
+//
+// Add ia32-doc
+//
+#include "ia32-doc/out/ia32.h"
+
//
// Unload function (to be called when the driver is unloaded)
//
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index e83d514f..38037823 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -64,7 +64,7 @@
sha256
- $(SolutionDir)\include;$(ProjectDir)header;%(AdditionalIncludeDirectories)
+ $(SolutionDir)\include;$(ProjectDir)header;$(SolutionDir)dependencies;%(AdditionalIncludeDirectories)
true
Create
pch.h
@@ -82,7 +82,7 @@
sha256
- $(SolutionDir)\include;$(ProjectDir)header;%(AdditionalIncludeDirectories)
+ $(SolutionDir)\include;$(ProjectDir)header;$(SolutionDir)dependencies;%(AdditionalIncludeDirectories)
true
Create
pch.h
From 13a2bc63686b15f0b8f9f3c9087fe8232df6b883 Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 9 Apr 2026 17:17:49 +0200
Subject: [PATCH 112/323] Update CHANGLELOG.md
---
CHANGELOG.md | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 053f22b9..9420f1da 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,15 +4,18 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## [0.19.0.0] - 2026-XX-XX
+## [0.18.1.0] - 2026-04-09
New release of the HyperDbg Debugger.
### Added
- Hypertrace now works with HyperDbg VMM ([link](https://github.com/HyperDbg/HyperDbg/pull/568))
+- Progress on implementing Last Branch Recode (LBR) ([link](https://github.com/HyperDbg/HyperDbg/commit/1dd73675e9cd78737e013ffb35bc712f385f387e))
+- Applying LBR registers on the VMCS instead of the DEBUGCTL MSR ([link](https://github.com/HyperDbg/HyperDbg/commit/15f8b3cca15448acd18d7e198740464a19ce4fe2))
+- Fix the problem of the '!epthook' not finding the PML1 entry
### Changed
- Fix the problem of getting the PML1 entry of the target address on Intel Core Ultra processors (#567) ([link](https://github.com/HyperDbg/HyperDbg/issues/567))
-- Fix .clang-format formating error
+- Fix the '.clang-format' formatting error
## [0.18.0.0] - 2026-02-16
New release of the HyperDbg Debugger.
From 65c1a6aef97641ca53b1a621fadde366bd8d1111 Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 9 Apr 2026 17:32:30 +0200
Subject: [PATCH 113/323] v0.18.1 (release)
---
CHANGELOG.md | 2 +-
hyperdbg/include/SDK/headers/Constants.h | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9420f1da..edcf37e2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,9 +11,9 @@ New release of the HyperDbg Debugger.
- Hypertrace now works with HyperDbg VMM ([link](https://github.com/HyperDbg/HyperDbg/pull/568))
- Progress on implementing Last Branch Recode (LBR) ([link](https://github.com/HyperDbg/HyperDbg/commit/1dd73675e9cd78737e013ffb35bc712f385f387e))
- Applying LBR registers on the VMCS instead of the DEBUGCTL MSR ([link](https://github.com/HyperDbg/HyperDbg/commit/15f8b3cca15448acd18d7e198740464a19ce4fe2))
-- Fix the problem of the '!epthook' not finding the PML1 entry
### Changed
+- Fix the problem of the '!epthook' not finding the PML1 entry ([link](https://docs.hyperdbg.org/commands/extension-commands/epthook))
- Fix the problem of getting the PML1 entry of the target address on Intel Core Ultra processors (#567) ([link](https://github.com/HyperDbg/HyperDbg/issues/567))
- Fix the '.clang-format' formatting error
diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h
index 734d4a9a..075848f9 100644
--- a/hyperdbg/include/SDK/headers/Constants.h
+++ b/hyperdbg/include/SDK/headers/Constants.h
@@ -17,8 +17,8 @@
//////////////////////////////////////////////////
#define VERSION_MAJOR 0
-#define VERSION_MINOR 19
-#define VERSION_PATCH 0
+#define VERSION_MINOR 18
+#define VERSION_PATCH 1
//
// Example of __DATE__ string: "Jul 27 2012"
From a1d30abdf20d6c5aeae72f504983a991462e2bcb Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 14 Apr 2026 17:53:54 +0200
Subject: [PATCH 114/323] remove VMX instructions from hypertrace in favor of
linking to hyperhv callbacks
---
hyperdbg/hyperhv/code/interface/Export.c | 23 +++++++++++++++++++
hyperdbg/hyperkd/code/driver/Loader.c | 6 +++++
hyperdbg/hypertrace/code/Lbr.c | 12 ++++++----
hyperdbg/hypertrace/code/Tracing.c | 14 +++++------
.../SDK/imports/kernel/HyperDbgVmmImports.h | 6 +++++
hyperdbg/include/SDK/modules/HyperTrace.h | 17 ++++++++++++++
6 files changed, 67 insertions(+), 11 deletions(-)
diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c
index a7d17c5f..742c39de 100644
--- a/hyperdbg/hyperhv/code/interface/Export.c
+++ b/hyperdbg/hyperhv/code/interface/Export.c
@@ -389,6 +389,29 @@ VmFuncSetRip(UINT64 Rip)
HvSetRip(Rip);
}
+/**
+ * @brief Get the guest state of IA32_DEBUGCTL
+ *
+ * @return UINT64
+ */
+UINT64
+VmFuncGetDebugctl()
+{
+ return HvGetDebugctl();
+}
+
+/**
+ * @brief Set the guest state of IA32_DEBUGCTL
+ * @param Value
+ *
+ * @return VOID
+ */
+VOID
+VmFuncSetDebugctl(UINT64 Value)
+{
+ HvSetDebugctl(Value);
+}
+
/**
* @brief Read guest's interruptibility state
*
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index 07dc098b..de932abb 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -33,6 +33,12 @@ LoaderInitHyperTrace()
HyperTraceCallbacks.LogCallbackSendBuffer = LogCallbackSendBuffer;
HyperTraceCallbacks.LogCallbackCheckIfBufferIsFull = LogCallbackCheckIfBufferIsFull;
+ //
+ // Fill the callbacks for using hyperhv in hypertrace
+ //
+ HyperTraceCallbacks.VmFuncGetDebugctl = VmFuncGetDebugctl;
+ HyperTraceCallbacks.VmFuncSetDebugctl = VmFuncSetDebugctl;
+
//
// Memory callbacks
//
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index d55b07d4..5ec7fc9b 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -111,9 +111,11 @@ LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode)
if (ApplyFromVmxRootMode)
{
- __vmx_vmread(VMCS_GUEST_DEBUGCTL, &DbgCtlMsr);
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+
DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
- __vmx_vmwrite(VMCS_GUEST_DEBUGCTL, DbgCtlMsr);
+
+ g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
}
else
{
@@ -165,10 +167,12 @@ LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode)
if (ApplyFromVmxRootMode)
{
- __vmx_vmread(VMCS_GUEST_DEBUGCTL, &DbgCtlMsr);
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+
DbgCtlMsr |= DEBUGCTLMSR_LBR; // Bit 0 = 1
DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
- __vmx_vmwrite(VMCS_GUEST_DEBUGCTL, DbgCtlMsr);
+
+ g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
}
else
{
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index b1ab5a7e..679fbd38 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -25,12 +25,12 @@ BOOLEAN g_LastBranchRecordEnabled = FALSE;
/**
* @brief Hide debugger on transparent-mode (activate transparent-mode)
*
- * @param HypertraceCallbacks
+ * @param ApplyFromVmxRootMode
*
* @return BOOLEAN
*/
VOID
-PerformLbrTraceAfterEnable()
+HyperTraceExamplePerformLbrTraceAfterEnable(BOOLEAN ApplyFromVmxRootMode)
{
LBR_IOCTL_REQUEST Request = {0};
@@ -47,7 +47,7 @@ PerformLbrTraceAfterEnable()
Request.LbrConfig.Pid = 0;
Request.LbrConfig.LbrSelect = LBR_SELECT;
- if (LbrStartLbr(&Request, FALSE)) // Assume this is called from non-VMX root
+ if (LbrStartLbr(&Request, ApplyFromVmxRootMode))
{
for (volatile int i = 0; i < 50; i++)
{
@@ -67,14 +67,13 @@ PerformLbrTraceAfterEnable()
if (State)
{
- LbrGetLbr(State, FALSE); // Assume this is called from non-VMX root
+ LbrGetLbr(State, ApplyFromVmxRootMode);
}
LogInfo("Dumping LBR Buffer...\n");
- LbrDumpLbr(&Request, FALSE); // Assume this is called from non-VMX root
-
- LbrStopLbr(&Request, FALSE); // Assume this is called from non-VMX root
+ LbrDumpLbr(&Request, ApplyFromVmxRootMode);
+ LbrStopLbr(&Request, ApplyFromVmxRootMode);
}
KeRevertToUserAffinityThread();
@@ -248,6 +247,7 @@ HyperTraceDisableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRe
return FALSE;
}
+
//
// Disabling LBR
//
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
index a738cb7c..65818476 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
@@ -101,6 +101,9 @@ VmFuncSetRflags(UINT64 Rflags);
IMPORT_EXPORT_VMM VOID
VmFuncSetRip(UINT64 Rip);
+IMPORT_EXPORT_VMM VOID
+VmFuncSetDebugctl(UINT64 Value);
+
IMPORT_EXPORT_VMM VOID
VmFuncSetTriggerEventForVmcalls(BOOLEAN Set);
@@ -181,6 +184,9 @@ VmFuncGetRflags();
IMPORT_EXPORT_VMM UINT64
VmFuncGetRip();
+IMPORT_EXPORT_VMM UINT64
+VmFuncGetDebugctl();
+
IMPORT_EXPORT_VMM UINT64
VmFuncGetInterruptibilityState();
diff --git a/hyperdbg/include/SDK/modules/HyperTrace.h b/hyperdbg/include/SDK/modules/HyperTrace.h
index 0efc8c10..fd75cc3d 100644
--- a/hyperdbg/include/SDK/modules/HyperTrace.h
+++ b/hyperdbg/include/SDK/modules/HyperTrace.h
@@ -48,6 +48,17 @@ typedef BOOLEAN (*LOG_CALLBACK_SEND_BUFFER)(_In_ UINT32
*/
typedef BOOLEAN (*LOG_CALLBACK_CHECK_IF_BUFFER_IS_FULL)(BOOLEAN Priority);
+/**
+ * @brief A function that sets the guest state of IA32_DEBUGCTL
+ */
+typedef UINT64 (*VM_FUNC_GET_DEBUGCTL)();
+
+/**
+ * @brief A function that gets the guest state of IA32_DEBUGCTL
+ *
+ */
+typedef VOID (*VM_FUNC_SET_DEBUGCTL)(UINT64 Value);
+
/**
* @brief A function that checks the validity and safety of the target address
*
@@ -90,6 +101,12 @@ typedef struct _HYPERTRACE_CALLBACKS
LOG_CALLBACK_SEND_BUFFER LogCallbackSendBuffer;
LOG_CALLBACK_CHECK_IF_BUFFER_IS_FULL LogCallbackCheckIfBufferIsFull;
+ //
+ // *** Hypervisor (Hyperhv) callbacks ***
+ //
+ VM_FUNC_GET_DEBUGCTL VmFuncGetDebugctl;
+ VM_FUNC_SET_DEBUGCTL VmFuncSetDebugctl;
+
//
// *** HYPERTRACE callbacks ***
//
From 1b08f14add23210b432110a8fad09c8d6589c151 Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 14 Apr 2026 19:23:51 +0200
Subject: [PATCH 115/323] add cross VMCALLs for setting core-specific LBR state
---
hyperdbg/hyperhv/code/interface/Export.c | 25 ++++++++++++
hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c | 39 +++++++++++++++++++
hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 22 +++++++++++
hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c | 27 +++++++++++++
.../hyperhv/header/vmm/vmx/CrossVmcalls.h | 22 +++++++++++
hyperdbg/hyperhv/header/vmm/vmx/Hv.h | 5 ++-
hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h | 12 ++++++
hyperdbg/hyperhv/hyperhv.vcxproj | 2 +
hyperdbg/hyperhv/hyperhv.vcxproj.filters | 6 +++
hyperdbg/hyperhv/pch.h | 1 +
hyperdbg/hyperkd/code/driver/Loader.c | 6 ++-
.../SDK/imports/kernel/HyperDbgVmmImports.h | 6 +++
hyperdbg/include/SDK/modules/HyperTrace.h | 17 +++++++-
13 files changed, 185 insertions(+), 5 deletions(-)
create mode 100644 hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
create mode 100644 hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h
diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c
index 742c39de..78b6b069 100644
--- a/hyperdbg/hyperhv/code/interface/Export.c
+++ b/hyperdbg/hyperhv/code/interface/Export.c
@@ -400,6 +400,18 @@ VmFuncGetDebugctl()
return HvGetDebugctl();
}
+/**
+ * @brief Get the guest state of IA32_DEBUGCTL on the target core from VMCS
+ * using VMCALL
+ *
+ * @return UINT64
+ */
+UINT64
+VmFuncGetDebugctlVmcallOnTargetCore()
+{
+ return CrossVmcallGetDebugctlVmcallOnTargetCore();
+}
+
/**
* @brief Set the guest state of IA32_DEBUGCTL
* @param Value
@@ -412,6 +424,19 @@ VmFuncSetDebugctl(UINT64 Value)
HvSetDebugctl(Value);
}
+/**
+ * @brief Set the guest state of IA32_DEBUGCTL on the target core from VMCS
+ * using VMCALL
+ * @param Value
+ *
+ * @return VOID
+ */
+VOID
+VmFuncSetDebugctlVmcallOnTargetCore(UINT64 Value)
+{
+ CrossVmcallSetDebugctlVmcallOnTargetCore(Value);
+}
+
/**
* @brief Read guest's interruptibility state
*
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c b/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
new file mode 100644
index 00000000..e74b22d6
--- /dev/null
+++ b/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
@@ -0,0 +1,39 @@
+/**
+ * @file CrossVmcalls.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Routines relating to cross (standalone) VMCALLs
+ * @details
+ * @version 0.19
+ * @date 2026-04-14
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+/**
+ * @brief Get the guest state of IA32_DEBUGCTL on the target core from VMCS
+ * using VMCALL
+ *
+ * @return UINT64
+ */
+UINT64
+CrossVmcallGetDebugctlVmcallOnTargetCore()
+{
+ UINT64 DebugctlValue;
+ AsmVmxVmcall(VMCALL_GET_VMCS_DEBUGCTL, (UINT64)&DebugctlValue, NULL64_ZERO, NULL64_ZERO);
+ return DebugctlValue;
+}
+
+/**
+ * @brief Set the guest state of IA32_DEBUGCTL on the target core from VMCS
+ * using VMCALL
+ * @param Value
+ *
+ * @return VOID
+ */
+VOID
+CrossVmcallSetDebugctlVmcallOnTargetCore(UINT64 Value)
+{
+ AsmVmxVmcall(VMCALL_SET_VMCS_DEBUGCTL, Value, NULL64_ZERO, NULL64_ZERO);
+}
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
index bf9b4971..79173378 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
@@ -1503,6 +1503,28 @@ HvGetDebugctl()
return (UINT64)HighPart << 32 | LowPart;
}
+/**
+ * @brief Get and store the guest state of IA32_DEBUGCTL
+ * @details mainly used from the VMCALL handler
+ *
+ * @return VOID
+ */
+VOID
+HvGetAndStoreDebugctl(UINT64 * StoreDebugctl)
+{
+ UINT64 DebugctlValue;
+
+ //
+ // Read DEBUGCTL from VMCS
+ //
+ DebugctlValue = HvGetDebugctl();
+
+ //
+ // Store the DEBUGCTL
+ //
+ *StoreDebugctl = DebugctlValue;
+}
+
/**
* @brief Set the guest state of IA32_DEBUGCTL
* @param Value The new state
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
index 267d305e..6b3d055b 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
@@ -534,6 +534,33 @@ VmxVmcallHandler(VIRTUAL_MACHINE_STATE * VCpu,
break;
}
+ case VMCALL_GET_VMCS_DEBUGCTL:
+ {
+ //
+ // Perform getting DEBUGCTL from VMCS
+ //
+ if (HvGetDebugctl((UINT64)OptionalParam1, (UINT64)OptionalParam2, (SIZE_T)OptionalParam3))
+ {
+ VmcallStatus = STATUS_SUCCESS;
+ }
+ else
+ {
+ VmcallStatus = STATUS_UNSUCCESSFUL;
+ }
+
+ break;
+ }
+ case VMCALL_SET_VMCS_DEBUGCTL:
+ {
+ //
+ // Perform setting DEBUGCTL from VMCS
+ //
+ HvGetAndStoreDebugctl((UINT64 *)OptionalParam1);
+
+ VmcallStatus = STATUS_SUCCESS;
+
+ break;
+ }
default:
{
LogError("Err, unsupported VMCALL");
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h b/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h
new file mode 100644
index 00000000..94a0b2b8
--- /dev/null
+++ b/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h
@@ -0,0 +1,22 @@
+/**
+ * @file CrossVmcalls.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Headers relating to cross (standalone) VMCALLs
+ * @details
+ * @version 0.19
+ * @date 2026-04-14
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+UINT64
+CrossVmcallGetDebugctlVmcallOnTargetCore();
+
+VOID
+CrossVmcallSetDebugctlVmcallOnTargetCore(UINT64 Value);
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
index 6f11105d..d74ed44f 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
@@ -456,6 +456,9 @@ HvSetPendingDebugExceptions(UINT64 Value);
UINT64
HvGetDebugctl();
+VOID
+HvGetAndStoreDebugctl(UINT64 * StoreDebugctl);
+
/**
* @brief Set the guest state of IA32_DEBUGCTL
* @param Value The new state
@@ -473,4 +476,4 @@ HvSetDebugctl(UINT64 Value);
* @return VOID
*/
VOID
-HvHandleTrapFlag();
\ No newline at end of file
+HvHandleTrapFlag();
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h b/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
index d96e0ac7..b7ce32c9 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
@@ -321,6 +321,18 @@
*/
#define VMCALL_WRITE_PHYSICAL_MEMORY 0x00000031
+/**
+ * @brief VMCALL to get IA32_DEBUGCTL on VMCS
+ *
+ */
+#define VMCALL_GET_VMCS_DEBUGCTL 0x00000032
+
+/**
+ * @brief VMCALL to set IA32_DEBUGCTL on VMCS
+ *
+ */
+#define VMCALL_SET_VMCS_DEBUGCTL 0x00000033
+
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj b/hyperdbg/hyperhv/hyperhv.vcxproj
index 2514ef15..6cea3038 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj
@@ -172,6 +172,7 @@
+
@@ -277,6 +278,7 @@
+
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj.filters b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
index 2f9631b6..1344a050 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj.filters
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
@@ -326,6 +326,9 @@
code\processor
+
+ code\vmm\vmx
+
@@ -604,6 +607,9 @@
header\processor
+
+ header\vmm\vmx
+
diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h
index efa9ebaf..04f45fca 100644
--- a/hyperdbg/hyperhv/pch.h
+++ b/hyperdbg/hyperhv/pch.h
@@ -115,6 +115,7 @@
#include "vmm/ept/Invept.h"
#include "vmm/vmx/Vmcall.h"
#include "interface/DirectVmcall.h"
+#include "vmm/vmx/CrossVmcalls.h"
#include "vmm/vmx/Hv.h"
#include "vmm/vmx/MsrHandlers.h"
#include "vmm/vmx/ProtectedHv.h"
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index de932abb..c3678e07 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -36,8 +36,10 @@ LoaderInitHyperTrace()
//
// Fill the callbacks for using hyperhv in hypertrace
//
- HyperTraceCallbacks.VmFuncGetDebugctl = VmFuncGetDebugctl;
- HyperTraceCallbacks.VmFuncSetDebugctl = VmFuncSetDebugctl;
+ HyperTraceCallbacks.VmFuncGetDebugctl = VmFuncGetDebugctl;
+ HyperTraceCallbacks.VmFuncGetDebugctlVmcallOnTargetCore = VmFuncGetDebugctlVmcallOnTargetCore;
+ HyperTraceCallbacks.VmFuncSetDebugctl = VmFuncSetDebugctl;
+ HyperTraceCallbacks.VmFuncSetDebugctlVmcallOnTargetCore = VmFuncSetDebugctlVmcallOnTargetCore;
//
// Memory callbacks
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
index 65818476..f63c4993 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
@@ -104,6 +104,9 @@ VmFuncSetRip(UINT64 Rip);
IMPORT_EXPORT_VMM VOID
VmFuncSetDebugctl(UINT64 Value);
+IMPORT_EXPORT_VMM VOID
+VmFuncSetDebugctlVmcallOnTargetCore(UINT64 Value);
+
IMPORT_EXPORT_VMM VOID
VmFuncSetTriggerEventForVmcalls(BOOLEAN Set);
@@ -187,6 +190,9 @@ VmFuncGetRip();
IMPORT_EXPORT_VMM UINT64
VmFuncGetDebugctl();
+IMPORT_EXPORT_VMM UINT64
+VmFuncGetDebugctlVmcallOnTargetCore();
+
IMPORT_EXPORT_VMM UINT64
VmFuncGetInterruptibilityState();
diff --git a/hyperdbg/include/SDK/modules/HyperTrace.h b/hyperdbg/include/SDK/modules/HyperTrace.h
index fd75cc3d..f65782f3 100644
--- a/hyperdbg/include/SDK/modules/HyperTrace.h
+++ b/hyperdbg/include/SDK/modules/HyperTrace.h
@@ -53,12 +53,23 @@ typedef BOOLEAN (*LOG_CALLBACK_CHECK_IF_BUFFER_IS_FULL)(BOOLEAN Priority);
*/
typedef UINT64 (*VM_FUNC_GET_DEBUGCTL)();
+/**
+ * @brief A function that sets the guest state of IA32_DEBUGCTL on the target core using VMCALL
+ */
+typedef UINT64 (*VM_FUNC_GET_DEBUGCTL_VMCALL_ON_TARGET_CORE)();
+
/**
* @brief A function that gets the guest state of IA32_DEBUGCTL
*
*/
typedef VOID (*VM_FUNC_SET_DEBUGCTL)(UINT64 Value);
+/**
+ * @brief A function that gets the guest state of IA32_DEBUGCTL on the target core using VMCALL
+ *
+ */
+typedef VOID (*VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE)(UINT64 Value);
+
/**
* @brief A function that checks the validity and safety of the target address
*
@@ -104,8 +115,10 @@ typedef struct _HYPERTRACE_CALLBACKS
//
// *** Hypervisor (Hyperhv) callbacks ***
//
- VM_FUNC_GET_DEBUGCTL VmFuncGetDebugctl;
- VM_FUNC_SET_DEBUGCTL VmFuncSetDebugctl;
+ VM_FUNC_GET_DEBUGCTL VmFuncGetDebugctl;
+ VM_FUNC_GET_DEBUGCTL_VMCALL_ON_TARGET_CORE VmFuncGetDebugctlVmcallOnTargetCore;
+ VM_FUNC_SET_DEBUGCTL VmFuncSetDebugctl;
+ VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE VmFuncSetDebugctlVmcallOnTargetCore;
//
// *** HYPERTRACE callbacks ***
From f36273aba78ae9697f23b011d1ef11ed28c7b651 Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 14 Apr 2026 19:44:41 +0200
Subject: [PATCH 116/323] add VMCALL option to LBR tracing
---
hyperdbg/hypertrace/code/Lbr.c | 88 ++++++++++++++-----
hyperdbg/hypertrace/code/Tracing.c | 27 +++---
hyperdbg/hypertrace/header/Lbr.h | 10 +--
hyperdbg/include/SDK/headers/Constants.h | 4 +-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 4 +-
hyperdbg/script-eval/code/Functions.c | 12 ++-
6 files changed, 98 insertions(+), 47 deletions(-)
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index 5ec7fc9b..e8594d0c 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -99,11 +99,12 @@ LbrInitialize()
*
* @param State
* @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
*
* @return VOID
*/
VOID
-LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode)
+LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
ULONG i;
ULONGLONG DbgCtlMsr;
@@ -111,11 +112,25 @@ LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode)
if (ApplyFromVmxRootMode)
{
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+ if (ApplyByVmcall)
+ {
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
+ }
+ else
+ {
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+ }
DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
- g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
+ if (ApplyByVmcall)
+ {
+ g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
+ }
+ else
+ {
+ g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
+ }
}
else
{
@@ -141,11 +156,12 @@ LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode)
*
* @param State
* @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
*
* @return VOID
*/
VOID
-LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode)
+LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
ULONGLONG DbgCtlMsr;
KIRQL OldIrql;
@@ -167,12 +183,26 @@ LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode)
if (ApplyFromVmxRootMode)
{
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+ if (ApplyByVmcall)
+ {
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
+ }
+ else
+ {
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+ }
DbgCtlMsr |= DEBUGCTLMSR_LBR; // Bit 0 = 1
DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
- g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
+ if (ApplyByVmcall)
+ {
+ g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
+ }
+ else
+ {
+ g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
+ }
}
else
{
@@ -229,11 +259,12 @@ LbrFlushLbr()
*
* @param Request
* @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
*
* @return BOOLEAN
*/
BOOLEAN
-LbrStartLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
+LbrStartLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
LBR_STATE * State;
@@ -271,7 +302,7 @@ LbrStartLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
//
if (State->Config.Pid == xgetcurrent_pid())
{
- LbrPutLbr(State, ApplyFromVmxRootMode);
+ LbrPutLbr(State, ApplyFromVmxRootMode, ApplyByVmcall);
}
return TRUE;
@@ -282,11 +313,12 @@ LbrStartLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
*
* @param Request
* @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
*
* @return BOOLEAN
*/
BOOLEAN
-LbrStopLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
+LbrStopLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
LBR_STATE * State;
@@ -300,7 +332,7 @@ LbrStopLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
if (State->Config.Pid == xgetcurrent_pid())
{
- LbrGetLbr(State, ApplyFromVmxRootMode);
+ LbrGetLbr(State, ApplyFromVmxRootMode, ApplyByVmcall);
}
LbrRemoveLbrState(State);
@@ -313,14 +345,16 @@ LbrStopLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
*
* @param Request
* @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
*
* @return BOOLEAN
*/
BOOLEAN
-LbrDumpLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
+LbrDumpLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+ UNREFERENCED_PARAMETER(ApplyByVmcall);
LBR_STATE * State = LbrFindLbrState(Request->LbrConfig.Pid);
if (State == NULL)
@@ -350,11 +384,12 @@ LbrDumpLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
*
* @param Request
* @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
*
* @return BOOLEAN
*/
BOOLEAN
-LbrConfigLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
+LbrConfigLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
LBR_STATE * State;
@@ -369,9 +404,9 @@ LbrConfigLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
if (State->Config.Pid == xgetcurrent_pid())
{
- LbrGetLbr(State, ApplyFromVmxRootMode);
+ LbrGetLbr(State, ApplyFromVmxRootMode, ApplyByVmcall);
State->Config.LbrSelect = Request->LbrConfig.LbrSelect;
- LbrPutLbr(State, ApplyFromVmxRootMode);
+ LbrPutLbr(State, ApplyFromVmxRootMode, ApplyByVmcall);
}
else
{
@@ -531,11 +566,12 @@ LbrFreeLbrStatList()
*
* @param Request
* @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
*
* @return BOOLEAN
*/
BOOLEAN
-LbrIoctlHandler(XIOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
+LbrIoctlHandler(XIOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
BOOLEAN Status = TRUE;
@@ -543,16 +579,16 @@ LbrIoctlHandler(XIOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
switch (Request->Cmd)
{
case LIBIHT_IOCTL_ENABLE_LBR:
- Status = LbrStartLbr(&Request->Body.Lbr, ApplyFromVmxRootMode);
+ Status = LbrStartLbr(&Request->Body.Lbr, ApplyFromVmxRootMode, ApplyByVmcall);
break;
case LIBIHT_IOCTL_DISABLE_LBR:
- Status = LbrStopLbr(&Request->Body.Lbr, ApplyFromVmxRootMode);
+ Status = LbrStopLbr(&Request->Body.Lbr, ApplyFromVmxRootMode, ApplyByVmcall);
break;
case LIBIHT_IOCTL_DUMP_LBR:
- Status = LbrDumpLbr(&Request->Body.Lbr, ApplyFromVmxRootMode);
+ Status = LbrDumpLbr(&Request->Body.Lbr, ApplyFromVmxRootMode, ApplyByVmcall);
break;
case LIBIHT_IOCTL_CONFIG_LBR:
- Status = LbrConfigLbr(&Request->Body.Lbr, ApplyFromVmxRootMode);
+ Status = LbrConfigLbr(&Request->Body.Lbr, ApplyFromVmxRootMode, ApplyByVmcall);
break;
default:
LogInfo("LIBIHT-COM: Invalid LBR ioctl command\n");
@@ -569,13 +605,15 @@ LbrIoctlHandler(XIOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode)
* @param PrevPid
* @param NextPid
* @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
*
* @return VOID
*/
VOID
LbrCswitchHandler(ULONG PrevPid,
ULONG NextPid,
- BOOLEAN ApplyFromVmxRootMode)
+ BOOLEAN ApplyFromVmxRootMode,
+ BOOLEAN ApplyByVmcall)
{
LBR_STATE * PrevState;
LBR_STATE * NextState;
@@ -588,7 +626,7 @@ LbrCswitchHandler(ULONG PrevPid,
LogInfo("LIBIHT-COM: LBR context switch from pid %d on cpu core %d\n",
PrevState->Config.Pid,
xcoreid());
- LbrGetLbr(PrevState, ApplyFromVmxRootMode);
+ LbrGetLbr(PrevState, ApplyFromVmxRootMode, ApplyByVmcall);
}
if (NextState)
@@ -596,7 +634,7 @@ LbrCswitchHandler(ULONG PrevPid,
LogInfo("LIBIHT-COM: LBR context switch to pid %d on cpu core %d\n",
NextState->Config.Pid,
xcoreid());
- LbrPutLbr(NextState, ApplyFromVmxRootMode);
+ LbrPutLbr(NextState, ApplyFromVmxRootMode, ApplyByVmcall);
}
}
@@ -606,6 +644,7 @@ LbrCswitchHandler(ULONG PrevPid,
* @param ParentPid
* @param ChildPid
* @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
*
* @return VOID
*/
@@ -613,7 +652,8 @@ VOID
LbrNewProcHandler(
ULONG ParentPid,
ULONG ChildPid,
- BOOLEAN ApplyFromVmxRootMode)
+ BOOLEAN ApplyFromVmxRootMode,
+ BOOLEAN ApplyByVmcall)
{
LBR_STATE *ParentState, *ChildState;
KIRQL OldIrql;
@@ -643,7 +683,7 @@ LbrNewProcHandler(
if (ChildPid == xgetcurrent_pid())
{
- LbrPutLbr(ChildState, ApplyFromVmxRootMode);
+ LbrPutLbr(ChildState, ApplyFromVmxRootMode, ApplyByVmcall);
}
}
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 679fbd38..c1a67dd3 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -23,14 +23,15 @@ BOOLEAN g_HyperTraceCallbacksInitialized = FALSE;
BOOLEAN g_LastBranchRecordEnabled = FALSE;
/**
- * @brief Hide debugger on transparent-mode (activate transparent-mode)
+ * @brief Example of performing LBR trace
*
* @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
*
* @return BOOLEAN
*/
VOID
-HyperTraceExamplePerformLbrTraceAfterEnable(BOOLEAN ApplyFromVmxRootMode)
+HyperTraceExamplePerformLbrTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
LBR_IOCTL_REQUEST Request = {0};
@@ -47,7 +48,7 @@ HyperTraceExamplePerformLbrTraceAfterEnable(BOOLEAN ApplyFromVmxRootMode)
Request.LbrConfig.Pid = 0;
Request.LbrConfig.LbrSelect = LBR_SELECT;
- if (LbrStartLbr(&Request, ApplyFromVmxRootMode))
+ if (LbrStartLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall))
{
for (volatile int i = 0; i < 50; i++)
{
@@ -67,13 +68,13 @@ HyperTraceExamplePerformLbrTraceAfterEnable(BOOLEAN ApplyFromVmxRootMode)
if (State)
{
- LbrGetLbr(State, ApplyFromVmxRootMode);
+ LbrGetLbr(State, ApplyFromVmxRootMode, ApplyByVmcall);
}
LogInfo("Dumping LBR Buffer...\n");
- LbrDumpLbr(&Request, ApplyFromVmxRootMode);
- LbrStopLbr(&Request, ApplyFromVmxRootMode);
+ LbrDumpLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
+ LbrStopLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
}
KeRevertToUserAffinityThread();
@@ -82,28 +83,30 @@ HyperTraceExamplePerformLbrTraceAfterEnable(BOOLEAN ApplyFromVmxRootMode)
/**
* @brief Start LBR tracing for HyperTrace
* @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode)
+HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
LBR_IOCTL_REQUEST Request = {0};
Request.LbrConfig.Pid = 0;
Request.LbrConfig.LbrSelect = LBR_SELECT;
- return LbrStartLbr(&Request, ApplyFromVmxRootMode);
+ return LbrStartLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
}
/**
* @brief Stop LBR tracing for HyperTrace
* @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode)
+HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
LBR_IOCTL_REQUEST Request = {0};
@@ -114,13 +117,13 @@ HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode)
if (State)
{
- LbrGetLbr(State, ApplyFromVmxRootMode);
+ LbrGetLbr(State, ApplyFromVmxRootMode, ApplyByVmcall);
}
LogInfo("Dumping LBR Buffer...\n");
- LbrDumpLbr(&Request, ApplyFromVmxRootMode);
+ LbrDumpLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
- return LbrStopLbr(&Request, ApplyFromVmxRootMode);
+ return LbrStopLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
}
/**
diff --git a/hyperdbg/hypertrace/header/Lbr.h b/hyperdbg/hypertrace/header/Lbr.h
index 25cc11af..e83690d8 100644
--- a/hyperdbg/hypertrace/header/Lbr.h
+++ b/hyperdbg/hypertrace/header/Lbr.h
@@ -137,10 +137,10 @@ extern CPU_LBR_MAP CPU_LBR_MAPS[];
//////////////////////////////////////////////////
VOID
-LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode);
+LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
VOID
-LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode);
+LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
LBR_STATE *
LbrCreateLbrState();
@@ -164,13 +164,13 @@ VOID
LbrInitialize();
BOOLEAN
-LbrStartLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode);
+LbrStartLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
BOOLEAN
-LbrStopLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode);
+LbrStopLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
BOOLEAN
-LbrDumpLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode);
+LbrDumpLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
extern ULONGLONG LbrCapacity;
extern LIST_ENTRY LbrStateHead;
diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h
index 075848f9..734d4a9a 100644
--- a/hyperdbg/include/SDK/headers/Constants.h
+++ b/hyperdbg/include/SDK/headers/Constants.h
@@ -17,8 +17,8 @@
//////////////////////////////////////////////////
#define VERSION_MAJOR 0
-#define VERSION_MINOR 18
-#define VERSION_PATCH 1
+#define VERSION_MINOR 19
+#define VERSION_PATCH 0
//
// Example of __DATE__ string: "Jul 27 2012"
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 660bb88d..aa621ac8 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -44,7 +44,7 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * LbrOperationRequest,
//////////////////////////////////////////////////
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode);
+HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode);
+HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index 046ab531..bb7ef11e 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -2027,7 +2027,10 @@ ScriptEngineFunctionLbrStart()
#ifdef SCRIPT_ENGINE_KERNEL_MODE
- HyperTraceStartLbr(VmFuncVmxGetCurrentExecutionMode());
+ //
+ // Depending if we are in VMX-root then a VMCALL is issued by default instead, otherwise the VMCALL is ignored
+ //
+ HyperTraceStartLbr(VmFuncVmxGetCurrentExecutionMode(), TRUE);
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
@@ -2045,6 +2048,11 @@ ScriptEngineFunctionLbrStop()
#endif // SCRIPT_ENGINE_USER_MODE
#ifdef SCRIPT_ENGINE_KERNEL_MODE
- HyperTraceStopLbr(VmFuncVmxGetCurrentExecutionMode());
+
+ //
+ // Depending if we are in VMX-root then a VMCALL is issued by default instead, otherwise the VMCALL is ignored
+ //
+ HyperTraceStopLbr(VmFuncVmxGetCurrentExecutionMode(), TRUE);
+
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
From 2ad4fa56ee433be716c5eb1b1aabf7121599a70d Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 19 Apr 2026 15:49:12 +0200
Subject: [PATCH 117/323] create separate example for LBR
---
.../hyperhv/code/hooks/syscall-hook/EferHook.c | 8 ++++----
hyperdbg/hyperhv/code/vmm/ept/Ept.c | 6 +++---
hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 4 +++-
hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c | 12 +++---------
hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c | 6 +++---
hyperdbg/hyperhv/code/vmm/vmx/Vmx.c | 16 ++++++++--------
hyperdbg/hyperhv/header/vmm/vmx/Hv.h | 8 ++++++++
hyperdbg/hyperkd/code/driver/Ioctl.c | 6 +++++-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 10 ++++++++++
hyperdbg/libhyperdbg/header/commands.h | 3 ++-
10 files changed, 49 insertions(+), 30 deletions(-)
diff --git a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
index ae6b8f5e..ddc5829c 100644
--- a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
+++ b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
@@ -125,7 +125,7 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
//
// Reading guest's RIP
//
- __vmx_vmread(VMCS_GUEST_RIP, &GuestRip);
+ VmxVmread64P(VMCS_GUEST_RIP, &GuestRip);
//
// Reading instruction length
@@ -135,7 +135,7 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
//
// Reading guest's Rflags
//
- __vmx_vmread(VMCS_GUEST_RFLAGS, &GuestRflags);
+ VmxVmread64P(VMCS_GUEST_RFLAGS, &GuestRflags);
//
// Save the address of the instruction following SYSCALL into RCX and then
@@ -166,7 +166,7 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
//
if (UcetMsr.ShStkEn)
{
- __vmx_vmread(VMCS_GUEST_SSP, &Ssp);
+ VmxVmread64P(VMCS_GUEST_SSP, &Ssp);
__writemsr(IA32_PL3_SSP, Ssp);
__vmx_vmwrite(VMCS_GUEST_SSP, 0);
}
@@ -273,7 +273,7 @@ SyscallHookHandleUD(VIRTUAL_MACHINE_STATE * VCpu)
//
// Reading guest's RIP
//
- __vmx_vmread(VMCS_GUEST_RIP, &Rip);
+ VmxVmread64P(VMCS_GUEST_RIP, &Rip);
if (g_IsUnsafeSyscallOrSysretHandling)
{
diff --git a/hyperdbg/hyperhv/code/vmm/ept/Ept.c b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
index 5052b4e0..c1154f56 100644
--- a/hyperdbg/hyperhv/code/vmm/ept/Ept.c
+++ b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
@@ -1102,7 +1102,7 @@ EptHandleEptViolation(VIRTUAL_MACHINE_STATE * VCpu)
//
// Reading guest physical address
//
- __vmx_vmread(VMCS_GUEST_PHYSICAL_ADDRESS, &GuestPhysicalAddr);
+ VmxVmread64P(VMCS_GUEST_PHYSICAL_ADDRESS, &GuestPhysicalAddr);
if (EptHandlePageHookExit(VCpu, ViolationQualification, GuestPhysicalAddr))
{
@@ -1142,7 +1142,7 @@ EptHandleMisconfiguration(VOID)
{
UINT64 GuestPhysicalAddr = 0;
- __vmx_vmread(VMCS_GUEST_PHYSICAL_ADDRESS, &GuestPhysicalAddr);
+ VmxVmread64P(VMCS_GUEST_PHYSICAL_ADDRESS, &GuestPhysicalAddr);
LogInfo("EPT Misconfiguration!");
@@ -1311,7 +1311,7 @@ EptCheckAndHandleBreakpoint(VIRTUAL_MACHINE_STATE * VCpu)
//
// Reading guest's RIP
//
- __vmx_vmread(VMCS_GUEST_RIP, &GuestRip);
+ VmxVmread64P(VMCS_GUEST_RIP, &GuestRip);
//
// Don't increment rip by default
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
index 79173378..b2aee4da 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
@@ -158,7 +158,7 @@ HvHandleControlRegisterAccess(VIRTUAL_MACHINE_STATE * VCpu,
/*
if (CrExitQualification->Fields.Register == 4)
{
- __vmx_vmread(VMCS_GUEST_RSP, &GuestRsp);
+ VmxVmread64P(VMCS_GUEST_RSP, &GuestRsp);
*RegPtr = GuestRsp;
}
*/
@@ -1507,6 +1507,8 @@ HvGetDebugctl()
* @brief Get and store the guest state of IA32_DEBUGCTL
* @details mainly used from the VMCALL handler
*
+ * @param StoreDebugctl
+ *
* @return VOID
*/
VOID
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
index 6b3d055b..dedc6230 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
@@ -539,15 +539,9 @@ VmxVmcallHandler(VIRTUAL_MACHINE_STATE * VCpu,
//
// Perform getting DEBUGCTL from VMCS
//
- if (HvGetDebugctl((UINT64)OptionalParam1, (UINT64)OptionalParam2, (SIZE_T)OptionalParam3))
- {
- VmcallStatus = STATUS_SUCCESS;
- }
- else
- {
- VmcallStatus = STATUS_UNSUCCESSFUL;
- }
+ HvGetAndStoreDebugctl((UINT64 *)OptionalParam1);
+ VmcallStatus = STATUS_SUCCESS;
break;
}
case VMCALL_SET_VMCS_DEBUGCTL:
@@ -555,7 +549,7 @@ VmxVmcallHandler(VIRTUAL_MACHINE_STATE * VCpu,
//
// Perform setting DEBUGCTL from VMCS
//
- HvGetAndStoreDebugctl((UINT64 *)OptionalParam1);
+ HvSetDebugctl(OptionalParam1);
VmcallStatus = STATUS_SUCCESS;
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
index 407c4c3a..54c5511d 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmexit.c
@@ -60,12 +60,12 @@ VmxVmexitHandler(_Inout_ PGUEST_REGS GuestRegs)
//
// Save the current rip
//
- __vmx_vmread(VMCS_GUEST_RIP, &VCpu->LastVmexitRip);
+ VmxVmread64P(VMCS_GUEST_RIP, &VCpu->LastVmexitRip);
//
// Set the rsp in general purpose registers structure
//
- __vmx_vmread(VMCS_GUEST_RSP, &VCpu->Regs->rsp);
+ VmxVmread64P(VMCS_GUEST_RSP, &VCpu->Regs->rsp);
//
// Read the exit qualification
@@ -108,7 +108,7 @@ VmxVmexitHandler(_Inout_ PGUEST_REGS GuestRegs)
// cf=1 indicate vm instructions fail
//
// UINT64 Rflags = 0;
- // __vmx_vmread(VMCS_GUEST_RFLAGS, &Rflags);
+ // VmxVmread64P(VMCS_GUEST_RFLAGS, &Rflags);
// VmxVmwrite64(VMCS_GUEST_RFLAGS, Rflags | 0x1);
//
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
index edf287b7..6053f9d0 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
@@ -579,7 +579,7 @@ VmxCheckIsOnVmxRoot()
__try
{
- if (!__vmx_vmread(VMCS_GUEST_VMCS_LINK_POINTER, &VmcsLink))
+ if (!VmxVmread64P(VMCS_GUEST_VMCS_LINK_POINTER, &VmcsLink))
{
if (VmcsLink != 0)
{
@@ -676,7 +676,7 @@ VmxVirtualizeCurrentSystem(PVOID GuestStack)
//
// Read error code firstly
//
- __vmx_vmread(VMCS_VM_INSTRUCTION_ERROR, &ErrorCode);
+ VmxVmread64P(VMCS_VM_INSTRUCTION_ERROR, &ErrorCode);
LogError("Err, unable to execute VMLAUNCH, status : 0x%llx", ErrorCode);
@@ -1039,7 +1039,7 @@ VmxSetupVmcs(VIRTUAL_MACHINE_STATE * VCpu, PVOID GuestStack)
VOID
VmxVmresume()
{
- UINT64 ErrorCode = 0;
+ UINT32 ErrorCode = 0;
__vmx_vmresume();
@@ -1047,7 +1047,7 @@ VmxVmresume()
// if VMRESUME succeed will never be here !
//
- __vmx_vmread(VMCS_VM_INSTRUCTION_ERROR, &ErrorCode);
+ VmxVmread32P(VMCS_VM_INSTRUCTION_ERROR, &ErrorCode);
__vmx_off();
//
@@ -1139,19 +1139,19 @@ VmxVmxoff(VIRTUAL_MACHINE_STATE * VCpu)
// process continues to run with its expected address space mappings.
//
- __vmx_vmread(VMCS_GUEST_CR3, &GuestCr3);
+ VmxVmread64P(VMCS_GUEST_CR3, &GuestCr3);
__writecr3(GuestCr3);
//
// Read guest rsp and rip
//
- __vmx_vmread(VMCS_GUEST_RIP, &GuestRIP);
- __vmx_vmread(VMCS_GUEST_RSP, &GuestRSP);
+ VmxVmread64P(VMCS_GUEST_RIP, &GuestRIP);
+ VmxVmread64P(VMCS_GUEST_RSP, &GuestRSP);
//
// Read instruction length
//
- __vmx_vmread(VMCS_VMEXIT_INSTRUCTION_LENGTH, &ExitInstructionLength);
+ VmxVmread64P(VMCS_VMEXIT_INSTRUCTION_LENGTH, &ExitInstructionLength);
GuestRIP += ExitInstructionLength;
//
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
index d74ed44f..deee9325 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
@@ -456,6 +456,14 @@ HvSetPendingDebugExceptions(UINT64 Value);
UINT64
HvGetDebugctl();
+/**
+ * @brief Get and store the guest state of IA32_DEBUGCTL
+ * @details mainly used from the VMCALL handler
+ *
+ * @param StoreDebugctl
+ *
+ * @return VOID
+ */
VOID
HvGetAndStoreDebugctl(UINT64 * StoreDebugctl);
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index 66dae865..94952dc4 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -1286,7 +1286,11 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Perform the HyperTrace operation
//
- HyperTracePerformOperation(HyperTraceOperationRequest, FALSE);
+
+ // HyperTracePerformOperation(HyperTraceOperationRequest, FALSE);
+
+ LogInfo("Start example of LBR tracing:");
+ HyperTraceExamplePerformLbrTrace(TRUE, TRUE);
Irp->IoStatus.Information = SIZEOF_HYPERTRACE_OPERATION_PACKETS;
Status = STATUS_SUCCESS;
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index aa621ac8..28396f23 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -16,6 +16,16 @@
# define IMPORT_EXPORT_HYPERTRACE __declspec(dllimport)
#endif
+//////////////////////////////////////////////////
+// Example Functions //
+//////////////////////////////////////////////////
+
+//
+// Used for testing purposes
+//
+IMPORT_EXPORT_HYPERTRACE VOID
+HyperTraceExamplePerformLbrTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+
//////////////////////////////////////////////////
// HyperTrace Functions //
//////////////////////////////////////////////////
diff --git a/hyperdbg/libhyperdbg/header/commands.h b/hyperdbg/libhyperdbg/header/commands.h
index d6b43237..9081a70e 100644
--- a/hyperdbg/libhyperdbg/header/commands.h
+++ b/hyperdbg/libhyperdbg/header/commands.h
@@ -478,7 +478,8 @@ typedef std::map CommandType;
DEBUGGER_COMMAND_ATTRIBUTE_LOCAL_COMMAND_IN_DEBUGGER_MODE
#define DEBUGGER_COMMAND_LBR_ATTRIBUTES \
- DEBUGGER_COMMAND_ATTRIBUTE_LOCAL_COMMAND_IN_DEBUGGER_MODE
+ NULL
+// DEBUGGER_COMMAND_ATTRIBUTE_LOCAL_COMMAND_IN_DEBUGGER_MODE
//////////////////////////////////////////////////
// Command Functions //
From 01ae55f854e55de4c1b5e32d389da2e96819d2e8 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 19 Apr 2026 15:57:52 +0200
Subject: [PATCH 118/323] change VMREAD to a specific function
---
hyperdbg/hyperhv/code/memory/Layout.c | 2 +-
hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 30 ++++++++--------
hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c | 5 +--
hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c | 36 ++++++++++++--------
4 files changed, 40 insertions(+), 33 deletions(-)
diff --git a/hyperdbg/hyperhv/code/memory/Layout.c b/hyperdbg/hyperhv/code/memory/Layout.c
index 9631f749..a7b69139 100644
--- a/hyperdbg/hyperhv/code/memory/Layout.c
+++ b/hyperdbg/hyperhv/code/memory/Layout.c
@@ -76,7 +76,7 @@ LayoutGetExactGuestProcessCr3()
{
CR3_TYPE GuestCr3 = {0};
- __vmx_vmread(VMCS_GUEST_CR3, &GuestCr3.Flags);
+ VmxVmread64P(VMCS_GUEST_CR3, &GuestCr3.Flags);
return GuestCr3;
}
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
index b2aee4da..40ad736e 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
@@ -229,19 +229,19 @@ HvHandleControlRegisterAccess(VIRTUAL_MACHINE_STATE * VCpu,
{
case VMX_EXIT_QUALIFICATION_REGISTER_CR0:
- __vmx_vmread(VMCS_GUEST_CR0, RegPtr);
+ VmxVmread64P(VMCS_GUEST_CR0, RegPtr);
break;
case VMX_EXIT_QUALIFICATION_REGISTER_CR3:
- __vmx_vmread(VMCS_GUEST_CR3, RegPtr);
+ VmxVmread64P(VMCS_GUEST_CR3, RegPtr);
break;
case VMX_EXIT_QUALIFICATION_REGISTER_CR4:
- __vmx_vmread(VMCS_GUEST_CR4, RegPtr);
+ VmxVmread64P(VMCS_GUEST_CR4, RegPtr);
break;
@@ -301,8 +301,8 @@ HvResumeToNextInstruction()
UINT64 CurrentRIP = NULL64_ZERO;
size_t ExitInstructionLength = 0;
- __vmx_vmread(VMCS_GUEST_RIP, &CurrentRIP);
- __vmx_vmread(VMCS_VMEXIT_INSTRUCTION_LENGTH, &ExitInstructionLength);
+ VmxVmread64P(VMCS_GUEST_RIP, &CurrentRIP);
+ VmxVmread64P(VMCS_VMEXIT_INSTRUCTION_LENGTH, &ExitInstructionLength);
ResumeRIP = CurrentRIP + ExitInstructionLength;
@@ -472,20 +472,20 @@ HvRestoreRegisters()
//
// Restore FS Base
//
- __vmx_vmread(VMCS_GUEST_FS_BASE, &FsBase);
+ VmxVmread64P(VMCS_GUEST_FS_BASE, &FsBase);
__writemsr(IA32_FS_BASE, FsBase);
//
// Restore Gs Base
//
- __vmx_vmread(VMCS_GUEST_GS_BASE, &GsBase);
+ VmxVmread64P(VMCS_GUEST_GS_BASE, &GsBase);
__writemsr(IA32_GS_BASE, GsBase);
//
// Restore GDTR
//
- __vmx_vmread(VMCS_GUEST_GDTR_BASE, &GdtrBase);
- __vmx_vmread(VMCS_GUEST_GDTR_LIMIT, &GdtrLimit);
+ VmxVmread64P(VMCS_GUEST_GDTR_BASE, &GdtrBase);
+ VmxVmread64P(VMCS_GUEST_GDTR_LIMIT, &GdtrLimit);
AsmReloadGdtr((void *)GdtrBase, (unsigned long)GdtrLimit);
@@ -504,8 +504,8 @@ HvRestoreRegisters()
//
// Restore IDTR
//
- __vmx_vmread(VMCS_GUEST_IDTR_BASE, &IdtrBase);
- __vmx_vmread(VMCS_GUEST_IDTR_LIMIT, &IdtrLimit);
+ VmxVmread64P(VMCS_GUEST_IDTR_BASE, &IdtrBase);
+ VmxVmread64P(VMCS_GUEST_IDTR_LIMIT, &IdtrLimit);
AsmReloadIdtr((void *)IdtrBase, (unsigned long)IdtrLimit);
}
@@ -1152,7 +1152,7 @@ HvGetCsSelector()
//
UINT64 CsSel = NULL64_ZERO;
- __vmx_vmread(VMCS_GUEST_CS_SELECTOR, &CsSel);
+ VmxVmread64P(VMCS_GUEST_CS_SELECTOR, &CsSel);
return CsSel & 0xffff;
}
@@ -1167,7 +1167,7 @@ HvGetRflags()
{
UINT64 Rflags = NULL64_ZERO;
- __vmx_vmread(VMCS_GUEST_RFLAGS, &Rflags);
+ VmxVmread64P(VMCS_GUEST_RFLAGS, &Rflags);
return Rflags;
}
@@ -1194,7 +1194,7 @@ HvGetRip()
{
UINT64 Rip = NULL64_ZERO;
- __vmx_vmread(VMCS_GUEST_RIP, &Rip);
+ VmxVmread64P(VMCS_GUEST_RIP, &Rip);
return Rip;
}
@@ -1221,7 +1221,7 @@ HvGetInterruptibilityState()
{
UINT64 InterruptibilityState = NULL64_ZERO;
- __vmx_vmread(VMCS_GUEST_INTERRUPTIBILITY_STATE, &InterruptibilityState);
+ VmxVmread64P(VMCS_GUEST_INTERRUPTIBILITY_STATE, &InterruptibilityState);
return InterruptibilityState;
}
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
index f9929526..fd5837f3 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
@@ -309,7 +309,7 @@ IdtEmulationHandlePageFaults(_Inout_ VIRTUAL_MACHINE_STATE * VCpu,
//
// Read the page-fault address
//
- __vmx_vmread(VMCS_EXIT_QUALIFICATION, &PageFaultAddress);
+ VmxVmread64P(VMCS_EXIT_QUALIFICATION, &PageFaultAddress);
// LogInfo("#PF Fault = %016llx, Page Fault Code = 0x%x | %s%s%s%s",
// PageFaultAddress,
@@ -356,7 +356,8 @@ IdtEmulationHandleExceptionAndNmi(_Inout_ VIRTUAL_MACHINE_STATE * VCpu,
UINT64 GuestRip = NULL64_ZERO;
BYTE TargetMem = NULL_ZERO;
- __vmx_vmread(VMCS_GUEST_RIP, &GuestRip);
+ VmxVmread64P(VMCS_GUEST_RIP, &GuestRip);
+
MemoryMapperReadMemorySafe(GuestRip, &TargetMem, sizeof(BYTE));
if (!EptCheckAndHandleBreakpoint(VCpu) || TargetMem == 0xcc)
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c b/hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c
index 6127d337..cca95417 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c
@@ -50,7 +50,7 @@ GetGuestCs()
{
VMX_SEGMENT_SELECTOR Cs;
- __vmx_vmread(VMCS_GUEST_CS_BASE, &Cs.Base);
+ VmxVmread64P(VMCS_GUEST_CS_BASE, &Cs.Base);
VmxVmread32P(VMCS_GUEST_CS_LIMIT, &Cs.Limit);
VmxVmread32P(VMCS_GUEST_CS_ACCESS_RIGHTS, &Cs.Attributes.AsUInt);
VmxVmread16P(VMCS_GUEST_CS_SELECTOR, &Cs.Selector);
@@ -95,7 +95,7 @@ GetGuestSs()
{
VMX_SEGMENT_SELECTOR Ss;
- __vmx_vmread(VMCS_GUEST_SS_BASE, &Ss.Base);
+ VmxVmread64P(VMCS_GUEST_SS_BASE, &Ss.Base);
VmxVmread32P(VMCS_GUEST_SS_LIMIT, &Ss.Limit);
VmxVmread32P(VMCS_GUEST_SS_ACCESS_RIGHTS, &Ss.Attributes.AsUInt);
VmxVmread16P(VMCS_GUEST_SS_SELECTOR, &Ss.Selector);
@@ -140,7 +140,7 @@ GetGuestDs()
{
VMX_SEGMENT_SELECTOR Ds;
- __vmx_vmread(VMCS_GUEST_DS_BASE, &Ds.Base);
+ VmxVmread64P(VMCS_GUEST_DS_BASE, &Ds.Base);
VmxVmread32P(VMCS_GUEST_DS_LIMIT, &Ds.Limit);
VmxVmread32P(VMCS_GUEST_DS_ACCESS_RIGHTS, &Ds.Attributes.AsUInt);
VmxVmread16P(VMCS_GUEST_DS_SELECTOR, &Ds.Selector);
@@ -185,7 +185,7 @@ GetGuestFs()
{
VMX_SEGMENT_SELECTOR Fs;
- __vmx_vmread(VMCS_GUEST_FS_BASE, &Fs.Base);
+ VmxVmread64P(VMCS_GUEST_FS_BASE, &Fs.Base);
VmxVmread32P(VMCS_GUEST_FS_LIMIT, &Fs.Limit);
VmxVmread32P(VMCS_GUEST_FS_ACCESS_RIGHTS, &Fs.Attributes.AsUInt);
VmxVmread16P(VMCS_GUEST_FS_SELECTOR, &Fs.Selector);
@@ -230,7 +230,7 @@ GetGuestGs()
{
VMX_SEGMENT_SELECTOR Gs;
- __vmx_vmread(VMCS_GUEST_GS_BASE, &Gs.Base);
+ VmxVmread64P(VMCS_GUEST_GS_BASE, &Gs.Base);
VmxVmread32P(VMCS_GUEST_GS_LIMIT, &Gs.Limit);
VmxVmread32P(VMCS_GUEST_GS_ACCESS_RIGHTS, &Gs.Attributes.AsUInt);
VmxVmread16P(VMCS_GUEST_GS_SELECTOR, &Gs.Selector);
@@ -275,7 +275,7 @@ GetGuestEs()
{
VMX_SEGMENT_SELECTOR Es;
- __vmx_vmread(VMCS_GUEST_ES_BASE, &Es.Base);
+ VmxVmread64P(VMCS_GUEST_ES_BASE, &Es.Base);
VmxVmread32P(VMCS_GUEST_ES_LIMIT, &Es.Limit);
VmxVmread32P(VMCS_GUEST_ES_ACCESS_RIGHTS, &Es.Attributes.AsUInt);
VmxVmread16P(VMCS_GUEST_ES_SELECTOR, &Es.Selector);
@@ -305,7 +305,7 @@ GetGuestIdtr()
{
UINT64 Idtr;
- __vmx_vmread(VMCS_GUEST_IDTR_BASE, &Idtr);
+ VmxVmread64P(VMCS_GUEST_IDTR_BASE, &Idtr);
return Idtr;
}
@@ -332,7 +332,7 @@ GetGuestLdtr()
{
UINT64 Ldtr;
- __vmx_vmread(VMCS_GUEST_LDTR_BASE, &Ldtr);
+ VmxVmread64P(VMCS_GUEST_LDTR_BASE, &Ldtr);
return Ldtr;
}
@@ -359,7 +359,7 @@ GetGuestGdtr()
{
UINT64 Gdtr;
- __vmx_vmread(VMCS_GUEST_GDTR_BASE, &Gdtr);
+ VmxVmread64P(VMCS_GUEST_GDTR_BASE, &Gdtr);
return Gdtr;
}
@@ -384,7 +384,7 @@ GetGuestTr()
{
UINT64 Tr;
- __vmx_vmread(VMCS_GUEST_TR_BASE, &Tr);
+ VmxVmread64P(VMCS_GUEST_TR_BASE, &Tr);
return Tr;
}
@@ -409,7 +409,9 @@ UINT64
GetGuestRFlags()
{
UINT64 RFlags;
- __vmx_vmread(VMCS_GUEST_RFLAGS, &RFlags);
+
+ VmxVmread64P(VMCS_GUEST_RFLAGS, &RFlags);
+
return RFlags;
}
@@ -447,7 +449,8 @@ GetGuestRIP()
{
UINT64 RIP;
- __vmx_vmread(VMCS_GUEST_RIP, &RIP);
+ VmxVmread64P(VMCS_GUEST_RIP, &RIP);
+
return RIP;
}
@@ -461,7 +464,8 @@ GetGuestCr0()
{
UINT64 Cr0;
- __vmx_vmread(VMCS_GUEST_CR0, &Cr0);
+ VmxVmread64P(VMCS_GUEST_CR0, &Cr0);
+
return Cr0;
}
@@ -489,7 +493,8 @@ GetGuestCr3()
{
UINT64 Cr3;
- __vmx_vmread(VMCS_GUEST_CR3, &Cr3);
+ VmxVmread64P(VMCS_GUEST_CR3, &Cr3);
+
return Cr3;
}
@@ -503,7 +508,8 @@ GetGuestCr4()
{
UINT64 Cr4;
- __vmx_vmread(VMCS_GUEST_CR4, &Cr4);
+ VmxVmread64P(VMCS_GUEST_CR4, &Cr4);
+
return Cr4;
}
From a1984fed70f79cd9632295819f99b7687c2b8052 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 19 Apr 2026 16:57:48 +0200
Subject: [PATCH 119/323] change instances for VMWRITE into a single function
---
hyperdbg/hyperevade/hyperevade.vcxproj | 1 -
.../hyperevade/hyperevade.vcxproj.filters | 6 -----
.../components/registers/DebugRegisters.c | 2 +-
hyperdbg/hyperhv/code/features/DirtyLogging.c | 10 ++++----
.../hyperhv/code/hooks/ept-hook/ExecTrap.c | 2 +-
.../code/hooks/syscall-hook/EferHook.c | 24 +++++++++----------
hyperdbg/hyperhv/code/interface/Export.c | 12 ++++++++++
hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 12 ++++++++++
hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c | 12 +++++-----
hyperdbg/hyperhv/header/vmm/vmx/Hv.h | 9 +++++++
.../SDK/imports/kernel/HyperDbgVmmImports.h | 3 +++
11 files changed, 61 insertions(+), 32 deletions(-)
diff --git a/hyperdbg/hyperevade/hyperevade.vcxproj b/hyperdbg/hyperevade/hyperevade.vcxproj
index 73f7187b..be8f3e7a 100644
--- a/hyperdbg/hyperevade/hyperevade.vcxproj
+++ b/hyperdbg/hyperevade/hyperevade.vcxproj
@@ -100,7 +100,6 @@
-
diff --git a/hyperdbg/hyperevade/hyperevade.vcxproj.filters b/hyperdbg/hyperevade/hyperevade.vcxproj.filters
index 270443b2..f08b0282 100644
--- a/hyperdbg/hyperevade/hyperevade.vcxproj.filters
+++ b/hyperdbg/hyperevade/hyperevade.vcxproj.filters
@@ -22,9 +22,6 @@
{890885f8-de8f-41df-9202-3ec320d7d816}
-
- {228a6a7a-4085-4871-a29b-15ca5576623d}
-
{a66d71db-112c-4826-8181-ba265d339149}
@@ -48,9 +45,6 @@
code\platform
-
- code\components\registers
-
code\components\spinlock
diff --git a/hyperdbg/hyperhv/code/components/registers/DebugRegisters.c b/hyperdbg/hyperhv/code/components/registers/DebugRegisters.c
index c12aacf5..d6fdd864 100644
--- a/hyperdbg/hyperhv/code/components/registers/DebugRegisters.c
+++ b/hyperdbg/hyperhv/code/components/registers/DebugRegisters.c
@@ -248,7 +248,7 @@ SetDebugRegisters(UINT32 DebugRegNum, DEBUG_REGISTER_TYPE ActionType, BOOLEAN Ap
//
if (ApplyToVmcs)
{
- __vmx_vmwrite(VMCS_GUEST_DR7, Dr7.AsUInt);
+ HvSetDebugReg7(Dr7.AsUInt);
}
else
{
diff --git a/hyperdbg/hyperhv/code/features/DirtyLogging.c b/hyperdbg/hyperhv/code/features/DirtyLogging.c
index 65af1ca4..6f91dd46 100644
--- a/hyperdbg/hyperhv/code/features/DirtyLogging.c
+++ b/hyperdbg/hyperhv/code/features/DirtyLogging.c
@@ -119,12 +119,12 @@ DirtyLoggingEnable(VIRTUAL_MACHINE_STATE * VCpu)
// LogInfo("PML Buffer Address = %llx", PmlPhysAddr);
- __vmx_vmwrite(VMCS_CTRL_PML_ADDRESS, PmlPhysAddr);
+ VmxVmwrite64(VMCS_CTRL_PML_ADDRESS, PmlPhysAddr);
//
// Clear the PML index
//
- __vmx_vmwrite(VMCS_GUEST_PML_INDEX, PML_ENTITY_NUM - 1);
+ VmxVmwrite64(VMCS_GUEST_PML_INDEX, PML_ENTITY_NUM - 1);
//
// If the "enable PML" VM-execution control is 1 and bit 6 of EPT pointer (EPTP)
@@ -160,12 +160,12 @@ DirtyLoggingDisable(VIRTUAL_MACHINE_STATE * VCpu)
//
// Clear the address
//
- __vmx_vmwrite(VMCS_CTRL_PML_ADDRESS, NULL64_ZERO);
+ VmxVmwrite64(VMCS_CTRL_PML_ADDRESS, NULL64_ZERO);
//
// Clear the PML index
//
- __vmx_vmwrite(VMCS_GUEST_PML_INDEX, 0x0);
+ VmxVmwrite64(VMCS_GUEST_PML_INDEX, 0x0);
//
// Disable PML Enable bit
@@ -284,7 +284,7 @@ DirtyLoggingFlushPmlBuffer(VIRTUAL_MACHINE_STATE * VCpu)
//
// reset PML index
//
- __vmx_vmwrite(VMCS_GUEST_PML_INDEX, PML_ENTITY_NUM - 1);
+ VmxVmwrite64(VMCS_GUEST_PML_INDEX, PML_ENTITY_NUM - 1);
return TRUE;
}
diff --git a/hyperdbg/hyperhv/code/hooks/ept-hook/ExecTrap.c b/hyperdbg/hyperhv/code/hooks/ept-hook/ExecTrap.c
index a7154cab..8f837efd 100644
--- a/hyperdbg/hyperhv/code/hooks/ept-hook/ExecTrap.c
+++ b/hyperdbg/hyperhv/code/hooks/ept-hook/ExecTrap.c
@@ -482,7 +482,7 @@ ExecTrapRestoreToNormalEptp(VIRTUAL_MACHINE_STATE * VCpu)
//
// Change EPTP
//
- __vmx_vmwrite(VMCS_CTRL_EPT_POINTER, VCpu->EptPointer.AsUInt);
+ VmxVmwrite64(VMCS_CTRL_EPT_POINTER, VCpu->EptPointer.AsUInt);
//
// It's on normal EPTP
diff --git a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
index ddc5829c..f983ea1b 100644
--- a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
+++ b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
@@ -55,17 +55,17 @@ SyscallHookConfigureEFER(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN EnableEFERSyscall
//
// Set VM-Entry controls to load EFER
//
- __vmx_vmwrite(VMCS_CTRL_VMENTRY_CONTROLS, HvAdjustControls(VmEntryControls | IA32_VMX_ENTRY_CTLS_LOAD_IA32_EFER_FLAG, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS));
+ VmxVmwrite32(VMCS_CTRL_VMENTRY_CONTROLS, HvAdjustControls(VmEntryControls | IA32_VMX_ENTRY_CTLS_LOAD_IA32_EFER_FLAG, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS));
//
// Set VM-Exit controls to save EFER
//
- __vmx_vmwrite(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, HvAdjustControls(VmExitControls | IA32_VMX_EXIT_CTLS_SAVE_IA32_EFER_FLAG, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS));
+ VmxVmwrite32(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, HvAdjustControls(VmExitControls | IA32_VMX_EXIT_CTLS_SAVE_IA32_EFER_FLAG, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS));
//
// Set the GUEST EFER to use this value as the EFER
//
- __vmx_vmwrite(VMCS_GUEST_EFER, MsrValue.AsUInt);
+ VmxVmwrite64(VMCS_GUEST_EFER, MsrValue.AsUInt);
//
// also, we have to set exception bitmap to cause vm-exit on #UDs
@@ -79,17 +79,17 @@ SyscallHookConfigureEFER(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN EnableEFERSyscall
//
// Set VM-Entry controls to load EFER
//
- __vmx_vmwrite(VMCS_CTRL_VMENTRY_CONTROLS, HvAdjustControls(VmEntryControls & ~IA32_VMX_ENTRY_CTLS_LOAD_IA32_EFER_FLAG, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS));
+ VmxVmwrite32(VMCS_CTRL_VMENTRY_CONTROLS, HvAdjustControls(VmEntryControls & ~IA32_VMX_ENTRY_CTLS_LOAD_IA32_EFER_FLAG, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS));
//
// Set VM-Exit controls to save EFER
//
- __vmx_vmwrite(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, HvAdjustControls(VmExitControls & ~IA32_VMX_EXIT_CTLS_SAVE_IA32_EFER_FLAG, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS));
+ VmxVmwrite32(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, HvAdjustControls(VmExitControls & ~IA32_VMX_EXIT_CTLS_SAVE_IA32_EFER_FLAG, VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS));
//
// Set the GUEST EFER to use this value as the EFER
//
- __vmx_vmwrite(VMCS_GUEST_EFER, MsrValue.AsUInt);
+ VmxVmwrite64(VMCS_GUEST_EFER, MsrValue.AsUInt);
//
// Because we're not save or load EFER on vm-exits so
@@ -144,7 +144,7 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
MsrValue = __readmsr(IA32_LSTAR);
VCpu->Regs->rcx = GuestRip + InstructionLength;
GuestRip = MsrValue;
- __vmx_vmwrite(VMCS_GUEST_RIP, GuestRip);
+ VmxVmwrite64(VMCS_GUEST_RIP, GuestRip);
//
// Save RFLAGS into R11 and then mask RFLAGS using IA32_FMASK
@@ -152,7 +152,7 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
MsrValue = __readmsr(IA32_FMASK);
VCpu->Regs->r11 = GuestRflags;
GuestRflags &= ~(MsrValue | X86_FLAGS_RF);
- __vmx_vmwrite(VMCS_GUEST_RFLAGS, GuestRflags);
+ VmxVmwrite64(VMCS_GUEST_RFLAGS, GuestRflags);
//
// Peform emulation of Intel CET (Shadow stacks)
@@ -168,7 +168,7 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
{
VmxVmread64P(VMCS_GUEST_SSP, &Ssp);
__writemsr(IA32_PL3_SSP, Ssp);
- __vmx_vmwrite(VMCS_GUEST_SSP, 0);
+ VmxVmwrite64(VMCS_GUEST_SSP, 0);
}
}
@@ -212,13 +212,13 @@ SyscallHookEmulateSYSRET(VIRTUAL_MACHINE_STATE * VCpu)
// Load RIP from RCX
//
GuestRip = VCpu->Regs->rcx;
- __vmx_vmwrite(VMCS_GUEST_RIP, GuestRip);
+ VmxVmwrite64(VMCS_GUEST_RIP, GuestRip);
//
// Load RFLAGS from R11. Clear RF, VM, reserved bits
//
GuestRflags = (VCpu->Regs->r11 & ~(X86_FLAGS_RF | X86_FLAGS_VM | X86_FLAGS_RESERVED_BITS)) | X86_FLAGS_FIXED;
- __vmx_vmwrite(VMCS_GUEST_RFLAGS, GuestRflags);
+ VmxVmwrite64(VMCS_GUEST_RFLAGS, GuestRflags);
//
// Restore user-mode SPP
@@ -233,7 +233,7 @@ SyscallHookEmulateSYSRET(VIRTUAL_MACHINE_STATE * VCpu)
if (UcetMsr.ShStkEn)
{
Ssp = __readmsr(IA32_PL3_SSP);
- __vmx_vmwrite(VMCS_GUEST_SSP, Ssp);
+ VmxVmwrite64(VMCS_GUEST_SSP, Ssp);
}
}
diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c
index 78b6b069..eb9a4071 100644
--- a/hyperdbg/hyperhv/code/interface/Export.c
+++ b/hyperdbg/hyperhv/code/interface/Export.c
@@ -437,6 +437,18 @@ VmFuncSetDebugctlVmcallOnTargetCore(UINT64 Value)
CrossVmcallSetDebugctlVmcallOnTargetCore(Value);
}
+/**
+ * @brief Set the guest state of DR7
+ * @param Value
+ *
+ * @return VOID
+ */
+VOID
+VmFuncSetDebugReg7(UINT64 Value)
+{
+ HvSetDebugReg7(Value);
+}
+
/**
* @brief Read guest's interruptibility state
*
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
index 40ad736e..c7c9035a 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
@@ -1540,6 +1540,18 @@ HvSetDebugctl(UINT64 Value)
VmxVmwrite64(VMCS_GUEST_DEBUGCTL_HIGH, Value >> 32);
}
+/**
+ * @brief Set the guest state of DR7
+ * @param Value The new value for DR7
+ *
+ * @return VOID
+ */
+VOID
+HvSetDebugReg7(UINT64 Value)
+{
+ VmxVmwrite64(VMCS_GUEST_DR7, Value);
+}
+
/**
* @brief Handle the case when the trap flag is set, and
* we need to inject the single-step exception right
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c b/hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c
index cca95417..a201eac3 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c
@@ -21,7 +21,7 @@
VOID
SetGuestCsSel(PVMX_SEGMENT_SELECTOR Cs)
{
- __vmx_vmwrite(VMCS_GUEST_CS_SELECTOR, Cs->Selector);
+ VmxVmwrite16(VMCS_GUEST_CS_SELECTOR, Cs->Selector);
}
/**
@@ -34,10 +34,10 @@ SetGuestCsSel(PVMX_SEGMENT_SELECTOR Cs)
VOID
SetGuestCs(PVMX_SEGMENT_SELECTOR Cs)
{
- __vmx_vmwrite(VMCS_GUEST_CS_BASE, Cs->Base);
- __vmx_vmwrite(VMCS_GUEST_CS_LIMIT, Cs->Limit);
- __vmx_vmwrite(VMCS_GUEST_CS_ACCESS_RIGHTS, Cs->Attributes.AsUInt);
- __vmx_vmwrite(VMCS_GUEST_CS_SELECTOR, Cs->Selector);
+ VmxVmwrite64(VMCS_GUEST_CS_BASE, Cs->Base);
+ VmxVmwrite32(VMCS_GUEST_CS_LIMIT, Cs->Limit);
+ VmxVmwrite32(VMCS_GUEST_CS_ACCESS_RIGHTS, Cs->Attributes.AsUInt);
+ VmxVmwrite16(VMCS_GUEST_CS_SELECTOR, Cs->Selector);
}
/**
@@ -67,7 +67,7 @@ GetGuestCs()
VOID
SetGuestSsSel(PVMX_SEGMENT_SELECTOR Ss)
{
- __vmx_vmwrite(VMCS_GUEST_SS_SELECTOR, Ss->Selector);
+ VmxVmwrite16(VMCS_GUEST_SS_SELECTOR, Ss->Selector);
}
/**
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
index deee9325..49a28e0e 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
@@ -476,6 +476,15 @@ HvGetAndStoreDebugctl(UINT64 * StoreDebugctl);
VOID
HvSetDebugctl(UINT64 Value);
+/**
+ * @brief Set the guest state of DR7
+ * @param Value The new value for DR7
+ *
+ * @return VOID
+ */
+VOID
+HvSetDebugReg7(UINT64 Value);
+
/**
* @brief Handle the case when the trap flag is set, and
* we need to inject the single-step exception right
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
index f63c4993..3da4bfbc 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
@@ -101,6 +101,9 @@ VmFuncSetRflags(UINT64 Rflags);
IMPORT_EXPORT_VMM VOID
VmFuncSetRip(UINT64 Rip);
+IMPORT_EXPORT_VMM VOID
+VmFuncSetDebugReg7(UINT64 Value);
+
IMPORT_EXPORT_VMM VOID
VmFuncSetDebugctl(UINT64 Value);
From 43cdab98215c4373d4e4f830eddff0131d9d6ece Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 19 Apr 2026 19:20:18 +0200
Subject: [PATCH 120/323] broadcast LBR example to all cores
---
hyperdbg/hyperhv/code/vmm/vmx/Vmx.c | 6 +-
hyperdbg/hyperkd/code/driver/Ioctl.c | 6 +-
hyperdbg/hypertrace/code/Tracing.c | 222 ++++++++++++++++++
hyperdbg/hypertrace/header/Dpc.h | 40 ++++
hyperdbg/hypertrace/header/pch.h | 5 +
hyperdbg/hypertrace/hypertrace.vcxproj | 1 +
.../hypertrace/hypertrace.vcxproj.filters | 3 +
.../include/SDK/headers/RequestStructures.h | 1 +
.../commands/extension-commands/lbr.cpp | 9 +
9 files changed, 286 insertions(+), 7 deletions(-)
create mode 100644 hyperdbg/hypertrace/header/Dpc.h
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
index 6053f9d0..ae6b4a5c 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
@@ -908,13 +908,15 @@ VmxSetupVmcs(VIRTUAL_MACHINE_STATE * VCpu, PVOID GuestStack)
VmxVmwrite64(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS,
HvAdjustControls(
IA32_VMX_EXIT_CTLS_HOST_ADDRESS_SPACE_SIZE_FLAG |
- IA32_VMX_EXIT_CTLS_LOAD_IA32_CET_STATE_FLAG,
+ IA32_VMX_EXIT_CTLS_LOAD_IA32_CET_STATE_FLAG |
+ IA32_VMX_EXIT_CTLS_SAVE_DEBUG_CONTROLS_FLAG,
VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS));
VmxVmwrite64(VMCS_CTRL_VMENTRY_CONTROLS,
HvAdjustControls(
IA32_VMX_ENTRY_CTLS_IA32E_MODE_GUEST_FLAG |
- IA32_VMX_ENTRY_CTLS_LOAD_CET_STATE_FLAG,
+ IA32_VMX_ENTRY_CTLS_LOAD_CET_STATE_FLAG |
+ IA32_VMX_ENTRY_CTLS_LOAD_DEBUG_CONTROLS_FLAG,
VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS));
VmxVmwrite64(VMCS_CTRL_CR0_GUEST_HOST_MASK, 0);
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index 94952dc4..66dae865 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -1286,11 +1286,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Perform the HyperTrace operation
//
-
- // HyperTracePerformOperation(HyperTraceOperationRequest, FALSE);
-
- LogInfo("Start example of LBR tracing:");
- HyperTraceExamplePerformLbrTrace(TRUE, TRUE);
+ HyperTracePerformOperation(HyperTraceOperationRequest, FALSE);
Irp->IoStatus.Information = SIZEOF_HYPERTRACE_OPERATION_PACKETS;
Status = STATUS_SUCCESS;
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index c1a67dd3..fa65ff8a 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -22,6 +22,12 @@ BOOLEAN g_HyperTraceCallbacksInitialized = FALSE;
*/
BOOLEAN g_LastBranchRecordEnabled = FALSE;
+/**
+ * @brief Core specific state
+ *
+ */
+LBR_IOCTL_REQUEST * g_LbrRequestState = NULL;
+
/**
* @brief Example of performing LBR trace
*
@@ -137,6 +143,8 @@ HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
BOOLEAN
HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
{
+ ULONG ProcessorsCount;
+
//
// Check if the LBR is supported on this CPU before initializing the hypertrace module,
//
@@ -164,6 +172,16 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
//
RtlCopyMemory(&g_Callbacks, HypertraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
+ //
+ // Read number of cores
+ //
+ ProcessorsCount = KeQueryActiveProcessorCount(0);
+
+ //
+ // Initialize the memory for LBR requests on all cores
+ //
+ g_LbrRequestState = PlatformAllocateMemory(sizeof(LBR_IOCTL_REQUEST) * ProcessorsCount);
+
//
// It is initialized, but LBR is disabled at this stage
//
@@ -177,6 +195,116 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
return TRUE;
}
+/**
+ * @brief Broadcast enabling LBR
+ *
+ * @param Dpc
+ * @param DeferredContext
+ * @param SystemArgument1
+ * @param SystemArgument2
+ * @return BOOLEAN
+ */
+BOOLEAN
+DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ LBR_IOCTL_REQUEST * CurrentRequest;
+
+ UNREFERENCED_PARAMETER(Dpc);
+ UNREFERENCED_PARAMETER(DeferredContext);
+
+ //
+ // Get the current request (for current core)
+ //
+ CurrentRequest = &g_LbrRequestState[KeGetCurrentProcessorNumberEx(NULL)];
+
+ //
+ // Enable LBR on all cores from VMX-root mode by VMCALL
+ //
+
+ // LbrStartLbr(CurrentRequest, TRUE, TRUE);
+ HyperTraceExamplePerformLbrTrace(TRUE, TRUE);
+
+ //
+ // Wait for all DPCs to synchronize at this point
+ //
+ KeSignalCallDpcSynchronize(SystemArgument2);
+
+ //
+ // Mark the DPC as being complete
+ //
+ KeSignalCallDpcDone(SystemArgument1);
+
+ return TRUE;
+}
+
+/**
+ * @brief Routines to enable LBR on all cores
+ *
+ * @return VOID
+ */
+VOID
+BroadcastEnableLbrOnAllCores()
+{
+ //
+ // Broadcast to all cores
+ //
+ KeGenericCallDpc(DpcRoutineEnableLbr, NULL);
+}
+
+/**
+ * @brief Broadcast disabling LBR
+ *
+ * @param Dpc
+ * @param DeferredContext
+ * @param SystemArgument1
+ * @param SystemArgument2
+ * @return BOOLEAN
+ */
+BOOLEAN
+DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ LBR_IOCTL_REQUEST * CurrentRequest;
+
+ UNREFERENCED_PARAMETER(Dpc);
+ UNREFERENCED_PARAMETER(DeferredContext);
+
+ //
+ // Get the current request (for current core)
+ //
+ CurrentRequest = &g_LbrRequestState[KeGetCurrentProcessorNumberEx(NULL)];
+
+ //
+ // Disable LBR on all cores from VMX-root mode by VMCALL
+ //
+ LbrStopLbr(CurrentRequest, TRUE, TRUE);
+
+ //
+ // Wait for all DPCs to synchronize at this point
+ //
+ KeSignalCallDpcSynchronize(SystemArgument2);
+
+ //
+ // Mark the DPC as being complete
+ //
+ KeSignalCallDpcDone(SystemArgument1);
+
+ return TRUE;
+}
+
+/**
+ * @brief Routines to disable LBR on all cores
+ *
+ * @return VOID
+ */
+VOID
+BroadcastDisableLbrOnAllCores()
+{
+ //
+ // Broadcast to all cores
+ //
+ KeGenericCallDpc(DpcRoutineDisableLbr, NULL);
+}
+
/**
* @brief Enable LBR tracing for HyperTrace
*
@@ -191,6 +319,8 @@ HyperTraceEnableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+ ULONG ProcessorsCount;
+
//
// Check if LBR is already enabled or not
//
@@ -211,6 +341,22 @@ HyperTraceEnableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
//
LbrInitialize();
+ //
+ // Read number of cores
+ //
+ ProcessorsCount = KeQueryActiveProcessorCount(0);
+
+ for (size_t i = 0; i < ProcessorsCount; i++)
+ {
+ g_LbrRequestState[i].LbrConfig.Pid = 0;
+ g_LbrRequestState[i].LbrConfig.LbrSelect = LBR_SELECT;
+ }
+
+ //
+ // Broadcast enabling LBR on all cores
+ //
+ BroadcastEnableLbrOnAllCores();
+
//
// Set the flag to indicate that LBR tracing is enabled
//
@@ -251,6 +397,11 @@ HyperTraceDisableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRe
return FALSE;
}
+ //
+ // Broadcast disabling LBR on all cores
+ //
+ BroadcastDisableLbrOnAllCores();
+
//
// Disabling LBR
//
@@ -267,6 +418,54 @@ HyperTraceDisableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRe
return TRUE;
}
+/**
+ * @brief Show LBR tracing for HyperTrace
+ *
+ * @param HyperTraceOperationRequest
+ * @param ApplyFromVmxRootMode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceShowLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
+{
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
+ LBR_IOCTL_REQUEST * CurrentRequest;
+
+ //
+ // Check if LBR is already disabled or not
+ //
+ if (!g_LastBranchRecordEnabled)
+ {
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_DISABLED;
+ }
+
+ return FALSE;
+ }
+
+ //
+ // Get the current request (for current core)
+ //
+ CurrentRequest = &g_LbrRequestState[KeGetCurrentProcessorNumberEx(NULL)];
+
+ LBR_STATE * State = LbrFindLbrState(0);
+
+ if (State)
+ {
+ LbrGetLbr(State, TRUE, TRUE);
+ }
+
+ LogInfo("Dumping LBR Buffer...\n");
+
+ LbrDumpLbr(CurrentRequest, TRUE, TRUE);
+
+ return TRUE;
+}
+
/**
* @brief Uninitialize the hyper trace module
*
@@ -284,6 +483,16 @@ HyperTraceUninit()
// Set callbacks to not initialized
//
g_HyperTraceCallbacksInitialized = FALSE;
+
+ //
+ // UnAllocate the state buffer
+ //
+ PlatformFreeMemory(g_LbrRequestState);
+
+ //
+ // Set LBR request buffer to zero
+ //
+ g_LbrRequestState = NULL64_ZERO;
}
/**
@@ -317,12 +526,25 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE:
LogInfo("HyperTrace: Enabling LBR tracing...\n");
+
HyperTraceEnableLbrTracing(HyperTraceOperationRequest, ApplyFromVmxRootMode);
break;
case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE:
+
LogInfo("HyperTrace: Disabling LBR tracing...\n");
+
+ HyperTraceDisableLbrTracing(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+
+ break;
+
+ case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SHOW:
+
+ LogInfo("HyperTrace: Showing LBR tracing...\n");
+
+ HyperTraceShowLbrTracing(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+
break;
default:
diff --git a/hyperdbg/hypertrace/header/Dpc.h b/hyperdbg/hypertrace/header/Dpc.h
new file mode 100644
index 00000000..5362e006
--- /dev/null
+++ b/hyperdbg/hypertrace/header/Dpc.h
@@ -0,0 +1,40 @@
+
+/**
+ * @file Dpc.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Definition for Windows DPC functions
+ * @details
+ * @version 0.1
+ * @date 2020-04-10
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+NTKERNELAPI
+_IRQL_requires_max_(APC_LEVEL)
+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_same_
+VOID
+KeGenericCallDpc(
+ _In_ PKDEFERRED_ROUTINE Routine,
+ _In_opt_ PVOID Context);
+
+NTKERNELAPI
+_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_same_
+VOID
+KeSignalCallDpcDone(
+ _In_ PVOID SystemArgument1);
+
+NTKERNELAPI
+_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_same_
+LOGICAL
+KeSignalCallDpcSynchronize(
+ _In_ PVOID SystemArgument2);
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index a781652f..3f24c392 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -42,6 +42,11 @@
//
#include "ia32-doc/out/ia32.h"
+//
+// DPC headers
+//
+#include "Dpc.h"
+
//
// Unload function (to be called when the driver is unloaded)
//
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index 38037823..a966c738 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -112,6 +112,7 @@
+
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
index b4ac3cc5..8a60127e 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj.filters
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -67,5 +67,8 @@
header
+
+ header
+
\ No newline at end of file
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 103ec69c..333e30ce 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1272,6 +1272,7 @@ typedef enum _HYPERTRACE_OPERATION_REQUEST_TYPE
{
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE,
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE,
+ HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SHOW,
} HYPERTRACE_OPERATION_REQUEST_TYPE;
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index 0d4797cc..c70bae02 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -31,6 +31,7 @@ CommandLbrHelp()
ShowMessages("\n");
ShowMessages("\t\te.g : !lbr enable\n");
ShowMessages("\t\te.g : !lbr disable\n");
+ ShowMessages("\t\te.g : !lbr show\n");
}
/**
@@ -139,6 +140,10 @@ CommandLbr(vector CommandTokens, string Command)
{
LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE;
}
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "show"))
+ {
+ LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SHOW;
+ }
else
{
ShowMessages("incorrect use of the '%s'\n\n",
@@ -160,6 +165,10 @@ CommandLbr(vector CommandTokens, string Command)
{
ShowMessages("LBR disabled successfully\n");
}
+ else if (LbrRequest.HyperTraceOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SHOW)
+ {
+ ShowMessages("LBR branches are shown\n");
+ }
}
else
{
From 6e511c8368ca4fdf96dd4fcdf14dc7b3de3461e1 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 19 Apr 2026 19:34:13 +0200
Subject: [PATCH 121/323] create different function separations for DPCs and
Broadcasting routines
---
hyperdbg/hypertrace/code/Broadcast.c | 40 ++++++
hyperdbg/hypertrace/code/DpcRoutines.c | 94 +++++++++++++
hyperdbg/hypertrace/code/Tracing.c | 128 ------------------
hyperdbg/hypertrace/header/Broadcast.h | 23 ++++
hyperdbg/hypertrace/header/Dpc.h | 4 +-
hyperdbg/hypertrace/header/DpcRoutines.h | 23 ++++
hyperdbg/hypertrace/header/GlobalVariables.h | 35 +++++
hyperdbg/hypertrace/header/pch.h | 9 +-
hyperdbg/hypertrace/hypertrace.vcxproj | 5 +
.../hypertrace/hypertrace.vcxproj.filters | 15 ++
10 files changed, 245 insertions(+), 131 deletions(-)
create mode 100644 hyperdbg/hypertrace/code/Broadcast.c
create mode 100644 hyperdbg/hypertrace/code/DpcRoutines.c
create mode 100644 hyperdbg/hypertrace/header/Broadcast.h
create mode 100644 hyperdbg/hypertrace/header/DpcRoutines.h
create mode 100644 hyperdbg/hypertrace/header/GlobalVariables.h
diff --git a/hyperdbg/hypertrace/code/Broadcast.c b/hyperdbg/hypertrace/code/Broadcast.c
new file mode 100644
index 00000000..fd3a5520
--- /dev/null
+++ b/hyperdbg/hypertrace/code/Broadcast.c
@@ -0,0 +1,40 @@
+/**
+ * @file Broadcast.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Broadcasting functions
+ *
+ * @version 0.19
+ * @date 2026-04-19
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+/**
+ * @brief Routines to enable LBR on all cores
+ *
+ * @return VOID
+ */
+VOID
+BroadcastEnableLbrOnAllCores()
+{
+ //
+ // Broadcast to all cores
+ //
+ KeGenericCallDpc(DpcRoutineEnableLbr, NULL);
+}
+
+/**
+ * @brief Routines to disable LBR on all cores
+ *
+ * @return VOID
+ */
+VOID
+BroadcastDisableLbrOnAllCores()
+{
+ //
+ // Broadcast to all cores
+ //
+ KeGenericCallDpc(DpcRoutineDisableLbr, NULL);
+}
diff --git a/hyperdbg/hypertrace/code/DpcRoutines.c b/hyperdbg/hypertrace/code/DpcRoutines.c
new file mode 100644
index 00000000..c3d97e9d
--- /dev/null
+++ b/hyperdbg/hypertrace/code/DpcRoutines.c
@@ -0,0 +1,94 @@
+/**
+ * @file DpcRoutines.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief DPC routines
+ *
+ * @version 0.19
+ * @date 2026-04-19
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+/**
+ * @brief Broadcast enabling LBR
+ *
+ * @param Dpc
+ * @param DeferredContext
+ * @param SystemArgument1
+ * @param SystemArgument2
+ * @return BOOLEAN
+ */
+BOOLEAN
+DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ LBR_IOCTL_REQUEST * CurrentRequest;
+
+ UNREFERENCED_PARAMETER(Dpc);
+ UNREFERENCED_PARAMETER(DeferredContext);
+
+ //
+ // Get the current request (for current core)
+ //
+ CurrentRequest = &g_LbrRequestState[KeGetCurrentProcessorNumberEx(NULL)];
+
+ //
+ // Enable LBR on all cores from VMX-root mode by VMCALL
+ //
+
+ // LbrStartLbr(CurrentRequest, TRUE, TRUE);
+ HyperTraceExamplePerformLbrTrace(TRUE, TRUE);
+
+ //
+ // Wait for all DPCs to synchronize at this point
+ //
+ KeSignalCallDpcSynchronize(SystemArgument2);
+
+ //
+ // Mark the DPC as being complete
+ //
+ KeSignalCallDpcDone(SystemArgument1);
+
+ return TRUE;
+}
+
+/**
+ * @brief Broadcast disabling LBR
+ *
+ * @param Dpc
+ * @param DeferredContext
+ * @param SystemArgument1
+ * @param SystemArgument2
+ * @return BOOLEAN
+ */
+BOOLEAN
+DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ LBR_IOCTL_REQUEST * CurrentRequest;
+
+ UNREFERENCED_PARAMETER(Dpc);
+ UNREFERENCED_PARAMETER(DeferredContext);
+
+ //
+ // Get the current request (for current core)
+ //
+ CurrentRequest = &g_LbrRequestState[KeGetCurrentProcessorNumberEx(NULL)];
+
+ //
+ // Disable LBR on all cores from VMX-root mode by VMCALL
+ //
+ LbrStopLbr(CurrentRequest, TRUE, TRUE);
+
+ //
+ // Wait for all DPCs to synchronize at this point
+ //
+ KeSignalCallDpcSynchronize(SystemArgument2);
+
+ //
+ // Mark the DPC as being complete
+ //
+ KeSignalCallDpcDone(SystemArgument1);
+
+ return TRUE;
+}
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index fa65ff8a..4121c4f4 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -10,24 +10,6 @@
*/
#include "pch.h"
-/**
- * @brief The flag indicating whether the hypertrace module callbacks is initialized or not
- *
- */
-BOOLEAN g_HyperTraceCallbacksInitialized = FALSE;
-
-/**
- * @brief The flag indicating whether the hypertrace LBR tracing is initialized or not
- *
- */
-BOOLEAN g_LastBranchRecordEnabled = FALSE;
-
-/**
- * @brief Core specific state
- *
- */
-LBR_IOCTL_REQUEST * g_LbrRequestState = NULL;
-
/**
* @brief Example of performing LBR trace
*
@@ -195,116 +177,6 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
return TRUE;
}
-/**
- * @brief Broadcast enabling LBR
- *
- * @param Dpc
- * @param DeferredContext
- * @param SystemArgument1
- * @param SystemArgument2
- * @return BOOLEAN
- */
-BOOLEAN
-DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
-{
- LBR_IOCTL_REQUEST * CurrentRequest;
-
- UNREFERENCED_PARAMETER(Dpc);
- UNREFERENCED_PARAMETER(DeferredContext);
-
- //
- // Get the current request (for current core)
- //
- CurrentRequest = &g_LbrRequestState[KeGetCurrentProcessorNumberEx(NULL)];
-
- //
- // Enable LBR on all cores from VMX-root mode by VMCALL
- //
-
- // LbrStartLbr(CurrentRequest, TRUE, TRUE);
- HyperTraceExamplePerformLbrTrace(TRUE, TRUE);
-
- //
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
-
- return TRUE;
-}
-
-/**
- * @brief Routines to enable LBR on all cores
- *
- * @return VOID
- */
-VOID
-BroadcastEnableLbrOnAllCores()
-{
- //
- // Broadcast to all cores
- //
- KeGenericCallDpc(DpcRoutineEnableLbr, NULL);
-}
-
-/**
- * @brief Broadcast disabling LBR
- *
- * @param Dpc
- * @param DeferredContext
- * @param SystemArgument1
- * @param SystemArgument2
- * @return BOOLEAN
- */
-BOOLEAN
-DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
-{
- LBR_IOCTL_REQUEST * CurrentRequest;
-
- UNREFERENCED_PARAMETER(Dpc);
- UNREFERENCED_PARAMETER(DeferredContext);
-
- //
- // Get the current request (for current core)
- //
- CurrentRequest = &g_LbrRequestState[KeGetCurrentProcessorNumberEx(NULL)];
-
- //
- // Disable LBR on all cores from VMX-root mode by VMCALL
- //
- LbrStopLbr(CurrentRequest, TRUE, TRUE);
-
- //
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
-
- return TRUE;
-}
-
-/**
- * @brief Routines to disable LBR on all cores
- *
- * @return VOID
- */
-VOID
-BroadcastDisableLbrOnAllCores()
-{
- //
- // Broadcast to all cores
- //
- KeGenericCallDpc(DpcRoutineDisableLbr, NULL);
-}
-
/**
* @brief Enable LBR tracing for HyperTrace
*
diff --git a/hyperdbg/hypertrace/header/Broadcast.h b/hyperdbg/hypertrace/header/Broadcast.h
new file mode 100644
index 00000000..e73850ba
--- /dev/null
+++ b/hyperdbg/hypertrace/header/Broadcast.h
@@ -0,0 +1,23 @@
+
+/**
+ * @file Broadcast.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Headers for broadcasting functions
+ * @details
+ * @version 0.19
+ * @date 2026-04-19
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+VOID
+BroadcastEnableLbrOnAllCores();
+
+VOID
+BroadcastDisableLbrOnAllCores();
diff --git a/hyperdbg/hypertrace/header/Dpc.h b/hyperdbg/hypertrace/header/Dpc.h
index 5362e006..46b6d58b 100644
--- a/hyperdbg/hypertrace/header/Dpc.h
+++ b/hyperdbg/hypertrace/header/Dpc.h
@@ -4,8 +4,8 @@
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Definition for Windows DPC functions
* @details
- * @version 0.1
- * @date 2020-04-10
+ * @version 0.19
+ * @date 2026-04-19
*
* @copyright This project is released under the GNU Public License v3.
*
diff --git a/hyperdbg/hypertrace/header/DpcRoutines.h b/hyperdbg/hypertrace/header/DpcRoutines.h
new file mode 100644
index 00000000..814847f2
--- /dev/null
+++ b/hyperdbg/hypertrace/header/DpcRoutines.h
@@ -0,0 +1,23 @@
+
+/**
+ * @file DpcRoutines.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Definition for DPC functions
+ * @details
+ * @version 0.19
+ * @date 2026-04-19
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+BOOLEAN
+DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+
+BOOLEAN
+DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
diff --git a/hyperdbg/hypertrace/header/GlobalVariables.h b/hyperdbg/hypertrace/header/GlobalVariables.h
new file mode 100644
index 00000000..ec46782f
--- /dev/null
+++ b/hyperdbg/hypertrace/header/GlobalVariables.h
@@ -0,0 +1,35 @@
+
+/**
+ * @file GlobalVariables.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Definition for global variables
+ * @details
+ * @version 0.19
+ * @date 2026-04-19
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Global Variables //
+//////////////////////////////////////////////////
+
+/**
+ * @brief The flag indicating whether the hypertrace module callbacks is initialized or not
+ *
+ */
+BOOLEAN g_HyperTraceCallbacksInitialized;
+
+/**
+ * @brief The flag indicating whether the hypertrace LBR tracing is initialized or not
+ *
+ */
+BOOLEAN g_LastBranchRecordEnabled;
+
+/**
+ * @brief Core specific state
+ *
+ */
+LBR_IOCTL_REQUEST * g_LbrRequestState;
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 3f24c392..9dba8f90 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -43,9 +43,11 @@
#include "ia32-doc/out/ia32.h"
//
-// DPC headers
+// DPC and broadcasting function headers
//
#include "Dpc.h"
+#include "DpcRoutines.h"
+#include "Broadcast.h"
//
// Unload function (to be called when the driver is unloaded)
@@ -93,3 +95,8 @@
// Export functions
//
#include "SDK/imports/kernel/HyperDbgHyperTrace.h"
+
+//
+// Global variables
+//
+#include "GlobalVariables.h"
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index a966c738..7d9ec5e4 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -103,6 +103,8 @@
+
+
@@ -112,7 +114,10 @@
+
+
+
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
index 8a60127e..79fc73b9 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj.filters
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -41,6 +41,12 @@
code
+
+ code
+
+
+ code
+
@@ -70,5 +76,14 @@
header
+
+ header
+
+
+ header
+
+
+ header
+
\ No newline at end of file
From 111bead68dab2c9d800a5102afe7ea29d3ed1f56 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 19 Apr 2026 20:08:47 +0200
Subject: [PATCH 122/323] check for hypervisor support of load and save VMCS
exit and entry controls
---
hyperdbg/hyperhv/code/interface/Export.c | 11 +++++
hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 48 +++++++++++++++++++
hyperdbg/hyperhv/code/vmm/vmx/Vmx.c | 6 +--
hyperdbg/hyperhv/header/vmm/vmx/Hv.h | 8 ++++
hyperdbg/hyperkd/code/driver/Loader.c | 9 ++--
hyperdbg/hypertrace/code/Tracing.c | 12 +++++
hyperdbg/include/SDK/headers/ErrorCodes.h | 6 +++
.../SDK/imports/kernel/HyperDbgVmmImports.h | 3 ++
hyperdbg/include/SDK/modules/HyperTrace.h | 15 ++++--
.../code/debugger/core/debugger.cpp | 5 ++
10 files changed, 111 insertions(+), 12 deletions(-)
diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c
index eb9a4071..f2d89b43 100644
--- a/hyperdbg/hyperhv/code/interface/Export.c
+++ b/hyperdbg/hyperhv/code/interface/Export.c
@@ -412,6 +412,17 @@ VmFuncGetDebugctlVmcallOnTargetCore()
return CrossVmcallGetDebugctlVmcallOnTargetCore();
}
+/**
+ * @brief Check if CPU support save and load debug controls on exit and load entries
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+VmFuncCheckCpuSupportForSaveAndLoadDebugControls()
+{
+ return HvCheckCpuSupportForSaveAndLoadDebugControls();
+}
+
/**
* @brief Set the guest state of IA32_DEBUGCTL
* @param Value
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
index c7c9035a..1cd2299e 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
@@ -1540,6 +1540,54 @@ HvSetDebugctl(UINT64 Value)
VmxVmwrite64(VMCS_GUEST_DEBUGCTL_HIGH, Value >> 32);
}
+/**
+ * @brief Check if CPU support save and load debug controls on exit and load entries
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HvCheckCpuSupportForSaveAndLoadDebugControls()
+{
+ IA32_VMX_BASIC_REGISTER VmxBasicMsr = {0};
+
+ //
+ // Reading IA32_VMX_BASIC_MSR
+ //
+ VmxBasicMsr.AsUInt = __readmsr(IA32_VMX_BASIC);
+
+ //
+ // Read 1-settings of save debug controls (exit controls)
+ //
+ UINT32 ExitCtls = HvAdjustControls(
+ IA32_VMX_EXIT_CTLS_SAVE_DEBUG_CONTROLS_FLAG,
+ VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS);
+
+ //
+ // Read 1-settings of load debug controls (entry controls)
+ //
+ UINT32 EntryCtls = HvAdjustControls(
+ IA32_VMX_ENTRY_CTLS_LOAD_DEBUG_CONTROLS_FLAG,
+ VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS);
+
+ //
+ // Check if entry and exit controls are supported on this system
+ //
+ if (ExitCtls != NULL_ZERO && EntryCtls != NULL_ZERO)
+ {
+ //
+ // Supported
+ //
+ return TRUE;
+ }
+ else
+ {
+ //
+ // Not supported
+ //
+ return FALSE;
+ }
+}
+
/**
* @brief Set the guest state of DR7
* @param Value The new value for DR7
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
index ae6b4a5c..6053f9d0 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
@@ -908,15 +908,13 @@ VmxSetupVmcs(VIRTUAL_MACHINE_STATE * VCpu, PVOID GuestStack)
VmxVmwrite64(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS,
HvAdjustControls(
IA32_VMX_EXIT_CTLS_HOST_ADDRESS_SPACE_SIZE_FLAG |
- IA32_VMX_EXIT_CTLS_LOAD_IA32_CET_STATE_FLAG |
- IA32_VMX_EXIT_CTLS_SAVE_DEBUG_CONTROLS_FLAG,
+ IA32_VMX_EXIT_CTLS_LOAD_IA32_CET_STATE_FLAG,
VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS));
VmxVmwrite64(VMCS_CTRL_VMENTRY_CONTROLS,
HvAdjustControls(
IA32_VMX_ENTRY_CTLS_IA32E_MODE_GUEST_FLAG |
- IA32_VMX_ENTRY_CTLS_LOAD_CET_STATE_FLAG |
- IA32_VMX_ENTRY_CTLS_LOAD_DEBUG_CONTROLS_FLAG,
+ IA32_VMX_ENTRY_CTLS_LOAD_CET_STATE_FLAG,
VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS));
VmxVmwrite64(VMCS_CTRL_CR0_GUEST_HOST_MASK, 0);
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
index 49a28e0e..60a7664a 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
@@ -476,6 +476,14 @@ HvGetAndStoreDebugctl(UINT64 * StoreDebugctl);
VOID
HvSetDebugctl(UINT64 Value);
+/**
+ * @brief Check if CPU support save and load debug controls on exit and load entries
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HvCheckCpuSupportForSaveAndLoadDebugControls();
+
/**
* @brief Set the guest state of DR7
* @param Value The new value for DR7
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index c3678e07..9470d8d0 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -36,10 +36,11 @@ LoaderInitHyperTrace()
//
// Fill the callbacks for using hyperhv in hypertrace
//
- HyperTraceCallbacks.VmFuncGetDebugctl = VmFuncGetDebugctl;
- HyperTraceCallbacks.VmFuncGetDebugctlVmcallOnTargetCore = VmFuncGetDebugctlVmcallOnTargetCore;
- HyperTraceCallbacks.VmFuncSetDebugctl = VmFuncSetDebugctl;
- HyperTraceCallbacks.VmFuncSetDebugctlVmcallOnTargetCore = VmFuncSetDebugctlVmcallOnTargetCore;
+ HyperTraceCallbacks.VmFuncGetDebugctl = VmFuncGetDebugctl;
+ HyperTraceCallbacks.VmFuncGetDebugctlVmcallOnTargetCore = VmFuncGetDebugctlVmcallOnTargetCore;
+ HyperTraceCallbacks.VmFuncSetDebugctl = VmFuncSetDebugctl;
+ HyperTraceCallbacks.VmFuncSetDebugctlVmcallOnTargetCore = VmFuncSetDebugctlVmcallOnTargetCore;
+ HyperTraceCallbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls = VmFuncCheckCpuSupportForSaveAndLoadDebugControls;
//
// Memory callbacks
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 4121c4f4..08c68cad 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -202,12 +202,24 @@ HyperTraceEnableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
return FALSE;
}
+ //
+ // Check LBR support on CPU
+ //
if (!LbrCheck())
{
HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_NOT_SUPPORTED;
return FALSE;
}
+ //
+ // Check VMCS support for LBR
+ //
+ if (!g_Callbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls())
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_DEBUGCTL_NOT_SUPPORTED_ON_VMCS;
+ return FALSE;
+ }
+
//
// Enabling LBR
//
diff --git a/hyperdbg/include/SDK/headers/ErrorCodes.h b/hyperdbg/include/SDK/headers/ErrorCodes.h
index 9990fbc9..d2fc07ae 100644
--- a/hyperdbg/include/SDK/headers/ErrorCodes.h
+++ b/hyperdbg/include/SDK/headers/ErrorCodes.h
@@ -611,6 +611,12 @@
*/
#define DEBUGGER_ERROR_LBR_NOT_SUPPORTED 0xc000005e
+/**
+ * @brief error, Dubugctl not supported on VMCS
+ *
+ */
+#define DEBUGGER_ERROR_DEBUGCTL_NOT_SUPPORTED_ON_VMCS 0xc000005f
+
//
// WHEN YOU ADD ANYTHING TO THIS LIST OF ERRORS, THEN
// MAKE SURE TO ADD AN ERROR MESSAGE TO ShowErrorMessage(UINT32 Error)
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
index 3da4bfbc..116b2ec0 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
@@ -229,6 +229,9 @@ VmFuncVmxGetCurrentExecutionMode();
IMPORT_EXPORT_VMM BOOLEAN
VmFuncQueryModeExecTrap();
+IMPORT_EXPORT_VMM BOOLEAN
+VmFuncCheckCpuSupportForSaveAndLoadDebugControls();
+
IMPORT_EXPORT_VMM INT32
VmFuncVmxCompatibleStrcmp(const CHAR * Address1, const CHAR * Address2);
diff --git a/hyperdbg/include/SDK/modules/HyperTrace.h b/hyperdbg/include/SDK/modules/HyperTrace.h
index f65782f3..2b145e90 100644
--- a/hyperdbg/include/SDK/modules/HyperTrace.h
+++ b/hyperdbg/include/SDK/modules/HyperTrace.h
@@ -70,6 +70,12 @@ typedef VOID (*VM_FUNC_SET_DEBUGCTL)(UINT64 Value);
*/
typedef VOID (*VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE)(UINT64 Value);
+/**
+ * @brief A function that checks whether IA32_DEBUGCTL can be used in load and save of exit and entry controls
+ *
+ */
+typedef BOOLEAN (*VM_FUNC_CHECK_CPU_SUPPORT_FOR_SAVE_AND_LOAD_DEBUG_CONTROLS)();
+
/**
* @brief A function that checks the validity and safety of the target address
*
@@ -115,10 +121,11 @@ typedef struct _HYPERTRACE_CALLBACKS
//
// *** Hypervisor (Hyperhv) callbacks ***
//
- VM_FUNC_GET_DEBUGCTL VmFuncGetDebugctl;
- VM_FUNC_GET_DEBUGCTL_VMCALL_ON_TARGET_CORE VmFuncGetDebugctlVmcallOnTargetCore;
- VM_FUNC_SET_DEBUGCTL VmFuncSetDebugctl;
- VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE VmFuncSetDebugctlVmcallOnTargetCore;
+ VM_FUNC_GET_DEBUGCTL VmFuncGetDebugctl;
+ VM_FUNC_GET_DEBUGCTL_VMCALL_ON_TARGET_CORE VmFuncGetDebugctlVmcallOnTargetCore;
+ VM_FUNC_SET_DEBUGCTL VmFuncSetDebugctl;
+ VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE VmFuncSetDebugctlVmcallOnTargetCore;
+ VM_FUNC_CHECK_CPU_SUPPORT_FOR_SAVE_AND_LOAD_DEBUG_CONTROLS VmFuncCheckCpuSupportForSaveAndLoadDebugControls;
//
// *** HYPERTRACE callbacks ***
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index 37979cd5..0fea3872 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -594,6 +594,11 @@ ShowErrorMessage(UINT32 Error)
Error);
break;
+ case DEBUGGER_ERROR_DEBUGCTL_NOT_SUPPORTED_ON_VMCS:
+ ShowMessages("err, Debugctl is not supported on VMCS (%x)\n",
+ Error);
+ break;
+
default:
ShowMessages("err, error not found (%x)\n",
Error);
From efded3790b97e05f3e3173fd9dc5d9f7c2d59fe5 Mon Sep 17 00:00:00 2001
From: sina
Date: Wed, 22 Apr 2026 16:27:20 +0200
Subject: [PATCH 123/323] protect load and save vm-entry and vm-exit controls
from setting and unsetting in different routines
---
hyperdbg/hyperhv/code/interface/Export.c | 12 +-
hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 48 +------
hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c | 134 ++++++++++++++++++
hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c | 8 +-
hyperdbg/hyperhv/header/vmm/vmx/Hv.h | 6 +-
hyperdbg/hyperhv/header/vmm/vmx/ProtectedHv.h | 10 ++
.../code/debugger/events/Termination.c | 49 +++++++
.../hyperkd/code/debugger/objects/Thread.c | 25 +++-
.../hyperkd/header/debugger/objects/Thread.h | 3 +
hyperdbg/hypertrace/code/Tracing.c | 15 ++
hyperdbg/include/SDK/headers/Events.h | 2 +
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 3 +
.../SDK/imports/kernel/HyperDbgVmmImports.h | 4 +-
13 files changed, 261 insertions(+), 58 deletions(-)
diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c
index f2d89b43..97e67036 100644
--- a/hyperdbg/hyperhv/code/interface/Export.c
+++ b/hyperdbg/hyperhv/code/interface/Export.c
@@ -115,25 +115,29 @@ VmFuncSetRflagTrapFlag(BOOLEAN Set)
/**
* @brief Set LOAD DEBUG CONTROLS on Vm-entry controls
*
+ * @param CoreId target core id
* @param Set Set or unset
+ *
* @return VOID
*/
VOID
-VmFuncSetLoadDebugControls(BOOLEAN Set)
+VmFuncSetLoadDebugControls(UINT32 CoreId, BOOLEAN Set)
{
- HvSetLoadDebugControls(Set);
+ HvSetLoadDebugControls(&g_GuestState[CoreId], Set);
}
/**
* @brief Set SAVE DEBUG CONTROLS on Vm-exit controls
*
+ * @param CoreId target core id
* @param Set Set or unset
+ *
* @return VOID
*/
VOID
-VmFuncSetSaveDebugControls(BOOLEAN Set)
+VmFuncSetSaveDebugControls(UINT32 CoreId, BOOLEAN Set)
{
- HvSetSaveDebugControls(Set);
+ HvSetSaveDebugControls(&g_GuestState[CoreId], Set);
}
/**
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
index 1cd2299e..33583ccb 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
@@ -391,63 +391,27 @@ HvSetRflagTrapFlag(BOOLEAN Set)
/**
* @brief Set LOAD DEBUG CONTROLS on Vm-entry controls
*
+ * @param VCpu
* @param Set Set or unset
* @return VOID
*/
VOID
-HvSetLoadDebugControls(BOOLEAN Set)
+HvSetLoadDebugControls(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set)
{
- UINT32 VmentryControls = 0;
-
- //
- // Read the previous flags
- //
- VmxVmread32P(VMCS_CTRL_VMENTRY_CONTROLS, &VmentryControls);
-
- if (Set)
- {
- VmentryControls |= IA32_VMX_ENTRY_CTLS_LOAD_DEBUG_CONTROLS_FLAG;
- }
- else
- {
- VmentryControls &= ~IA32_VMX_ENTRY_CTLS_LOAD_DEBUG_CONTROLS_FLAG;
- }
-
- //
- // Set the new value
- //
- VmxVmwrite64(VMCS_CTRL_VMENTRY_CONTROLS, VmentryControls);
+ ProtectedHvSetLoadDebugControls(VCpu, Set);
}
/**
* @brief Set SAVE DEBUG CONTROLS on Vm-exit controls
*
+ * @param VCpu
* @param Set Set or unset
* @return VOID
*/
VOID
-HvSetSaveDebugControls(BOOLEAN Set)
+HvSetSaveDebugControls(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set)
{
- UINT32 VmexitControls = 0;
-
- //
- // Read the previous flags
- //
- VmxVmread32P(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, &VmexitControls);
-
- if (Set)
- {
- VmexitControls |= IA32_VMX_EXIT_CTLS_SAVE_DEBUG_CONTROLS_FLAG;
- }
- else
- {
- VmexitControls &= ~IA32_VMX_EXIT_CTLS_SAVE_DEBUG_CONTROLS_FLAG;
- }
-
- //
- // Set the new value
- //
- VmxVmwrite64(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, VmexitControls);
+ ProtectedHvSetSaveDebugControls(VCpu, Set);
}
/**
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c b/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c
index 07882bf5..efb8721b 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c
@@ -526,6 +526,140 @@ ProtectedHvSetMovToCr3Vmexit(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set, PROTECTE
VmxVmwrite64(VMCS_CTRL_PROCESSOR_BASED_VM_EXECUTION_CONTROLS, CpuBasedVmExecControls);
}
+/**
+ * @brief Set LOAD DEBUG CONTROLS on Vm-entry controls
+ *
+ * @param VCpu
+ * @param Set Set or unset
+ * @param PassOver
+ *
+ * @return VOID
+ */
+VOID
+ProtectedHvSetLoadDebugControlsIntegrityCheck(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set, PROTECTED_HV_RESOURCES_PASSING_OVERS PassOver)
+{
+ UINT32 VmentryControls = 0;
+
+ //
+ // The protected checks are only performed if the "Set" is "FALSE",
+ // because if sb wants to set it to "TRUE" then we're no need to
+ // worry about it as it remains enabled
+ //
+ if (Set == FALSE)
+ {
+ //
+ // Check the top-level driver's state
+ //
+ if (VmmCallbackQueryTerminateProtectedResource(VCpu->CoreId,
+ PROTECTED_HV_RESOURCES_SAVE_AND_LOAD_DEBUG_CONTROLS,
+ NULL,
+ PassOver))
+ {
+ return;
+ }
+ }
+
+ //
+ // Read the previous flags
+ //
+ VmxVmread32P(VMCS_CTRL_VMENTRY_CONTROLS, &VmentryControls);
+
+ if (Set)
+ {
+ VmentryControls |= IA32_VMX_ENTRY_CTLS_LOAD_DEBUG_CONTROLS_FLAG;
+ }
+ else
+ {
+ VmentryControls &= ~IA32_VMX_ENTRY_CTLS_LOAD_DEBUG_CONTROLS_FLAG;
+ }
+
+ //
+ // Set the new value
+ //
+ VmxVmwrite64(VMCS_CTRL_VMENTRY_CONTROLS, VmentryControls);
+}
+
+/**
+ * @brief Set SAVE DEBUG CONTROLS on Vm-exit controls
+ *
+ * @param VCpu
+ * @param Set Set or unset
+ * @param PassOver
+ *
+ * @return VOID
+ */
+VOID
+ProtectedHvSetSaveDebugControlsIntegrityCheck(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set, PROTECTED_HV_RESOURCES_PASSING_OVERS PassOver)
+{
+ UINT32 VmexitControls = 0;
+
+ //
+ // The protected checks are only performed if the "Set" is "FALSE",
+ // because if sb wants to set it to "TRUE" then we're no need to
+ // worry about it as it remains enabled
+ //
+ if (Set == FALSE)
+ {
+ //
+ // Check the top-level driver's state
+ //
+ if (VmmCallbackQueryTerminateProtectedResource(VCpu->CoreId,
+ PROTECTED_HV_RESOURCES_SAVE_AND_LOAD_DEBUG_CONTROLS,
+ NULL,
+ PassOver))
+ {
+ return;
+ }
+ }
+
+ //
+ // Read the previous flags
+ //
+ VmxVmread32P(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, &VmexitControls);
+
+ if (Set)
+ {
+ VmexitControls |= IA32_VMX_EXIT_CTLS_SAVE_DEBUG_CONTROLS_FLAG;
+ }
+ else
+ {
+ VmexitControls &= ~IA32_VMX_EXIT_CTLS_SAVE_DEBUG_CONTROLS_FLAG;
+ }
+
+ //
+ // Set the new value
+ //
+ VmxVmwrite64(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, VmexitControls);
+}
+
+/**
+ * @brief Set LOAD DEBUG CONTROLS on VM-entry controls
+ *
+ * @param VCpu
+ * @param Set Set or unset
+ *
+ * @return VOID
+ */
+VOID
+ProtectedHvSetSaveDebugControls(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set)
+{
+ ProtectedHvSetSaveDebugControlsIntegrityCheck(VCpu, Set, PASSING_OVER_NONE);
+}
+
+/**
+ * @brief Set SAVE DEBUG CONTROLS on VM-exit controls
+ *
+ * @param VCpu
+ * @param Set Set or unset
+ *
+ * @return VOID
+ */
+VOID
+ProtectedHvSetLoadDebugControls(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set)
+{
+ ProtectedHvSetLoadDebugControlsIntegrityCheck(VCpu, Set, PASSING_OVER_NONE);
+}
+
/**
* @brief Set the RDTSC/P Exiting
*
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
index dedc6230..4fe32ed9 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
@@ -365,25 +365,25 @@ VmxVmcallHandler(VIRTUAL_MACHINE_STATE * VCpu,
}
case VMCALL_SET_VM_ENTRY_LOAD_DEBUG_CONTROLS:
{
- HvSetLoadDebugControls(TRUE);
+ HvSetLoadDebugControls(VCpu, TRUE);
VmcallStatus = STATUS_SUCCESS;
break;
}
case VMCALL_UNSET_VM_ENTRY_LOAD_DEBUG_CONTROLS:
{
- HvSetLoadDebugControls(FALSE);
+ HvSetLoadDebugControls(VCpu, FALSE);
VmcallStatus = STATUS_SUCCESS;
break;
}
case VMCALL_SET_VM_EXIT_SAVE_DEBUG_CONTROLS:
{
- HvSetSaveDebugControls(TRUE);
+ HvSetSaveDebugControls(VCpu, TRUE);
VmcallStatus = STATUS_SUCCESS;
break;
}
case VMCALL_UNSET_VM_EXIT_SAVE_DEBUG_CONTROLS:
{
- HvSetSaveDebugControls(FALSE);
+ HvSetSaveDebugControls(VCpu, FALSE);
VmcallStatus = STATUS_SUCCESS;
break;
}
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
index 60a7664a..95fa4413 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
@@ -118,20 +118,22 @@ HvSetRflagTrapFlag(BOOLEAN Set);
/**
* @brief Set LOAD DEBUG CONTROLS on Vm-entry controls
*
+ * @param VCpu
* @param Set Set or unset
* @return VOID
*/
VOID
-HvSetLoadDebugControls(BOOLEAN Set);
+HvSetLoadDebugControls(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set);
/**
* @brief Set SAVE DEBUG CONTROLS on Vm-exit controls
*
+ * @param VCpu
* @param Set Set or unset
* @return VOID
*/
VOID
-HvSetSaveDebugControls(BOOLEAN Set);
+HvSetSaveDebugControls(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set);
/**
* @brief Reset GDTR/IDTR and other old when you do vmxoff as the patchguard
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/ProtectedHv.h b/hyperdbg/hyperhv/header/vmm/vmx/ProtectedHv.h
index aeb1f8f0..9f8d669f 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/ProtectedHv.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/ProtectedHv.h
@@ -84,3 +84,13 @@ ProtectedHvSetMov2CrExiting(BOOLEAN Set, UINT64 ControlRegister, UINT64 MaskRegi
VOID
ProtectedHvSetMov2Cr3Exiting(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set);
+
+//
+// Save and load state on vm-exit and vm-entry
+//
+
+VOID
+ProtectedHvSetSaveDebugControls(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set);
+
+VOID
+ProtectedHvSetLoadDebugControls(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set);
diff --git a/hyperdbg/hyperkd/code/debugger/events/Termination.c b/hyperdbg/hyperkd/code/debugger/events/Termination.c
index a6809784..122b455d 100644
--- a/hyperdbg/hyperkd/code/debugger/events/Termination.c
+++ b/hyperdbg/hyperkd/code/debugger/events/Termination.c
@@ -1580,6 +1580,49 @@ TerminateQueryDebuggerResourceMovToCr3Exiting(UINT32
return FALSE;
}
+/**
+ * @brief Check and modify state of save and load debug controls (DR7 and IA32_DEBUGCTLS)
+ * on exit and entry VM controls
+ *
+ * @param CoreId Core specific resource
+ * @param PassOver The pass over option
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+TerminateQueryDebuggerResourceSaveAndLoadDebugControls(UINT32 CoreId,
+ PROTECTED_HV_RESOURCES_PASSING_OVERS PassOver)
+{
+ UNREFERENCED_PARAMETER(PassOver);
+
+ //
+ // Check if debug register load and save on entry and exit controls are needed for thread interception
+ //
+ if (ThreadQueryDebugRegisterInterceptionStateByCoreId(CoreId))
+ {
+ //
+ // We should ignore it as we want this to interception of thread to work
+ //
+ return TRUE;
+ }
+
+ //
+ // Query the hypertrace project about this controls since there might be using this load and save controls
+ //
+ if (HyperTraceQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(CoreId))
+ {
+ //
+ // We should ignore it since LBR feature of hypertrace is still using it
+ //
+ return TRUE;
+ }
+
+ //
+ // Do not terminate
+ //
+ return FALSE;
+}
+
/**
* @brief Remove single hook from the hooked pages list and invalidate TLB
* @details Should be called from vmx root-mode
@@ -1755,6 +1798,12 @@ TerminateQueryDebuggerResource(UINT32 CoreId,
break;
+ case PROTECTED_HV_RESOURCES_SAVE_AND_LOAD_DEBUG_CONTROLS:
+
+ Result = TerminateQueryDebuggerResourceSaveAndLoadDebugControls(CoreId, PassOver);
+
+ break;
+
default:
Result = FALSE;
diff --git a/hyperdbg/hyperkd/code/debugger/objects/Thread.c b/hyperdbg/hyperkd/code/debugger/objects/Thread.c
index f46683df..57386d30 100644
--- a/hyperdbg/hyperkd/code/debugger/objects/Thread.c
+++ b/hyperdbg/hyperkd/code/debugger/objects/Thread.c
@@ -467,8 +467,8 @@ ThreadDetectChangeByDebugRegisterOnGs(PROCESSOR_DEBUGGING_STATE * DbgState,
// want dr7 and dr0 remove their configuration on vm-exits and also
// we'll be able to change the dr7 of the guest on VMCS
//
- VmFuncSetLoadDebugControls(TRUE);
- VmFuncSetSaveDebugControls(TRUE);
+ VmFuncSetLoadDebugControls(DbgState->CoreId, TRUE);
+ VmFuncSetSaveDebugControls(DbgState->CoreId, TRUE);
//
// Intercept #DBs by changing exception bitmap (one core)
@@ -528,8 +528,8 @@ ThreadDetectChangeByDebugRegisterOnGs(PROCESSOR_DEBUGGING_STATE * DbgState,
// Disable load debug controls and save debug controls because
// no longer needed
//
- VmFuncSetLoadDebugControls(FALSE);
- VmFuncSetSaveDebugControls(FALSE);
+ VmFuncSetLoadDebugControls(DbgState->CoreId, FALSE);
+ VmFuncSetSaveDebugControls(DbgState->CoreId, FALSE);
//
// Disable intercepting #DBs
@@ -543,6 +543,23 @@ ThreadDetectChangeByDebugRegisterOnGs(PROCESSOR_DEBUGGING_STATE * DbgState,
}
}
+/**
+ * @brief Query for deubg register interception state
+ * @param CoreId
+ *
+ * @return BOOLEAN whether it's activated or not
+ */
+BOOLEAN
+ThreadQueryDebugRegisterInterceptionStateByCoreId(UINT32 CoreId)
+{
+ BOOLEAN Result = FALSE;
+ PROCESSOR_DEBUGGING_STATE * DbgState = &g_DbgState[CoreId];
+
+ Result = DbgState->ThreadOrProcessTracingDetails.DebugRegisterInterceptionState;
+
+ return Result;
+}
+
/**
* @brief Enable or disable the thread change monitoring detection
* on the running core based on intercepting clock interrupts
diff --git a/hyperdbg/hyperkd/header/debugger/objects/Thread.h b/hyperdbg/hyperkd/header/debugger/objects/Thread.h
index 1133e68d..b68e6fc9 100644
--- a/hyperdbg/hyperkd/header/debugger/objects/Thread.h
+++ b/hyperdbg/hyperkd/header/debugger/objects/Thread.h
@@ -38,3 +38,6 @@ ThreadQueryList(PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS DebuggerUsermodeProc
BOOLEAN
ThreadQueryDetails(PDEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET GetInformationThreadRequest);
+
+BOOLEAN
+ThreadQueryDebugRegisterInterceptionStateByCoreId(UINT32 CoreId);
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 08c68cad..ed194041 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -177,6 +177,21 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
return TRUE;
}
+/**
+ * @brief Query the state of LBR save and load VM exit and entry controls
+ *
+ * @param CoreId
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId)
+{
+ UNREFERENCED_PARAMETER(CoreId); // Right now there is no core specifc controls for LBR
+
+ return g_LastBranchRecordEnabled;
+}
+
/**
* @brief Enable LBR tracing for HyperTrace
*
diff --git a/hyperdbg/include/SDK/headers/Events.h b/hyperdbg/include/SDK/headers/Events.h
index f69a85ff..c940bf8c 100644
--- a/hyperdbg/include/SDK/headers/Events.h
+++ b/hyperdbg/include/SDK/headers/Events.h
@@ -340,6 +340,8 @@ typedef enum _PROTECTED_HV_RESOURCES_TYPE
PROTECTED_HV_RESOURCES_MOV_TO_CR3_EXITING,
+ PROTECTED_HV_RESOURCES_SAVE_AND_LOAD_DEBUG_CONTROLS,
+
} PROTECTED_HV_RESOURCES_TYPE;
//////////////////////////////////////////////////
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 28396f23..ce27579d 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -58,3 +58,6 @@ HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTraceQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId);
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
index 116b2ec0..71ff8ab3 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
@@ -51,10 +51,10 @@ IMPORT_EXPORT_VMM VOID
VmFuncUnRegisterMtfBreak(UINT32 CoreId);
IMPORT_EXPORT_VMM VOID
-VmFuncSetLoadDebugControls(BOOLEAN Set);
+VmFuncSetLoadDebugControls(UINT32 CoreId, BOOLEAN Set);
IMPORT_EXPORT_VMM VOID
-VmFuncSetSaveDebugControls(BOOLEAN Set);
+VmFuncSetSaveDebugControls(UINT32 CoreId, BOOLEAN Set);
IMPORT_EXPORT_VMM VOID
VmFuncSetPmcVmexit(BOOLEAN Set);
From f192c194df322bc977a8cdb5ad97ae04108687e1 Mon Sep 17 00:00:00 2001
From: sina
Date: Wed, 22 Apr 2026 17:43:23 +0200
Subject: [PATCH 124/323] initialize the LBR based on hypervisor environment
checks
---
.../hyperdbg_driver/code/driver/Ioctl.c | 2 +-
.../hyperdbg_driver/code/driver/Loader.c | 4 +-
.../hyperdbg_driver/header/misc/Global.h | 2 +-
.../hyperkd/code/debugger/core/Debugger.c | 3 +-
hyperdbg/hyperkd/code/driver/Ioctl.c | 6 +--
hyperdbg/hyperkd/code/driver/Loader.c | 12 ++++--
hyperdbg/hyperkd/header/driver/Loader.h | 2 +-
hyperdbg/hyperkd/header/globals/Global.h | 2 +-
hyperdbg/hypertrace/code/DpcRoutines.c | 38 ++++++++++++++++++-
hyperdbg/hypertrace/code/Tracing.c | 15 ++++++--
hyperdbg/hypertrace/header/GlobalVariables.h | 6 +++
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 2 +-
hyperdbg/include/SDK/modules/HyperTrace.h | 14 +++++++
13 files changed, 88 insertions(+), 20 deletions(-)
diff --git a/examples/kernel/hyperdbg_driver/code/driver/Ioctl.c b/examples/kernel/hyperdbg_driver/code/driver/Ioctl.c
index 7d771f8d..ceb117c0 100644
--- a/examples/kernel/hyperdbg_driver/code/driver/Ioctl.c
+++ b/examples/kernel/hyperdbg_driver/code/driver/Ioctl.c
@@ -36,7 +36,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
PoolManagerCheckAndPerformAllocationAndDeallocation();
- if (g_AllowIOCTLFromUsermode)
+ if (g_AllowIoctlFromUsermode)
{
IrpStack = IoGetCurrentIrpStackLocation(Irp);
diff --git a/examples/kernel/hyperdbg_driver/code/driver/Loader.c b/examples/kernel/hyperdbg_driver/code/driver/Loader.c
index a84a8f63..4eaae9f8 100644
--- a/examples/kernel/hyperdbg_driver/code/driver/Loader.c
+++ b/examples/kernel/hyperdbg_driver/code/driver/Loader.c
@@ -24,7 +24,7 @@ LoaderInitVmmAndReversingMachine()
//
// Allow to server IOCTL
//
- g_AllowIOCTLFromUsermode = TRUE;
+ g_AllowIoctlFromUsermode = TRUE;
//
// Fill the callbacks for the message tracer
@@ -90,7 +90,7 @@ LoaderInitVmmAndReversingMachine()
//
// Not loaded
//
- g_AllowIOCTLFromUsermode = FALSE;
+ g_AllowIoctlFromUsermode = FALSE;
return FALSE;
}
diff --git a/examples/kernel/hyperdbg_driver/header/misc/Global.h b/examples/kernel/hyperdbg_driver/header/misc/Global.h
index 77cf5e59..7113ff2f 100644
--- a/examples/kernel/hyperdbg_driver/header/misc/Global.h
+++ b/examples/kernel/hyperdbg_driver/header/misc/Global.h
@@ -21,4 +21,4 @@ BOOLEAN g_HandleInUse;
* @brief Determines whether the clients are allowed to send IOCTL to the drive or not
*
*/
-BOOLEAN g_AllowIOCTLFromUsermode;
+BOOLEAN g_AllowIoctlFromUsermode;
diff --git a/hyperdbg/hyperkd/code/debugger/core/Debugger.c b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
index cd22fe78..2ffba449 100644
--- a/hyperdbg/hyperkd/code/debugger/core/Debugger.c
+++ b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
@@ -210,8 +210,9 @@ DebuggerInitialize()
//
// Initialize the HyperTrace (if supported by the processor)
+ // By default, the debugger module initialize it for a hypervisor environment
//
- LoaderInitHyperTrace();
+ LoaderInitHyperTrace(TRUE);
//
// Pre-allocate pools for possible EPT hooks
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index 66dae865..9963c36e 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -73,7 +73,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
PoolManagerCheckAndPerformAllocationAndDeallocation();
- if (g_AllowIOCTLFromUsermode)
+ if (g_AllowIoctlFromUsermode)
{
IrpStack = IoGetCurrentIrpStackLocation(Irp);
@@ -128,9 +128,9 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
case IOCTL_RETURN_IRP_PENDING_PACKETS_AND_DISALLOW_IOCTL:
//
- // Dis-allow new IOCTL
+ // Disallow new IOCTL
//
- g_AllowIOCTLFromUsermode = FALSE;
+ g_AllowIoctlFromUsermode = FALSE;
//
// Send an immediate message, and we're no longer get new IRP
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index 9470d8d0..7abfd5c7 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -13,10 +13,12 @@
/**
* @brief Initialize the hyper trace module
*
+ * @param InitForHypervisorEnvironment Whether the initialization is being done for hypervisor environment or not
+ *
* @return BOOLEAN
*/
BOOLEAN
-LoaderInitHyperTrace()
+LoaderInitHyperTrace(BOOLEAN InitForHypervisorEnvironment)
{
HYPERTRACE_CALLBACKS HyperTraceCallbacks = {0};
@@ -41,6 +43,8 @@ LoaderInitHyperTrace()
HyperTraceCallbacks.VmFuncSetDebugctl = VmFuncSetDebugctl;
HyperTraceCallbacks.VmFuncSetDebugctlVmcallOnTargetCore = VmFuncSetDebugctlVmcallOnTargetCore;
HyperTraceCallbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls = VmFuncCheckCpuSupportForSaveAndLoadDebugControls;
+ HyperTraceCallbacks.VmFuncSetLoadDebugControls = VmFuncSetLoadDebugControls;
+ HyperTraceCallbacks.VmFuncSetSaveDebugControls = VmFuncSetSaveDebugControls;
//
// Memory callbacks
@@ -57,7 +61,7 @@ LoaderInitHyperTrace()
//
// Initialize hypertrace module
//
- if (HyperTraceInitCallback(&HyperTraceCallbacks))
+ if (HyperTraceInitCallback(&HyperTraceCallbacks, InitForHypervisorEnvironment))
{
LogDebugInfo("HyperDbg's hypertrace loaded successfully");
return TRUE;
@@ -86,7 +90,7 @@ LoaderInitVmmAndDebugger()
//
// Allow to server IOCTL
//
- g_AllowIOCTLFromUsermode = TRUE;
+ g_AllowIoctlFromUsermode = TRUE;
//
// *** Fill the callbacks for the message tracer ***
@@ -175,7 +179,7 @@ LoaderInitVmmAndDebugger()
//
// Not loaded
//
- g_AllowIOCTLFromUsermode = FALSE;
+ g_AllowIoctlFromUsermode = FALSE;
return FALSE;
}
diff --git a/hyperdbg/hyperkd/header/driver/Loader.h b/hyperdbg/hyperkd/header/driver/Loader.h
index cb030d55..ee1f9d64 100644
--- a/hyperdbg/hyperkd/header/driver/Loader.h
+++ b/hyperdbg/hyperkd/header/driver/Loader.h
@@ -20,7 +20,7 @@ BOOLEAN
LoaderInitVmmAndDebugger();
BOOLEAN
-LoaderInitHyperTrace();
+LoaderInitHyperTrace(BOOLEAN InitForHypervisorEnvironment);
VOID
LoaderUninitializeLogTracer();
diff --git a/hyperdbg/hyperkd/header/globals/Global.h b/hyperdbg/hyperkd/header/globals/Global.h
index d887f0f6..6224d6c8 100644
--- a/hyperdbg/hyperkd/header/globals/Global.h
+++ b/hyperdbg/hyperkd/header/globals/Global.h
@@ -63,7 +63,7 @@ BOOLEAN g_HandleInUse;
* @brief Determines whether the clients are allowed to send IOCTL to the drive or not
*
*/
-BOOLEAN g_AllowIOCTLFromUsermode;
+BOOLEAN g_AllowIoctlFromUsermode;
/**
* @brief events list (for debugger)
diff --git a/hyperdbg/hypertrace/code/DpcRoutines.c b/hyperdbg/hypertrace/code/DpcRoutines.c
index c3d97e9d..cb2064b1 100644
--- a/hyperdbg/hypertrace/code/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/DpcRoutines.c
@@ -24,14 +24,31 @@ BOOLEAN
DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
{
LBR_IOCTL_REQUEST * CurrentRequest;
+ ULONG CurrentCore;
UNREFERENCED_PARAMETER(Dpc);
UNREFERENCED_PARAMETER(DeferredContext);
+ CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+
//
// Get the current request (for current core)
//
- CurrentRequest = &g_LbrRequestState[KeGetCurrentProcessorNumberEx(NULL)];
+ CurrentRequest = &g_LbrRequestState[CurrentCore];
+
+ //
+ // Check if the initialization is being done for hypervisor environment or not
+ // If it is, then we need to perform some additional steps to enable LBR in VMX
+ //
+ if (g_InitForHypervisorEnvironment)
+ {
+ //
+ // Perform VMX-root mode specific operations to enable load and save
+ // VM-exit and VM-entry controls for IA32_DEBUGCTL for LBR
+ //
+ g_Callbacks.VmFuncSetSaveDebugControls(CurrentCore, TRUE);
+ g_Callbacks.VmFuncSetLoadDebugControls(CurrentCore, TRUE);
+ }
//
// Enable LBR on all cores from VMX-root mode by VMCALL
@@ -66,14 +83,31 @@ BOOLEAN
DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
{
LBR_IOCTL_REQUEST * CurrentRequest;
+ ULONG CurrentCore;
UNREFERENCED_PARAMETER(Dpc);
UNREFERENCED_PARAMETER(DeferredContext);
+ CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+
//
// Get the current request (for current core)
//
- CurrentRequest = &g_LbrRequestState[KeGetCurrentProcessorNumberEx(NULL)];
+ CurrentRequest = &g_LbrRequestState[CurrentCore];
+
+ //
+ // Check if the initialization is being done for hypervisor environment or not
+ // If it is, then we need to perform some additional steps to enable LBR in VMX
+ //
+ if (g_InitForHypervisorEnvironment)
+ {
+ //
+ // Perform VMX-root mode specific operations to disable load and save
+ // VM-exit and VM-entry controls for IA32_DEBUGCTL for LBR
+ //
+ g_Callbacks.VmFuncSetSaveDebugControls(CurrentCore, FALSE);
+ g_Callbacks.VmFuncSetLoadDebugControls(CurrentCore, FALSE);
+ }
//
// Disable LBR on all cores from VMX-root mode by VMCALL
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index ed194041..18c3330c 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -1,6 +1,7 @@
/**
* @file Tracing.c
* @author Hari Mishal (harimishal6@gmail.com)
+ * @author Sina Karvandi (sina@hyperdbg.org)
* @brief Tracing routines for HyperTrace module
* @details
* @version 0.18
@@ -119,11 +120,14 @@ HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
* @details This only for callback initialization, not for LBR initialization
*
* @param HypertraceCallbacks
+ * @param InitForHypervisorEnvironment Whether the initialization is being done for hypervisor environment or not,
+ * it can be used to skip some of the initialization steps if it is not for hypervisor environment and behave differently based on that
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
+HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
+ BOOLEAN InitForHypervisorEnvironment)
{
ULONG ProcessorsCount;
@@ -164,6 +168,11 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks)
//
g_LbrRequestState = PlatformAllocateMemory(sizeof(LBR_IOCTL_REQUEST) * ProcessorsCount);
+ //
+ // Set the flag to indicate whether the initialization is being done for hypervisor environment or not
+ //
+ g_InitForHypervisorEnvironment = InitForHypervisorEnvironment;
+
//
// It is initialized, but LBR is disabled at this stage
//
@@ -227,9 +236,9 @@ HyperTraceEnableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
}
//
- // Check VMCS support for LBR
+ // Check VMCS support for LBR if the initialization is being done for hypervisor environment
//
- if (!g_Callbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls())
+ if (g_InitForHypervisorEnvironment && !g_Callbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls())
{
HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_DEBUGCTL_NOT_SUPPORTED_ON_VMCS;
return FALSE;
diff --git a/hyperdbg/hypertrace/header/GlobalVariables.h b/hyperdbg/hypertrace/header/GlobalVariables.h
index ec46782f..e992236d 100644
--- a/hyperdbg/hypertrace/header/GlobalVariables.h
+++ b/hyperdbg/hypertrace/header/GlobalVariables.h
@@ -22,6 +22,12 @@
*/
BOOLEAN g_HyperTraceCallbacksInitialized;
+/**
+ * @brief The flag indicating whether the initialization is being done for hypervisor environment or not
+ *
+ */
+BOOLEAN g_InitForHypervisorEnvironment;
+
/**
* @brief The flag indicating whether the hypertrace LBR tracing is initialized or not
*
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index ce27579d..cdc1413b 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -34,7 +34,7 @@ HyperTraceExamplePerformLbrTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVm
// Initialize the hypertrace module with the provided callbacks
//
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks);
+HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks, BOOLEAN InitForHypervisorEnvironment);
//
// Uninitialize the HyperTrace module
diff --git a/hyperdbg/include/SDK/modules/HyperTrace.h b/hyperdbg/include/SDK/modules/HyperTrace.h
index 2b145e90..c6bc19d7 100644
--- a/hyperdbg/include/SDK/modules/HyperTrace.h
+++ b/hyperdbg/include/SDK/modules/HyperTrace.h
@@ -76,6 +76,18 @@ typedef VOID (*VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE)(UINT64 Value);
*/
typedef BOOLEAN (*VM_FUNC_CHECK_CPU_SUPPORT_FOR_SAVE_AND_LOAD_DEBUG_CONTROLS)();
+/**
+ * @brief A function that sets load debug controls on VM-entry controls
+ *
+ */
+typedef VOID (*VM_FUNC_SET_LOAD_DEBUG_CONTROLS)(UINT32 CoreId, BOOLEAN Set);
+
+/**
+ * @brief A function that sets save debug controls on VM-exit controls
+ *
+ */
+typedef VOID (*VM_FUNC_SET_SAVE_DEBUG_CONTROLS)(UINT32 CoreId, BOOLEAN Set);
+
/**
* @brief A function that checks the validity and safety of the target address
*
@@ -126,6 +138,8 @@ typedef struct _HYPERTRACE_CALLBACKS
VM_FUNC_SET_DEBUGCTL VmFuncSetDebugctl;
VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE VmFuncSetDebugctlVmcallOnTargetCore;
VM_FUNC_CHECK_CPU_SUPPORT_FOR_SAVE_AND_LOAD_DEBUG_CONTROLS VmFuncCheckCpuSupportForSaveAndLoadDebugControls;
+ VM_FUNC_SET_LOAD_DEBUG_CONTROLS VmFuncSetLoadDebugControls;
+ VM_FUNC_SET_SAVE_DEBUG_CONTROLS VmFuncSetSaveDebugControls;
//
// *** HYPERTRACE callbacks ***
From f2ef1c3f3b8ed702f07ee296b64e5a7af9b3b0b1 Mon Sep 17 00:00:00 2001
From: sina
Date: Wed, 22 Apr 2026 18:24:09 +0200
Subject: [PATCH 125/323] Fix the problem of not applying the EAX index in the
CPUID event extension command
---
CHANGELOG.md | 9 +++++++++
hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c | 6 ++++++
.../code/debugger/commands/extension-commands/cpuid.cpp | 2 +-
3 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index edcf37e2..c0d2c43e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.19.0.0] - 2026-XX-XX
+New release of the HyperDbg Debugger.
+
+### Added
+- Hypertrace now enables/disables VM-entry/VM-exit controls for Load and Save IA32_DEBUGCTL MSR
+
+### Changed
+- Fix the problem of not applying the EAX index in the CPUID event extension command ([link](https://docs.hyperdbg.org/commands/extension-commands/cpuid#parameters))
+
## [0.18.1.0] - 2026-04-09
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c b/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c
index ebead629..07fca9d7 100644
--- a/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c
+++ b/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c
@@ -1274,6 +1274,12 @@ ApplyEventCpuidExecutionEvent(PDEBUGGER_EVENT Event,
// their custom optional parameters
//
VmFuncSetTriggerEventForCpuids(TRUE);
+
+ //
+ // Setting an indicator to CPUID EAX index (if any)
+ //
+ Event->Options.OptionalParam1 = Event->InitOptions.OptionalParam1;
+ Event->Options.OptionalParam2 = Event->InitOptions.OptionalParam2;
}
/**
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/cpuid.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/cpuid.cpp
index f149fa51..5475401a 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/cpuid.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/cpuid.cpp
@@ -91,7 +91,7 @@ CommandCpuid(vector CommandTokens, string Command)
else if (!GetEax)
{
//
- // It's probably an msr
+ // It's probably an index of EAX
//
if (!ConvertTokenToUInt64(Section, &SpecialTarget))
{
From 774d61782ff59cb09c94fa8dcf554b731075f04d Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 23 Apr 2026 12:38:48 +0000
Subject: [PATCH 126/323] fix: correct typos and one copy-paste error in
comments and messages
Agent-Logs-Url: https://github.com/HyperDbg/HyperDbg/sessions/0817c887-8808-4080-a701-6a0211b10595
Co-authored-by: SinaKarvandi <13383992+SinaKarvandi@users.noreply.github.com>
---
CHANGELOG.md | 2 +-
examples/user/hyperdbg_app/code/hyperdbg-app.cpp | 2 +-
hwdbg/sim/modelsim/modelsim.py | 4 ++--
.../main/scala/hwdbg/communication/interpreter.scala | 2 +-
.../communication/interpreter/instance_info.scala | 2 +-
.../interpreter/send_success_or_error.scala | 2 +-
.../main/scala/hwdbg/communication/receiver.scala | 2 +-
.../communication/send_receive_synchronizer.scala | 2 +-
.../src/main/scala/hwdbg/communication/sender.scala | 2 +-
hyperdbg/hyperevade/code/SyscallFootprints.c | 12 ++++++------
hyperdbg/hyperhv/code/devices/Apic.c | 4 ++--
hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c | 2 +-
hyperdbg/hyperhv/code/interface/HyperEvade.c | 2 +-
hyperdbg/hyperhv/code/processor/Smm.c | 2 +-
hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c | 2 +-
.../code/debugger/commands/DebuggerCommands.c | 8 ++++----
hyperdbg/hyperkd/code/debugger/core/Debugger.c | 2 +-
hyperdbg/hyperlog/header/Logging.h | 4 ++--
hyperdbg/include/SDK/headers/Constants.h | 2 +-
hyperdbg/include/SDK/headers/ErrorCodes.h | 4 ++--
hyperdbg/include/SDK/headers/HardwareDebugger.h | 2 +-
hyperdbg/kdserial/usif.c | 2 +-
.../code/debugger/commands/debugging-commands/a.cpp | 4 ++--
.../commands/debugging-commands/dt-struct.cpp | 4 ++--
.../code/debugger/commands/debugging-commands/s.cpp | 2 +-
.../code/debugger/commands/hwdbg-commands/hw_clk.cpp | 8 ++++----
.../debugger/communication/remote-connection.cpp | 2 +-
.../code/debugger/communication/tcpserver.cpp | 2 +-
hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp | 2 +-
.../libhyperdbg/code/debugger/core/interpreter.cpp | 4 ++--
.../code/debugger/driver-loader/install.cpp | 2 +-
.../libhyperdbg/code/hwdbg/hwdbg-interpreter.cpp | 2 +-
hyperdbg/script-engine/code/common.c | 2 +-
hyperdbg/script-engine/code/hardware.c | 8 ++++----
hyperdbg/script-engine/python/ll1_parser.py | 2 +-
35 files changed, 56 insertions(+), 56 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c0d2c43e..f55fc80d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -93,7 +93,7 @@ New release of the HyperDbg Debugger.
- Enhanced the '.pe' command to support PE Rich Headers thanks to [@Alish14](https://github.com/Alish14) ([link](https://github.com/HyperDbg/HyperDbg/pull/539))
- Updated ia32-doc to fix VMCS PL3 SSP fields ([link](https://github.com/HyperDbg/ia32-doc))
- Fix the terminating process issue of the '!syscall/!sysret' commands on 11 generation (Rocket Lake/Tiger Lake) and newer Intel processors ([link](https://github.com/HyperDbg/HyperDbg/issues/392))
-- Reenable the support for the '.start' command in the Debugger mode ([link](https://docs.hyperdbg.org/commands/meta-commands/.start))
+- Re-enable the support for the '.start' command in the Debugger mode ([link](https://docs.hyperdbg.org/commands/meta-commands/.start))
- The '!mode' event command is now compatible with different EPT hook commands (e.g., !epthook, !epthook2, !monitor, .start, and .restart) ([link](https://docs.hyperdbg.org/commands/extension-commands/mode))
- The '!mode' command doesn't need allocating extra EPTPs ([link](https://docs.hyperdbg.org/commands/extension-commands/mode))
diff --git a/examples/user/hyperdbg_app/code/hyperdbg-app.cpp b/examples/user/hyperdbg_app/code/hyperdbg-app.cpp
index 179b0876..b3a19c3d 100644
--- a/examples/user/hyperdbg_app/code/hyperdbg-app.cpp
+++ b/examples/user/hyperdbg_app/code/hyperdbg-app.cpp
@@ -91,7 +91,7 @@ hyperdbg_load()
hyperdbg_u_set_text_message_callback(hyperdbg_show_messages);
//
- // Test intepreter with shared buffer
+ // Test interpreter with shared buffer
//
// g_SharedMessageBuffer = hyperdbg_u_set_text_message_callback_using_shared_buffer(hyperdbg_show_messages_shared_buffer);
diff --git a/hwdbg/sim/modelsim/modelsim.py b/hwdbg/sim/modelsim/modelsim.py
index 64f8cfb0..e3c90db1 100644
--- a/hwdbg/sim/modelsim/modelsim.py
+++ b/hwdbg/sim/modelsim/modelsim.py
@@ -8,7 +8,7 @@ MODELSIM = "/home/sina/intelFPGA/20.1/modelsim_ase/bin"
# Check modelsim directory
#
if not os.path.exists(MODELSIM):
- print("[x] Error: The path mdoes not exist")
+ print("[x] Error: The path does not exist")
exit()
else:
print("[*] Oh, the modelsim path found :)")
@@ -152,6 +152,6 @@ print(result.stdout.decode())
#
# Run the generated WLF file
#
-print("[*] openning file in vsim: " + latest_vcd_file + ".wlf")
+print("[*] opening file in vsim: " + latest_vcd_file + ".wlf")
subprocess.run([MODELSIM_VSIM, latest_vcd_file + ".wlf",
"-do", current_script_path + '/modelsim.tcl'])
diff --git a/hwdbg/src/main/scala/hwdbg/communication/interpreter.scala b/hwdbg/src/main/scala/hwdbg/communication/interpreter.scala
index 1ab60e91..e682e612 100644
--- a/hwdbg/src/main/scala/hwdbg/communication/interpreter.scala
+++ b/hwdbg/src/main/scala/hwdbg/communication/interpreter.scala
@@ -60,7 +60,7 @@ class DebuggerPacketInterpreter(
val receivingData = Input(UInt(instanceInfo.bramDataWidth.W)) // data to be received in interpreter
//
- // Sending singals
+ // Sending signals
//
val beginSendingBuffer = Output(Bool()) // should sender start sending buffers or not?
val noNewDataSender = Output(Bool()) // should sender finish sending buffers or not?
diff --git a/hwdbg/src/main/scala/hwdbg/communication/interpreter/instance_info.scala b/hwdbg/src/main/scala/hwdbg/communication/interpreter/instance_info.scala
index 9f673117..f84df188 100644
--- a/hwdbg/src/main/scala/hwdbg/communication/interpreter/instance_info.scala
+++ b/hwdbg/src/main/scala/hwdbg/communication/interpreter/instance_info.scala
@@ -50,7 +50,7 @@ class InterpreterInstanceInfo(
val en = Input(Bool()) // chip enable signal
//
- // Sending singals
+ // Sending signals
//
val noNewDataSender = Output(Bool()) // should sender finish sending buffers or not?
val dataValidOutput = Output(Bool()) // should sender send next buffer or not?
diff --git a/hwdbg/src/main/scala/hwdbg/communication/interpreter/send_success_or_error.scala b/hwdbg/src/main/scala/hwdbg/communication/interpreter/send_success_or_error.scala
index 8f7479c1..5ae70121 100644
--- a/hwdbg/src/main/scala/hwdbg/communication/interpreter/send_success_or_error.scala
+++ b/hwdbg/src/main/scala/hwdbg/communication/interpreter/send_success_or_error.scala
@@ -35,7 +35,7 @@ class InterpreterSendSuccessOrError(
val lastSuccessOrError = Input(UInt(instanceInfo.bramDataWidth.W)) // input last error
//
- // Sending singals
+ // Sending signals
//
val noNewDataSender = Output(Bool()) // should sender finish sending buffers or not?
val dataValidOutput = Output(Bool()) // should sender send next buffer or not?
diff --git a/hwdbg/src/main/scala/hwdbg/communication/receiver.scala b/hwdbg/src/main/scala/hwdbg/communication/receiver.scala
index fc66e717..e27f9635 100644
--- a/hwdbg/src/main/scala/hwdbg/communication/receiver.scala
+++ b/hwdbg/src/main/scala/hwdbg/communication/receiver.scala
@@ -351,7 +351,7 @@ class DebuggerPacketReceiver(
//
// The receiving is done at this stage, either
- // was successful of unsucessful, we'll release the
+ // was successful or unsuccessful, we'll release the
// sharing bram resource by indicating that the receiving
// module is no longer using the bram line
//
diff --git a/hwdbg/src/main/scala/hwdbg/communication/send_receive_synchronizer.scala b/hwdbg/src/main/scala/hwdbg/communication/send_receive_synchronizer.scala
index 9ecfb03a..4ebf5a74 100644
--- a/hwdbg/src/main/scala/hwdbg/communication/send_receive_synchronizer.scala
+++ b/hwdbg/src/main/scala/hwdbg/communication/send_receive_synchronizer.scala
@@ -160,7 +160,7 @@ class SendReceiveSynchronizer(
is(sIdle) {
//
- // Peform the resource sepration of shared BRAM
+ // Perform the resource separation of shared BRAM
// and apply priority to receive over send
//
when(io.plInSignal === true.B) {
diff --git a/hwdbg/src/main/scala/hwdbg/communication/sender.scala b/hwdbg/src/main/scala/hwdbg/communication/sender.scala
index fac3e389..e1c049d9 100644
--- a/hwdbg/src/main/scala/hwdbg/communication/sender.scala
+++ b/hwdbg/src/main/scala/hwdbg/communication/sender.scala
@@ -223,7 +223,7 @@ class DebuggerPacketSender(
wrData := HyperDbgSharedConstants.INDICATOR_OF_HYPERDBG_PACKET.U >> regTransferredIndicatorLength
//
- // Add to the length transfered
+ // Add to the transferred length
//
regTransferredIndicatorLength := regTransferredIndicatorLength + instanceInfo.bramDataWidth.U
diff --git a/hyperdbg/hyperevade/code/SyscallFootprints.c b/hyperdbg/hyperevade/code/SyscallFootprints.c
index f435efeb..e9d5e34b 100644
--- a/hyperdbg/hyperevade/code/SyscallFootprints.c
+++ b/hyperdbg/hyperevade/code/SyscallFootprints.c
@@ -255,7 +255,7 @@ TransparentHandleNtQuerySystemInformationSyscall(GUEST_REGS * Regs)
*
* @details Returns an allocated tagged memory pointer which needs to be freed with PlatformMemFreePool()
*
- * @param virtPtr A pointer to a guest virutal memory address, containing a OBJECT_ATTRIBUTES structure
+ * @param virtPtr A pointer to a guest virtual memory address, containing a OBJECT_ATTRIBUTES structure
* @return PVOID Pointer to an allocated tagged memory pool, which needs to be freed with PlatformMemFreePool()
*/
PVOID
@@ -690,7 +690,7 @@ TransparentHandleNtQueryValueKeySyscall(GUEST_REGS * Regs)
&ContextParams);
//
- // Clean-up and return to guest exection
+ // Clean-up and return to guest execution
//
PlatformMemFreePool(NameBuf);
return;
@@ -805,7 +805,7 @@ TransparentHandleNtEnumerateKeySyscall(GUEST_REGS * Regs)
* it is possible to still detect that some tampering was done from the user space
*
* @param Ptr The pointer to a valid read/writable SYSTEM_MODULE_INFORMATION memory buffer
- * @param VirualAddress A pointer to a user-mode virual address
+ * @param VirualAddress A pointer to a user-mode virtual address
* @param BufferSize Size of the user-mode buffer
*
* @return BOOLEAN
@@ -987,7 +987,7 @@ TransparentHandleProcessInformationQuery(SYSCALL_CALLBACK_CONTEXT_PARAMS * Param
}
//
- // If the current entry didnt match any process names, move forward
+ // If the current entry did not match any process names, move forward
//
if (!MatchFound)
{
@@ -1063,7 +1063,7 @@ TransparentHandleFirmwareInformationQuery(UINT64 Ptr, UINT32 BufMaxSize, UINT64
if (BufSize > BufMaxSize)
{
//
- // NOTE: might need zeroing the memory if the kernel did infact write to the pointer
+ // NOTE: might need zeroing the memory if the kernel did in fact write to the pointer
//
return 0;
}
@@ -1253,7 +1253,7 @@ TransparentReplaceVendorStringFromBufferWChar(SYSCALL_CALLBACK_CONTEXT_PARAMS *
if (BufSize > Params->OptionalParam3 || BufSize == 0)
{
//
- // NOTE: might need zeroing the memory if the kernel did infact write to the pointer
+ // NOTE: might need zeroing the memory if the kernel did in fact write to the pointer
//
return 0;
diff --git a/hyperdbg/hyperhv/code/devices/Apic.c b/hyperdbg/hyperhv/code/devices/Apic.c
index a989f95b..744349eb 100644
--- a/hyperdbg/hyperhv/code/devices/Apic.c
+++ b/hyperdbg/hyperhv/code/devices/Apic.c
@@ -15,7 +15,7 @@
#include "pch.h"
/**
- * @brief Perfom read I/O APIC
+ * @brief Perform read I/O APIC
*
* @param IoApicBaseVa
* @param Reg
@@ -45,7 +45,7 @@ IoApicRead(volatile IO_APIC_ENT * IoApicBaseVa, UINT32 Reg)
}
/**
- * @brief Perfom write to I/O APIC
+ * @brief Perform write to I/O APIC
*
* @param IoApicBaseVa
* @param Reg
diff --git a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
index f983ea1b..16495d2c 100644
--- a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
+++ b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
@@ -155,7 +155,7 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
VmxVmwrite64(VMCS_GUEST_RFLAGS, GuestRflags);
//
- // Peform emulation of Intel CET (Shadow stacks)
+ // Perform emulation of Intel CET (Shadow stacks)
//
if (g_CompatibilityCheck.CetShadowStackSupport)
{
diff --git a/hyperdbg/hyperhv/code/interface/HyperEvade.c b/hyperdbg/hyperhv/code/interface/HyperEvade.c
index 0d640311..2ff3d9b1 100644
--- a/hyperdbg/hyperhv/code/interface/HyperEvade.c
+++ b/hyperdbg/hyperhv/code/interface/HyperEvade.c
@@ -101,7 +101,7 @@ BOOLEAN
TransparentUnhideDebuggerWrapper(DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE * TransparentModeRequest)
{
//
- // Unitialize the syscall callback mechanism from hypervisor
+ // Uninitialize the syscall callback mechanism from hypervisor
//
SyscallCallbackUninitialize();
diff --git a/hyperdbg/hyperhv/code/processor/Smm.c b/hyperdbg/hyperhv/code/processor/Smm.c
index befdee9d..061eb5a8 100644
--- a/hyperdbg/hyperhv/code/processor/Smm.c
+++ b/hyperdbg/hyperhv/code/processor/Smm.c
@@ -51,7 +51,7 @@ SmmTriggerPowerSmi()
__outbyte(0xb2, SMI_TRIGGER_POWER_VALUE);
//
- // Check the respose in port 0xB3
+ // Check the response in port 0xB3
//
SmmResponse = __inbyte(0xb2);
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
index fd5837f3..bdd1a46f 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
@@ -217,7 +217,7 @@ IdtEmulationhandleHostInterrupt(_Inout_ INTERRUPT_TRAP_FRAME * IntrTrapFrame)
if (!VmxBroadcastHandleNmiCallback((PVOID)IntrTrapFrame, FALSE))
{
//
- // We cannot just use the NMI Window Exiting here becasue
+ // We cannot just use the NMI Window Exiting here because
// in certain scenarios, VMRESUME with Error 0x7 will happen
// Which means that the layout of the VMCS is wrong
//
diff --git a/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c b/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c
index f18c5f24..5bb0a26f 100644
--- a/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c
+++ b/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c
@@ -559,7 +559,7 @@ DebuggerCommandEditMemory(PDEBUGGER_EDIT_MEMORY EditMemRequest)
else if (EditMemRequest->MemoryType == EDIT_PHYSICAL_MEMORY)
{
//
- // Check whether the physical addres
+ // Check whether the physical address
//
if (!CheckAddressPhysical(EditMemRequest->Address))
{
@@ -595,7 +595,7 @@ DebuggerCommandEditMemory(PDEBUGGER_EDIT_MEMORY EditMemRequest)
}
//
- // Set the resutls
+ // Set the results
//
EditMemRequest->Result = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
@@ -676,7 +676,7 @@ DebuggerCommandEditMemoryVmxRoot(PDEBUGGER_EDIT_MEMORY EditMemRequest)
else if (EditMemRequest->MemoryType == EDIT_PHYSICAL_MEMORY)
{
//
- // Check whether the physical addres
+ // Check whether the physical address
//
if (!CheckAddressPhysical(EditMemRequest->Address))
{
@@ -705,7 +705,7 @@ DebuggerCommandEditMemoryVmxRoot(PDEBUGGER_EDIT_MEMORY EditMemRequest)
}
//
- // Set the resutls
+ // Set the results
//
EditMemRequest->Result = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
return TRUE;
diff --git a/hyperdbg/hyperkd/code/debugger/core/Debugger.c b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
index cd22fe78..c3811e09 100644
--- a/hyperdbg/hyperkd/code/debugger/core/Debugger.c
+++ b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
@@ -274,7 +274,7 @@ DebuggerUninitialize()
}
//
- // Unitialize the HyperTrace (if it was initialized)
+ // Uninitialize the HyperTrace (if it was initialized)
//
HyperTraceUninit();
diff --git a/hyperdbg/hyperlog/header/Logging.h b/hyperdbg/hyperlog/header/Logging.h
index 87065edc..f94d96a8 100644
--- a/hyperdbg/hyperlog/header/Logging.h
+++ b/hyperdbg/hyperlog/header/Logging.h
@@ -70,8 +70,8 @@ typedef struct _LOG_BUFFER_INFORMATION
KSPIN_LOCK BufferLock; // SpinLock to protect access to the queue
KSPIN_LOCK BufferLockForNonImmMessage; // SpinLock to protect access to the queue of non-imm messages
- UINT64 BufferForMultipleNonImmediateMessage; // Start address of the buffer for accumulating non-immadiate messages
- UINT32 CurrentLengthOfNonImmBuffer; // the current size of the buffer for accumulating non-immadiate messages
+ UINT64 BufferForMultipleNonImmediateMessage; // Start address of the buffer for accumulating non-immediate messages
+ UINT32 CurrentLengthOfNonImmBuffer; // the current size of the buffer for accumulating non-immediate messages
//
// Regular buffers
diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h
index 734d4a9a..a32b1151 100644
--- a/hyperdbg/include/SDK/headers/Constants.h
+++ b/hyperdbg/include/SDK/headers/Constants.h
@@ -76,7 +76,7 @@
#define BUILD_SEC_CH0 (__TIME__[6])
#define BUILD_SEC_CH1 (__TIME__[7])
-#ifdef __cplusplus // becasue it's not valid in C
+#ifdef __cplusplus // because it's not valid in C
const unsigned char BuildDateTime[] = {
BUILD_YEAR_CH0,
diff --git a/hyperdbg/include/SDK/headers/ErrorCodes.h b/hyperdbg/include/SDK/headers/ErrorCodes.h
index d2fc07ae..c48dff70 100644
--- a/hyperdbg/include/SDK/headers/ErrorCodes.h
+++ b/hyperdbg/include/SDK/headers/ErrorCodes.h
@@ -107,7 +107,7 @@
0xc000000c
/**
- * @brief error, an invalid address is specified based on anotehr process's cr3
+ * @brief error, an invalid address is specified based on another process's cr3
* in !e* or e* commands
*
*/
@@ -552,7 +552,7 @@
#define DEBUGGER_ERROR_DEBUGGER_ALREADY_UNHIDE 0xc0000054
/**
- * @brief error, the user debugger cannot be initalized
+ * @brief error, the user debugger cannot be initialized
*
*/
#define DEBUGGER_ERROR_DEBUGGER_NOT_INITIALIZED 0xc0000055
diff --git a/hyperdbg/include/SDK/headers/HardwareDebugger.h b/hyperdbg/include/SDK/headers/HardwareDebugger.h
index 814659b6..d80122e3 100644
--- a/hyperdbg/include/SDK/headers/HardwareDebugger.h
+++ b/hyperdbg/include/SDK/headers/HardwareDebugger.h
@@ -30,7 +30,7 @@
/**
* @brief Initial default buffer size (BRAN Size)
- * @details Number of 4-Byte intergers (256 * 4 Byte * 8 bits = 8-kilobits)
+ * @details Number of 4-Byte integers (256 * 4 Byte * 8 bits = 8-kilobits)
*
*/
#define DEFAULT_INITIAL_BRAM_BUFFER_SIZE 256
diff --git a/hyperdbg/kdserial/usif.c b/hyperdbg/kdserial/usif.c
index 263ec62a..a409130f 100644
--- a/hyperdbg/kdserial/usif.c
+++ b/hyperdbg/kdserial/usif.c
@@ -21,7 +21,7 @@ Abstract:
#define USIF_FIFO_STAT 0x00000044 // FIFO status register
#define USIF_FIFO_STAT_TXFFS 0x00FF0000 // TX filled FIFO stages
#define USIF_FIFO_STAT_RXFFS 0x000000FF // RX filled FIFO stages
-#define USIF_TXD 0x00040000 // Transmisson data register
+#define USIF_TXD 0x00040000 // Transmission data register
#define USIF_RXD 0x00080000 // Reception data register
// ------------------------------------------------------------------ Functions
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/a.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/a.cpp
index 8ddb6550..05f2c882 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/a.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/a.cpp
@@ -94,7 +94,7 @@ ParseUserCmd(const std::string & command)
// if yes, asm snippet was provided right after "a" command (2nd index)
// i.e. no address were provided to assembling to
//
- CmdVec.emplace_back(""); // emtpty addres string
+ CmdVec.emplace_back(""); // empty address string
}
std::string RawAsm(CmdIt + 1, CloseIt); // remove "{}"
CmdVec.emplace_back(RawAsm);
@@ -192,7 +192,7 @@ CommandAssemble(vector CommandTokens, string Command)
if (CMD.isEmpty())
{
//
- // Error messeges are already printed
+ // Error messages are already printed
//
return;
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/dt-struct.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/dt-struct.cpp
index 3e7d490d..622fc74b 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/dt-struct.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/dt-struct.cpp
@@ -183,9 +183,9 @@ CommandDtAndStructConvertHyperDbgArgsToPdbex(vector ExtraArgs,
else
{
//
- // none/inline/all expected but didn't see it
+ // none/unnamed/all expected but didn't see it
//
- ShowMessages("err, please insert 'none', 'inline', or 'all' as the argument\n\n");
+ ShowMessages("err, please insert 'none', 'unnamed', or 'all' as the argument\n\n");
return FALSE;
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/s.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/s.cpp
index aa4d4bf8..4c7e82a0 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/s.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/s.cpp
@@ -372,7 +372,7 @@ CommandSearchMemory(vector CommandTokens, string Command)
if (!SetValue)
{
//
- // At least on walue is there
+ // At least one value is there
//
SetValue = TRUE;
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/hwdbg-commands/hw_clk.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/hwdbg-commands/hw_clk.cpp
index dd707e72..d6d5f588 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/hwdbg-commands/hw_clk.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/hwdbg-commands/hw_clk.cpp
@@ -44,7 +44,7 @@ CommandHwClkHelp()
* @return BOOLEAN
*/
BOOLEAN
-CommandHwClkPerfomTest(vector CommandTokens,
+CommandHwClkPerformTest(vector CommandTokens,
const TCHAR * InstanceFilePathToRead,
const TCHAR * InstanceFilePathToSave,
const TCHAR * HardwareScriptFilePathToSave,
@@ -68,7 +68,7 @@ CommandHwClkPerfomTest(vector CommandTokens,
if (!HwdbgLoadInstanceInfo(InstanceFilePathToRead, InitialBramBufferSize))
{
//
- // No need for freeing memory so reuturn directly
+ // No need for freeing memory so return directly
//
return FALSE;
}
@@ -90,7 +90,7 @@ CommandHwClkPerfomTest(vector CommandTokens,
&EventParsingErrorCause))
{
//
- // No need for freeing memory so reuturn directly
+ // No need for freeing memory so return directly
//
return FALSE;
}
@@ -158,7 +158,7 @@ CommandHwClk(vector CommandTokens, string Command)
//
// Perform test with default file path and initial BRAM buffer size
//
- CommandHwClkPerfomTest(CommandTokens,
+ CommandHwClkPerformTest(CommandTokens,
HWDBG_TEST_READ_INSTANCE_INFO_PATH,
HWDBG_TEST_WRITE_INSTANCE_INFO_PATH,
HWDBG_TEST_WRITE_SCRIPT_BUFFER_PATH,
diff --git a/hyperdbg/libhyperdbg/code/debugger/communication/remote-connection.cpp b/hyperdbg/libhyperdbg/code/debugger/communication/remote-connection.cpp
index f0a3022e..4c62d9b8 100644
--- a/hyperdbg/libhyperdbg/code/debugger/communication/remote-connection.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/communication/remote-connection.cpp
@@ -191,7 +191,7 @@ RemoteConnectionListen(PCSTR Port)
//
// Indicate that we're not in remote debugger anymore
//
- ShowMessages("closing the conntection...\n");
+ ShowMessages("closing the connection...\n");
//
// Close the connection
diff --git a/hyperdbg/libhyperdbg/code/debugger/communication/tcpserver.cpp b/hyperdbg/libhyperdbg/code/debugger/communication/tcpserver.cpp
index 764ff0eb..bb3a14de 100644
--- a/hyperdbg/libhyperdbg/code/debugger/communication/tcpserver.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/communication/tcpserver.cpp
@@ -295,7 +295,7 @@ CommunicationServerShutdownAndCleanupConnection(SOCKET ClientSocket,
// }
// }
//
-// ShowMessages("close conntection\n");
+// ShowMessages("close connection\n");
//
// //
// // Close the connection
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index 0fea3872..65ec1e87 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -1509,7 +1509,7 @@ RegisterActionToEvent(PDEBUGGER_GENERAL_EVENT_DETAIL Event,
else
{
//
- // It's either a local debugger to in vmi-mode remote conntection
+ // It's either a local debugger to in vmi-mode remote connection
//
AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnFalse);
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
index 31956c9a..4460714e 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
@@ -140,7 +140,7 @@ public:
std::vector PosVec = {CloseBrktPos, NewLineSrtPos, NewLineChrPos};
- auto min = *(min_element(PosVec.begin(), PosVec.end())); // see which one occures first
+ auto min = *(min_element(PosVec.begin(), PosVec.end())); // see which one occurs first
if (min != std::string::npos && input[min - 1] != '\\')
{
@@ -361,7 +361,7 @@ public:
}
}
- if (((c == ' ' && !InQuotes) || c == ' ') && !InQuotes && !IdxBracket) // finding seperator space char // Tab seperator added too
+ if (((c == ' ' && !InQuotes) || c == ' ') && !InQuotes && !IdxBracket) // finding separator space char // Tab separator added too
{
if (!current.empty() && current != " ")
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/driver-loader/install.cpp b/hyperdbg/libhyperdbg/code/debugger/driver-loader/install.cpp
index 5a9f858a..a73637c0 100644
--- a/hyperdbg/libhyperdbg/code/debugger/driver-loader/install.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/driver-loader/install.cpp
@@ -59,7 +59,7 @@ InstallDriver(SC_HANDLE SchSCManager, LPCTSTR DriverName, LPCTSTR ServiceExe)
{
//
// The service is already been created
- // means that, the driver is previosuly installed
+ // means that, the driver is previously installed
//
ShowMessages("the service (driver) already exists\n");
diff --git a/hyperdbg/libhyperdbg/code/hwdbg/hwdbg-interpreter.cpp b/hyperdbg/libhyperdbg/code/hwdbg/hwdbg-interpreter.cpp
index 6fd2e1f7..00e9b708 100644
--- a/hyperdbg/libhyperdbg/code/hwdbg/hwdbg-interpreter.cpp
+++ b/hyperdbg/libhyperdbg/code/hwdbg/hwdbg-interpreter.cpp
@@ -347,7 +347,7 @@ HwdbgComputeNumberOfFlipFlopsNeeded(
sizeof(HWDBG_SHORT_SYMBOL) / sizeof(UINT64));
//
- // size of main operator (/ 2 is becasue Type is not inffered)
+ // size of main operator (/ 2 is because Type is not inferred)
//
NumberOfNeededFlipFlopsInTargetDevice += (NumberOfStages * g_HwdbgInstanceInfo.scriptVariableLength * (sizeof(HWDBG_SHORT_SYMBOL) / sizeof(UINT64)) / 2);
diff --git a/hyperdbg/script-engine/code/common.c b/hyperdbg/script-engine/code/common.c
index be1c159c..69969b25 100644
--- a/hyperdbg/script-engine/code/common.c
+++ b/hyperdbg/script-engine/code/common.c
@@ -1031,7 +1031,7 @@ IsType16Func(PSCRIPT_ENGINE_TOKEN Operator)
}
/**
- * @brief Checks whether this Token type is assignemnt operator
+ * @brief Checks whether this Token type is assignment operator
*
* @param Operator
* @return char
diff --git a/hyperdbg/script-engine/code/hardware.c b/hyperdbg/script-engine/code/hardware.c
index d12a0245..2b986898 100644
--- a/hyperdbg/script-engine/code/hardware.c
+++ b/hyperdbg/script-engine/code/hardware.c
@@ -12,7 +12,7 @@
#include "pch.h"
/**
- * @brief Shows the script capablities of the target debuggee
+ * @brief Shows the script capabilities of the target debuggee
*
* @param InstanceInfo
*
@@ -21,7 +21,7 @@
VOID
HardwareScriptInterpreterShowScriptCapabilities(HWDBG_INSTANCE_INFORMATION * InstanceInfo)
{
- ShowMessages("\nThis debuggee supports the following operatiors:\n");
+ ShowMessages("\nThis debuggee supports the following operators:\n");
ShowMessages("\tlocal and global variable assignments: %s (maximum number of var: %d) \n",
InstanceInfo->scriptCapabilities.assign_local_global_var ? "supported" : "not supported",
InstanceInfo->numberOfSupportedLocalAndGlobalVariables);
@@ -67,7 +67,7 @@ HardwareScriptInterpreterShowScriptCapabilities(HWDBG_INSTANCE_INFORMATION * Ins
}
/**
- * @brief Check the script capablities with the target script buffer
+ * @brief Check the script capabilities with the target script buffer
*
* @param InstanceInfo
* @param ScriptBuffer
@@ -76,7 +76,7 @@ HardwareScriptInterpreterShowScriptCapabilities(HWDBG_INSTANCE_INFORMATION * Ins
* @param NumberOfOperands
* @param NumberOfOperandsImplemented
*
- * @return BOOLEAN TRUE if the script capablities support the script, otherwise FALSE
+ * @return BOOLEAN TRUE if the script capabilities support the script, otherwise FALSE
*/
BOOLEAN
HardwareScriptInterpreterCheckScriptBufferWithScriptCapabilities(HWDBG_INSTANCE_INFORMATION * InstanceInfo,
diff --git a/hyperdbg/script-engine/python/ll1_parser.py b/hyperdbg/script-engine/python/ll1_parser.py
index aa5b4415..a070f36f 100644
--- a/hyperdbg/script-engine/python/ll1_parser.py
+++ b/hyperdbg/script-engine/python/ll1_parser.py
@@ -182,7 +182,7 @@ class LL1Parser:
# Push start variable into stack
Stack.append(self.Start)
- # Assign top variale an invalid value
+ # Assign top variable an invalid value
Top = ""
# Read input
From 24875bda88b199c349a743a691815dfa64901862 Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 23 Apr 2026 16:42:34 +0200
Subject: [PATCH 127/323] apply VM-exit and VM-entry load and save controls
from VMCALLs
---
hyperdbg/hyperhv/code/interface/Export.c | 26 +++++++++++
hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c | 43 ++++++++++++++++++-
hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c | 4 +-
.../hyperhv/header/vmm/vmx/CrossVmcalls.h | 6 +++
hyperdbg/hyperkd/code/driver/Loader.c | 2 +
hyperdbg/hypertrace/code/DpcRoutines.c | 9 ++--
.../SDK/imports/kernel/HyperDbgVmmImports.h | 6 +++
hyperdbg/include/SDK/modules/HyperTrace.h | 14 ++++++
8 files changed, 101 insertions(+), 9 deletions(-)
diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c
index 97e67036..49a135d0 100644
--- a/hyperdbg/hyperhv/code/interface/Export.c
+++ b/hyperdbg/hyperhv/code/interface/Export.c
@@ -452,6 +452,32 @@ VmFuncSetDebugctlVmcallOnTargetCore(UINT64 Value)
CrossVmcallSetDebugctlVmcallOnTargetCore(Value);
}
+/**
+ * @brief Set LOAD DEBUG CONTROLS on VM-entry controls on the target core from VMCS using VMCALL
+ *
+ * @param Set Set or unset
+ *
+ * @return VOID
+ */
+VOID
+VmFuncSetLoadDebugControlsVmcallOnTargetCore(BOOLEAN Set)
+{
+ CrossVmcallSetLoadDebugControlsVmcallOnTargetCore(Set);
+}
+
+/**
+ * @brief Set SAVE DEBUG CONTROLS on VM-exit controls on the target core from VMCS using VMCALL
+ *
+ * @param Set Set or unset
+ *
+ * @return VOID
+ */
+VOID
+VmFuncSetSaveDebugControlsVmcallOnTargetCore(BOOLEAN Set)
+{
+ CrossVmcallSetSaveDebugControlsVmcallOnTargetCore(Set);
+}
+
/**
* @brief Set the guest state of DR7
* @param Value
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c b/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
index e74b22d6..561736d5 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
@@ -26,8 +26,7 @@ CrossVmcallGetDebugctlVmcallOnTargetCore()
}
/**
- * @brief Set the guest state of IA32_DEBUGCTL on the target core from VMCS
- * using VMCALL
+ * @brief Set the guest state of IA32_DEBUGCTL on the target core from VMCS using VMCALL
* @param Value
*
* @return VOID
@@ -37,3 +36,43 @@ CrossVmcallSetDebugctlVmcallOnTargetCore(UINT64 Value)
{
AsmVmxVmcall(VMCALL_SET_VMCS_DEBUGCTL, Value, NULL64_ZERO, NULL64_ZERO);
}
+
+/**
+ * @brief Set LOAD DEBUG CONTROLS on Vm-entry controls on the target core from VMCS using VMCALL
+ *
+ * @param Set Set or unset
+ *
+ * @return VOID
+ */
+VOID
+CrossVmcallSetLoadDebugControlsVmcallOnTargetCore(BOOLEAN Set)
+{
+ if (Set)
+ {
+ AsmVmxVmcall(VMCALL_SET_VM_ENTRY_LOAD_DEBUG_CONTROLS, NULL64_ZERO, NULL64_ZERO, NULL64_ZERO);
+ }
+ else
+ {
+ AsmVmxVmcall(VMCALL_UNSET_VM_ENTRY_LOAD_DEBUG_CONTROLS, NULL64_ZERO, NULL64_ZERO, NULL64_ZERO);
+ }
+}
+
+/**
+ * @brief Set SAVE DEBUG CONTROLS on Vm-exit controls on the target core from VMCS using VMCALL
+ *
+ * @param Set Set or unset
+ *
+ * @return VOID
+ */
+VOID
+CrossVmcallSetSaveDebugControlsVmcallOnTargetCore(BOOLEAN Set)
+{
+ if (Set)
+ {
+ AsmVmxVmcall(VMCALL_SET_VM_EXIT_SAVE_DEBUG_CONTROLS, NULL64_ZERO, NULL64_ZERO, NULL64_ZERO);
+ }
+ else
+ {
+ AsmVmxVmcall(VMCALL_UNSET_VM_EXIT_SAVE_DEBUG_CONTROLS, NULL64_ZERO, NULL64_ZERO, NULL64_ZERO);
+ }
+}
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c b/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c
index efb8721b..914cd0a2 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c
@@ -576,7 +576,7 @@ ProtectedHvSetLoadDebugControlsIntegrityCheck(VIRTUAL_MACHINE_STATE * VCpu, BOOL
//
// Set the new value
//
- VmxVmwrite64(VMCS_CTRL_VMENTRY_CONTROLS, VmentryControls);
+ VmxVmwrite32(VMCS_CTRL_VMENTRY_CONTROLS, VmentryControls);
}
/**
@@ -629,7 +629,7 @@ ProtectedHvSetSaveDebugControlsIntegrityCheck(VIRTUAL_MACHINE_STATE * VCpu, BOOL
//
// Set the new value
//
- VmxVmwrite64(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, VmexitControls);
+ VmxVmwrite32(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, VmexitControls);
}
/**
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h b/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h
index 94a0b2b8..64b9d3d0 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h
@@ -20,3 +20,9 @@ CrossVmcallGetDebugctlVmcallOnTargetCore();
VOID
CrossVmcallSetDebugctlVmcallOnTargetCore(UINT64 Value);
+
+VOID
+CrossVmcallSetLoadDebugControlsVmcallOnTargetCore(BOOLEAN Set);
+
+VOID
+CrossVmcallSetSaveDebugControlsVmcallOnTargetCore(BOOLEAN Set);
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index 7abfd5c7..bc11cc52 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -44,7 +44,9 @@ LoaderInitHyperTrace(BOOLEAN InitForHypervisorEnvironment)
HyperTraceCallbacks.VmFuncSetDebugctlVmcallOnTargetCore = VmFuncSetDebugctlVmcallOnTargetCore;
HyperTraceCallbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls = VmFuncCheckCpuSupportForSaveAndLoadDebugControls;
HyperTraceCallbacks.VmFuncSetLoadDebugControls = VmFuncSetLoadDebugControls;
+ HyperTraceCallbacks.VmFuncSetLoadDebugControlsVmcallOnTargetCore = VmFuncSetLoadDebugControlsVmcallOnTargetCore;
HyperTraceCallbacks.VmFuncSetSaveDebugControls = VmFuncSetSaveDebugControls;
+ HyperTraceCallbacks.VmFuncSetSaveDebugControlsVmcallOnTargetCore = VmFuncSetSaveDebugControlsVmcallOnTargetCore;
//
// Memory callbacks
diff --git a/hyperdbg/hypertrace/code/DpcRoutines.c b/hyperdbg/hypertrace/code/DpcRoutines.c
index cb2064b1..f160d612 100644
--- a/hyperdbg/hypertrace/code/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/DpcRoutines.c
@@ -46,14 +46,13 @@ DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
// Perform VMX-root mode specific operations to enable load and save
// VM-exit and VM-entry controls for IA32_DEBUGCTL for LBR
//
- g_Callbacks.VmFuncSetSaveDebugControls(CurrentCore, TRUE);
- g_Callbacks.VmFuncSetLoadDebugControls(CurrentCore, TRUE);
+ g_Callbacks.VmFuncSetSaveDebugControlsVmcallOnTargetCore(TRUE);
+ g_Callbacks.VmFuncSetLoadDebugControlsVmcallOnTargetCore(TRUE);
}
//
// Enable LBR on all cores from VMX-root mode by VMCALL
//
-
// LbrStartLbr(CurrentRequest, TRUE, TRUE);
HyperTraceExamplePerformLbrTrace(TRUE, TRUE);
@@ -105,8 +104,8 @@ DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, P
// Perform VMX-root mode specific operations to disable load and save
// VM-exit and VM-entry controls for IA32_DEBUGCTL for LBR
//
- g_Callbacks.VmFuncSetSaveDebugControls(CurrentCore, FALSE);
- g_Callbacks.VmFuncSetLoadDebugControls(CurrentCore, FALSE);
+ g_Callbacks.VmFuncSetSaveDebugControlsVmcallOnTargetCore(FALSE);
+ g_Callbacks.VmFuncSetLoadDebugControlsVmcallOnTargetCore(FALSE);
}
//
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
index 71ff8ab3..5cf0aa63 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
@@ -110,6 +110,12 @@ VmFuncSetDebugctl(UINT64 Value);
IMPORT_EXPORT_VMM VOID
VmFuncSetDebugctlVmcallOnTargetCore(UINT64 Value);
+IMPORT_EXPORT_VMM VOID
+VmFuncSetLoadDebugControlsVmcallOnTargetCore(BOOLEAN Set);
+
+IMPORT_EXPORT_VMM VOID
+VmFuncSetSaveDebugControlsVmcallOnTargetCore(BOOLEAN Set);
+
IMPORT_EXPORT_VMM VOID
VmFuncSetTriggerEventForVmcalls(BOOLEAN Set);
diff --git a/hyperdbg/include/SDK/modules/HyperTrace.h b/hyperdbg/include/SDK/modules/HyperTrace.h
index c6bc19d7..04ef55c0 100644
--- a/hyperdbg/include/SDK/modules/HyperTrace.h
+++ b/hyperdbg/include/SDK/modules/HyperTrace.h
@@ -82,12 +82,24 @@ typedef BOOLEAN (*VM_FUNC_CHECK_CPU_SUPPORT_FOR_SAVE_AND_LOAD_DEBUG_CONTROLS)();
*/
typedef VOID (*VM_FUNC_SET_LOAD_DEBUG_CONTROLS)(UINT32 CoreId, BOOLEAN Set);
+/**
+ * @brief A function that sets load debug controls on VM-entry controls on the target core from VMCS using VMCALL
+ *
+ */
+typedef VOID (*VM_FUNC_SET_LOAD_DEBUG_CONTROLS_VMCALL_ON_TARGET_CORE)(BOOLEAN Set);
+
/**
* @brief A function that sets save debug controls on VM-exit controls
*
*/
typedef VOID (*VM_FUNC_SET_SAVE_DEBUG_CONTROLS)(UINT32 CoreId, BOOLEAN Set);
+/**
+ * @brief A function that sets save debug controls on VM-exit controls on the target core from VMCS using VMCALL
+ *
+ */
+typedef VOID (*VM_FUNC_SET_SAVE_DEBUG_CONTROLS_VMCALL_ON_TARGET_CORE)(BOOLEAN Set);
+
/**
* @brief A function that checks the validity and safety of the target address
*
@@ -139,7 +151,9 @@ typedef struct _HYPERTRACE_CALLBACKS
VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE VmFuncSetDebugctlVmcallOnTargetCore;
VM_FUNC_CHECK_CPU_SUPPORT_FOR_SAVE_AND_LOAD_DEBUG_CONTROLS VmFuncCheckCpuSupportForSaveAndLoadDebugControls;
VM_FUNC_SET_LOAD_DEBUG_CONTROLS VmFuncSetLoadDebugControls;
+ VM_FUNC_SET_LOAD_DEBUG_CONTROLS_VMCALL_ON_TARGET_CORE VmFuncSetLoadDebugControlsVmcallOnTargetCore;
VM_FUNC_SET_SAVE_DEBUG_CONTROLS VmFuncSetSaveDebugControls;
+ VM_FUNC_SET_SAVE_DEBUG_CONTROLS_VMCALL_ON_TARGET_CORE VmFuncSetSaveDebugControlsVmcallOnTargetCore;
//
// *** HYPERTRACE callbacks ***
From d930b3341d670b69621f5fa0387e7ff573ba7aee Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 23 Apr 2026 18:52:41 +0200
Subject: [PATCH 128/323] change LBR control VMWRITE length
---
hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 4 ++--
hyperdbg/hypertrace/code/DpcRoutines.c | 10 +++++-----
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
index 33583ccb..852a99e9 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
@@ -1500,8 +1500,8 @@ HvGetAndStoreDebugctl(UINT64 * StoreDebugctl)
VOID
HvSetDebugctl(UINT64 Value)
{
- VmxVmwrite64(VMCS_GUEST_DEBUGCTL, Value & 0xFFFFFFFF);
- VmxVmwrite64(VMCS_GUEST_DEBUGCTL_HIGH, Value >> 32);
+ VmxVmwrite32(VMCS_GUEST_DEBUGCTL, Value & 0xFFFFFFFF);
+ VmxVmwrite32(VMCS_GUEST_DEBUGCTL_HIGH, Value >> 32);
}
/**
diff --git a/hyperdbg/hypertrace/code/DpcRoutines.c b/hyperdbg/hypertrace/code/DpcRoutines.c
index f160d612..eab62d39 100644
--- a/hyperdbg/hypertrace/code/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/DpcRoutines.c
@@ -94,6 +94,11 @@ DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, P
//
CurrentRequest = &g_LbrRequestState[CurrentCore];
+ //
+ // Disable LBR on all cores from VMX-root mode by VMCALL
+ //
+ LbrStopLbr(CurrentRequest, TRUE, TRUE);
+
//
// Check if the initialization is being done for hypervisor environment or not
// If it is, then we need to perform some additional steps to enable LBR in VMX
@@ -108,11 +113,6 @@ DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, P
g_Callbacks.VmFuncSetLoadDebugControlsVmcallOnTargetCore(FALSE);
}
- //
- // Disable LBR on all cores from VMX-root mode by VMCALL
- //
- LbrStopLbr(CurrentRequest, TRUE, TRUE);
-
//
// Wait for all DPCs to synchronize at this point
//
From 8f769296434713e502699c92a98c82aaa888a631 Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 23 Apr 2026 19:33:10 +0200
Subject: [PATCH 129/323] comment non-used codes for LBR
---
hyperdbg/hypertrace/code/Lbr.c | 77 +++++++++++++++++-------------
hyperdbg/hypertrace/code/Tracing.c | 46 ++++++++++++++++++
2 files changed, 89 insertions(+), 34 deletions(-)
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index e8594d0c..fbea170a 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -106,9 +106,11 @@ LbrInitialize()
VOID
LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
+ UNREFERENCED_PARAMETER(State);
+
ULONG i;
ULONGLONG DbgCtlMsr;
- KIRQL OldIrql;
+ // KIRQL OldIrql;
if (ApplyFromVmxRootMode)
{
@@ -139,16 +141,20 @@ LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall
xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
}
- xacquire_lock(&LbrStateLock, &OldIrql);
- xrdmsr(MSR_LBR_SELECT, &State->Config.LbrSelect);
- xrdmsr(MSR_LBR_TOS, &State->Data->LbrTos);
+ // xacquire_lock(&LbrStateLock, &OldIrql);
+ // xrdmsr(MSR_LBR_SELECT, &State->Config.LbrSelect);
+ // xrdmsr(MSR_LBR_TOS, &State->Data->LbrTos);
for (i = 0; i < (ULONG)LbrCapacity; i++)
{
- xrdmsr(MSR_LBR_NHM_FROM + i, &State->Data->Entries[i].From);
- xrdmsr(MSR_LBR_NHM_TO + i, &State->Data->Entries[i].To);
+ UINT64 FromMsr, ToMsr;
+
+ xrdmsr(MSR_LBR_NHM_FROM + i, &FromMsr);
+ xrdmsr(MSR_LBR_NHM_TO + i, &ToMsr);
+
+ LogInfo("LBR Entry %d: FROM = 0x%llx, TO = 0x%llx\n", i, FromMsr, ToMsr);
}
- xrelease_lock(&LbrStateLock, &OldIrql);
+ // xrelease_lock(&LbrStateLock, &OldIrql);
}
/**
@@ -163,13 +169,15 @@ LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall
VOID
LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- ULONGLONG DbgCtlMsr;
- KIRQL OldIrql;
+ UNREFERENCED_PARAMETER(State);
- xacquire_lock(&LbrStateLock, &OldIrql);
+ ULONGLONG DbgCtlMsr;
+ // KIRQL OldIrql;
+
+ // xacquire_lock(&LbrStateLock, &OldIrql);
// Force the selection mask
- xwrmsr(MSR_LBR_SELECT, State->Config.LbrSelect);
+ xwrmsr(MSR_LBR_SELECT, LBR_SELECT);
// Clear hardware state
xwrmsr(MSR_LBR_TOS, 0);
@@ -179,7 +187,7 @@ LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall
xwrmsr(MSR_LBR_NHM_TO + i, 0);
}
- xrelease_lock(&LbrStateLock, &OldIrql);
+ // xrelease_lock(&LbrStateLock, &OldIrql);
if (ApplyFromVmxRootMode)
{
@@ -266,7 +274,8 @@ LbrFlushLbr()
BOOLEAN
LbrStartLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- LBR_STATE * State;
+ // LBR_STATE * State;
+ UNREFERENCED_PARAMETER(Request);
if (LbrCapacity == 0)
{
@@ -274,36 +283,36 @@ LbrStartLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN A
return FALSE;
}
- State = LbrFindLbrState(Request->LbrConfig.Pid);
- if (State)
- {
- LogInfo("LIBIHT-COM: LBR already enabled for pid %d\n",
- Request->LbrConfig.Pid);
- return FALSE;
- }
+ // State = LbrFindLbrState(Request->LbrConfig.Pid);
+ // if (State)
+ // {
+ // LogInfo("LIBIHT-COM: LBR already enabled for pid %d\n",
+ // Request->LbrConfig.Pid);
+ // return FALSE;
+ // }
- State = LbrCreateLbrState();
- if (State == NULL)
- {
- LogInfo("LIBIHT-COM: Create LBR state failed\n");
- return FALSE;
- }
+ // State = LbrCreateLbrState();
+ // if (State == NULL)
+ // {
+ // LogInfo("LIBIHT-COM: Create LBR state failed\n");
+ // return FALSE;
+ // }
//
// Setup config fields for LBR state
//
- State->Parent = NULL;
- State->Config.Pid = Request->LbrConfig.Pid ? Request->LbrConfig.Pid : xgetcurrent_pid();
- State->Config.LbrSelect = Request->LbrConfig.LbrSelect ? Request->LbrConfig.LbrSelect : LBR_SELECT;
- LbrInsertLbrState(State);
+ // State->Parent = NULL;
+ // State->Config.Pid = Request->LbrConfig.Pid ? Request->LbrConfig.Pid : xgetcurrent_pid();
+ // State->Config.LbrSelect = Request->LbrConfig.LbrSelect ? Request->LbrConfig.LbrSelect : LBR_SELECT;
+ // LbrInsertLbrState(State);
//
// If the requesting process is the current process, trace it right away
//
- if (State->Config.Pid == xgetcurrent_pid())
- {
- LbrPutLbr(State, ApplyFromVmxRootMode, ApplyByVmcall);
- }
+ // if (State->Config.Pid == xgetcurrent_pid())
+ // {
+ LbrPutLbr(NULL, ApplyFromVmxRootMode, ApplyByVmcall);
+ // }
return TRUE;
}
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 18c3330c..3b16b4e9 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -21,6 +21,52 @@
*/
VOID
HyperTraceExamplePerformLbrTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+{
+ // LBR_IOCTL_REQUEST Request = {0};
+
+ // Request.LbrConfig.Pid = 0;
+ // Request.LbrConfig.LbrSelect = LBR_SELECT;
+
+ if (LbrStartLbr(NULL, ApplyFromVmxRootMode, ApplyByVmcall))
+ {
+ for (volatile int i = 0; i < 50; i++)
+ {
+ if (i % 2)
+ {
+ int a = i * 2;
+ a += 5;
+ }
+ else
+ {
+ __nop();
+ __nop();
+ }
+ }
+
+ // LBR_STATE * State = LbrFindLbrState(0);
+
+ // if (State)
+ // {
+ LogInfo("Dumping LBR Buffer...\n");
+
+ LbrGetLbr(NULL, ApplyFromVmxRootMode, ApplyByVmcall);
+ // }
+
+ // LbrDumpLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
+ // LbrStopLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
+ }
+}
+
+/**
+ * @brief Example of performing LBR trace 2
+ *
+ * @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
+ *
+ * @return BOOLEAN
+ */
+VOID
+HyperTraceExamplePerformLbrTrace2(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
LBR_IOCTL_REQUEST Request = {0};
From 7130daf65d5674df57d65da05c19d43bb45fddb0 Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 23 Apr 2026 19:58:51 +0200
Subject: [PATCH 130/323] remove unnecessary codes for LBR
---
hyperdbg/hypertrace/code/DpcRoutines.c | 22 +-
hyperdbg/hypertrace/code/Lbr.c | 429 +------------------
hyperdbg/hypertrace/code/Tracing.c | 145 +------
hyperdbg/hypertrace/header/GlobalVariables.h | 6 -
hyperdbg/hypertrace/header/Lbr.h | 72 +---
5 files changed, 21 insertions(+), 653 deletions(-)
diff --git a/hyperdbg/hypertrace/code/DpcRoutines.c b/hyperdbg/hypertrace/code/DpcRoutines.c
index eab62d39..541abc6b 100644
--- a/hyperdbg/hypertrace/code/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/DpcRoutines.c
@@ -23,19 +23,9 @@
BOOLEAN
DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
{
- LBR_IOCTL_REQUEST * CurrentRequest;
- ULONG CurrentCore;
-
UNREFERENCED_PARAMETER(Dpc);
UNREFERENCED_PARAMETER(DeferredContext);
- CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
-
- //
- // Get the current request (for current core)
- //
- CurrentRequest = &g_LbrRequestState[CurrentCore];
-
//
// Check if the initialization is being done for hypervisor environment or not
// If it is, then we need to perform some additional steps to enable LBR in VMX
@@ -81,23 +71,13 @@ DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
BOOLEAN
DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
{
- LBR_IOCTL_REQUEST * CurrentRequest;
- ULONG CurrentCore;
-
UNREFERENCED_PARAMETER(Dpc);
UNREFERENCED_PARAMETER(DeferredContext);
- CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
-
- //
- // Get the current request (for current core)
- //
- CurrentRequest = &g_LbrRequestState[CurrentCore];
-
//
// Disable LBR on all cores from VMX-root mode by VMCALL
//
- LbrStopLbr(CurrentRequest, TRUE, TRUE);
+ LbrStopLbr(TRUE, TRUE);
//
// Check if the initialization is being done for hypervisor environment or not
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index fbea170a..d4259b68 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -97,20 +97,16 @@ LbrInitialize()
/**
* @brief Read LBR MSRs and store the values in the provided LBR_STATE structure
*
- * @param State
* @param ApplyFromVmxRootMode
* @param ApplyByVmcall
*
* @return VOID
*/
VOID
-LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+LbrGetLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- UNREFERENCED_PARAMETER(State);
-
ULONG i;
ULONGLONG DbgCtlMsr;
- // KIRQL OldIrql;
if (ApplyFromVmxRootMode)
{
@@ -141,10 +137,6 @@ LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall
xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
}
- // xacquire_lock(&LbrStateLock, &OldIrql);
- // xrdmsr(MSR_LBR_SELECT, &State->Config.LbrSelect);
- // xrdmsr(MSR_LBR_TOS, &State->Data->LbrTos);
-
for (i = 0; i < (ULONG)LbrCapacity; i++)
{
UINT64 FromMsr, ToMsr;
@@ -154,32 +146,29 @@ LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall
LogInfo("LBR Entry %d: FROM = 0x%llx, TO = 0x%llx\n", i, FromMsr, ToMsr);
}
- // xrelease_lock(&LbrStateLock, &OldIrql);
}
/**
* @brief Write LBR MSRs from the provided LBR_STATE structure
*
- * @param State
* @param ApplyFromVmxRootMode
* @param ApplyByVmcall
*
* @return VOID
*/
VOID
-LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+LbrPutLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- UNREFERENCED_PARAMETER(State);
-
ULONGLONG DbgCtlMsr;
- // KIRQL OldIrql;
-
- // xacquire_lock(&LbrStateLock, &OldIrql);
+ //
// Force the selection mask
+ //
xwrmsr(MSR_LBR_SELECT, LBR_SELECT);
+ //
// Clear hardware state
+ //
xwrmsr(MSR_LBR_TOS, 0);
for (ULONG i = 0; i < (ULONG)LbrCapacity; i++)
{
@@ -187,8 +176,6 @@ LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall
xwrmsr(MSR_LBR_NHM_TO + i, 0);
}
- // xrelease_lock(&LbrStateLock, &OldIrql);
-
if (ApplyFromVmxRootMode)
{
if (ApplyByVmcall)
@@ -265,54 +252,21 @@ LbrFlushLbr()
/**
* @brief Start collecting LBR branches for a specific process and store the configuration in the global LBR state list
*
- * @param Request
* @param ApplyFromVmxRootMode
* @param ApplyByVmcall
*
* @return BOOLEAN
*/
BOOLEAN
-LbrStartLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+LbrStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- // LBR_STATE * State;
- UNREFERENCED_PARAMETER(Request);
-
if (LbrCapacity == 0)
{
LogInfo("LBR: Aborting, CPU model not supported.\n");
return FALSE;
}
- // State = LbrFindLbrState(Request->LbrConfig.Pid);
- // if (State)
- // {
- // LogInfo("LIBIHT-COM: LBR already enabled for pid %d\n",
- // Request->LbrConfig.Pid);
- // return FALSE;
- // }
-
- // State = LbrCreateLbrState();
- // if (State == NULL)
- // {
- // LogInfo("LIBIHT-COM: Create LBR state failed\n");
- // return FALSE;
- // }
-
- //
- // Setup config fields for LBR state
- //
- // State->Parent = NULL;
- // State->Config.Pid = Request->LbrConfig.Pid ? Request->LbrConfig.Pid : xgetcurrent_pid();
- // State->Config.LbrSelect = Request->LbrConfig.LbrSelect ? Request->LbrConfig.LbrSelect : LBR_SELECT;
- // LbrInsertLbrState(State);
-
- //
- // If the requesting process is the current process, trace it right away
- //
- // if (State->Config.Pid == xgetcurrent_pid())
- // {
- LbrPutLbr(NULL, ApplyFromVmxRootMode, ApplyByVmcall);
- // }
+ LbrPutLbr(ApplyFromVmxRootMode, ApplyByVmcall);
return TRUE;
}
@@ -320,382 +274,19 @@ LbrStartLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN A
/**
* @brief Stop collecting LBR branches for a specific process and remove the corresponding LBR state from the global list
*
- * @param Request
* @param ApplyFromVmxRootMode
* @param ApplyByVmcall
*
* @return BOOLEAN
*/
BOOLEAN
-LbrStopLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+LbrStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- LBR_STATE * State;
-
- State = LbrFindLbrState(Request->LbrConfig.Pid);
- if (State == NULL)
- {
- LogInfo("LIBIHT-COM: LBR not enabled for pid %d\n",
- Request->LbrConfig.Pid);
- return FALSE;
- }
-
- if (State->Config.Pid == xgetcurrent_pid())
- {
- LbrGetLbr(State, ApplyFromVmxRootMode, ApplyByVmcall);
- }
-
- LbrRemoveLbrState(State);
+ LbrGetLbr(ApplyFromVmxRootMode, ApplyByVmcall);
return TRUE;
}
-/**
- * @brief Dump LBR info for a specific process to debug logs and optionally copy the LBR data to user buffer
- *
- * @param Request
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
- *
- * @return BOOLEAN
- */
-
-BOOLEAN
-LbrDumpLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
-{
- UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
- UNREFERENCED_PARAMETER(ApplyByVmcall);
-
- LBR_STATE * State = LbrFindLbrState(Request->LbrConfig.Pid);
- if (State == NULL)
- return FALSE;
-
- ULONG CurrentIdx;
-
- LogInfo("LBR Chronological Trace\n");
-
- for (ULONG i = 1; i <= LbrCapacity; i++)
- {
- CurrentIdx = (ULONG)(State->Data->LbrTos + i) % (ULONG)LbrCapacity;
-
- if (State->Data->Entries[CurrentIdx].From == 0)
- continue;
-
- LogInfo("[%2u] FROM: 0x%llx TO: 0x%llx\n",
- CurrentIdx,
- State->Data->Entries[CurrentIdx].From,
- State->Data->Entries[CurrentIdx].To);
- }
- return TRUE;
-}
-
-/**
- * @brief Update LBR configuration for a specific process and optionally refresh the LBR MSRs if the current process is the owner
- *
- * @param Request
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
- *
- * @return BOOLEAN
- */
-BOOLEAN
-LbrConfigLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
-{
- LBR_STATE * State;
-
- State = LbrFindLbrState(Request->LbrConfig.Pid);
-
- if (State == NULL)
- {
- LogInfo("LIBIHT-COM: LBR not enabled for pid %d\n",
- Request->LbrConfig.Pid);
- return FALSE;
- }
-
- if (State->Config.Pid == xgetcurrent_pid())
- {
- LbrGetLbr(State, ApplyFromVmxRootMode, ApplyByVmcall);
- State->Config.LbrSelect = Request->LbrConfig.LbrSelect;
- LbrPutLbr(State, ApplyFromVmxRootMode, ApplyByVmcall);
- }
- else
- {
- State->Config.LbrSelect = Request->LbrConfig.LbrSelect;
- }
-
- return TRUE;
-}
-
-/**
- * @brief Create a new LBR_STATE structure with allocated memory for LBR data and entries
- *
- * @return LBR_STATE*
- */
-LBR_STATE *
-LbrCreateLbrState()
-{
- LBR_STATE * State;
- LBR_DATA * Data;
- LBR_STACK_ENTRY * Entries;
-
- State = xmalloc(sizeof(LBR_STATE));
- if (State == NULL)
- return NULL;
-
- Data = xmalloc(sizeof(LBR_DATA));
- if (Data == NULL)
- {
- xfree(State);
- return NULL;
- }
- SIZE_T TotalEntrySize = (SIZE_T)sizeof(LBR_STACK_ENTRY) * LbrCapacity;
- Entries = xmalloc(TotalEntrySize);
- if (Entries == NULL)
- {
- xfree(Data);
- xfree(State);
- return NULL;
- }
-
- xmemset(State, sizeof(LBR_STATE));
- xmemset(Data, sizeof(LBR_DATA));
- xmemset(Entries, TotalEntrySize);
-
- State->Data = Data;
- Data->Entries = Entries;
-
- return State;
-}
-
-/**
- * @brief Find the LBR_STATE structure for a specific process ID from the global list
- *
- * @param Pid
- * @return LBR_STATE*
- */
-LBR_STATE *
-LbrFindLbrState(ULONG Pid)
-{
- KIRQL OldIrql;
- LBR_STATE * RetState = NULL;
- PLIST_ENTRY Link;
-
- ULONG TargetPid = (Pid == 0) ? xgetcurrent_pid() : Pid;
- xacquire_lock(&LbrStateLock, &OldIrql);
-
- for (Link = LbrStateHead.Flink; Link != &LbrStateHead; Link = Link->Flink)
- {
- LBR_STATE * Curr = CONTAINING_RECORD(Link, LBR_STATE, List);
- if (Curr->Config.Pid == TargetPid)
- {
- RetState = Curr;
- break;
- }
- }
-
- xrelease_lock(&LbrStateLock, &OldIrql);
- return RetState;
-}
-
-/**
- * @brief Insert a new LBR_STATE structure into the global list with proper locking
- *
- * @param NewState
- * @return VOID
- */
-VOID
-LbrInsertLbrState(LBR_STATE * NewState)
-{
- KIRQL OldIrql;
-
- if (NewState == NULL)
- return;
-
- xacquire_lock(&LbrStateLock, &OldIrql);
- LogInfo("LIBIHT-COM: Insert LBR state for pid %d\n", NewState->Config.Pid);
- xlist_add(NewState->List, LbrStateHead);
- xrelease_lock(&LbrStateLock, &OldIrql);
-}
-
-/**
- * @brief Remove an existing LBR_STATE structure from the global list and free its associated memory with proper locking
- *
- * @param OldState
- * @return VOID
- */
-VOID
-LbrRemoveLbrState(LBR_STATE * OldState)
-{
- KIRQL OldIrql;
-
- if (OldState == NULL)
- return;
-
- xacquire_lock(&LbrStateLock, &OldIrql);
- LogInfo("LIBIHT-COM: Remove LBR state for pid %d\n", OldState->Config.Pid);
-
- xlist_del(OldState->List);
- xfree(OldState->Data->Entries);
- xfree(OldState->Data);
- xfree(OldState);
-
- xrelease_lock(&LbrStateLock, &OldIrql);
-}
-
-/**
- * @brief Free all LBR_STATE structures in the global list and their associated memory with proper locking
- *
- * @return VOID
- */
-VOID
-LbrFreeLbrStatList()
-{
- KIRQL OldIrql;
- LBR_STATE * CurrState;
- PLIST_ENTRY CurrLink;
-
- xacquire_lock(&LbrStateLock, &OldIrql);
-
- CurrLink = LbrStateHead.Flink;
- while (CurrLink != &LbrStateHead)
- {
- CurrState = CONTAINING_RECORD(CurrLink, LBR_STATE, List);
- CurrLink = CurrLink->Flink;
-
- xlist_del(CurrState->List);
- xfree(CurrState->Data->Entries);
- xfree(CurrState->Data);
- xfree(CurrState);
- }
-
- xrelease_lock(&LbrStateLock, &OldIrql);
-}
-
-/**
- * @brief Handle IOCTL requests for LBR operations by dispatching to the appropriate function based on the command
- *
- * @param Request
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
- *
- * @return BOOLEAN
- */
-BOOLEAN
-LbrIoctlHandler(XIOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
-{
- BOOLEAN Status = TRUE;
-
- LogInfo("LIBIHT-COM: LBR ioctl command %d.\n", Request->Cmd);
- switch (Request->Cmd)
- {
- case LIBIHT_IOCTL_ENABLE_LBR:
- Status = LbrStartLbr(&Request->Body.Lbr, ApplyFromVmxRootMode, ApplyByVmcall);
- break;
- case LIBIHT_IOCTL_DISABLE_LBR:
- Status = LbrStopLbr(&Request->Body.Lbr, ApplyFromVmxRootMode, ApplyByVmcall);
- break;
- case LIBIHT_IOCTL_DUMP_LBR:
- Status = LbrDumpLbr(&Request->Body.Lbr, ApplyFromVmxRootMode, ApplyByVmcall);
- break;
- case LIBIHT_IOCTL_CONFIG_LBR:
- Status = LbrConfigLbr(&Request->Body.Lbr, ApplyFromVmxRootMode, ApplyByVmcall);
- break;
- default:
- LogInfo("LIBIHT-COM: Invalid LBR ioctl command\n");
- Status = FALSE;
- break;
- }
-
- return Status;
-}
-
-/**
- * @brief Handle context switch events by saving the LBR state of the previous process and restoring the LBR state of the next process if they are being traced
- *
- * @param PrevPid
- * @param NextPid
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
- *
- * @return VOID
- */
-VOID
-LbrCswitchHandler(ULONG PrevPid,
- ULONG NextPid,
- BOOLEAN ApplyFromVmxRootMode,
- BOOLEAN ApplyByVmcall)
-{
- LBR_STATE * PrevState;
- LBR_STATE * NextState;
-
- PrevState = LbrFindLbrState(PrevPid);
- NextState = LbrFindLbrState(NextPid);
-
- if (PrevState)
- {
- LogInfo("LIBIHT-COM: LBR context switch from pid %d on cpu core %d\n",
- PrevState->Config.Pid,
- xcoreid());
- LbrGetLbr(PrevState, ApplyFromVmxRootMode, ApplyByVmcall);
- }
-
- if (NextState)
- {
- LogInfo("LIBIHT-COM: LBR context switch to pid %d on cpu core %d\n",
- NextState->Config.Pid,
- xcoreid());
- LbrPutLbr(NextState, ApplyFromVmxRootMode, ApplyByVmcall);
- }
-}
-
-/**
- * @brief Handle new process creation events by inheriting the LBR state from the parent process if it is being traced
- *
- * @param ParentPid
- * @param ChildPid
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
- *
- * @return VOID
- */
-VOID
-LbrNewProcHandler(
- ULONG ParentPid,
- ULONG ChildPid,
- BOOLEAN ApplyFromVmxRootMode,
- BOOLEAN ApplyByVmcall)
-{
- LBR_STATE *ParentState, *ChildState;
- KIRQL OldIrql;
-
- ParentState = LbrFindLbrState(ParentPid);
- if (ParentState == NULL)
- return;
-
- LogInfo("LIBIHT-COM: LBR new child process pid %d, parent pid %d\n",
- ChildPid,
- ParentPid);
-
- ChildState = LbrCreateLbrState();
- if (ChildState == NULL)
- return;
-
- xacquire_lock(&LbrStateLock, &OldIrql);
- ChildState->Parent = ParentState;
- ChildState->Config.Pid = ChildPid;
- ChildState->Config.LbrSelect = ParentState->Config.LbrSelect;
- xmemcpy(ChildState->Data,
- ParentState->Data,
- sizeof(LBR_DATA) + LbrCapacity * sizeof(LBR_STACK_ENTRY));
- xrelease_lock(&LbrStateLock, &OldIrql);
-
- LbrInsertLbrState(ChildState);
-
- if (ChildPid == xgetcurrent_pid())
- {
- LbrPutLbr(ChildState, ApplyFromVmxRootMode, ApplyByVmcall);
- }
-}
-
/**
* @brief Check if the current CPU supports LBR by examining the CPU family and model and looking up the corresponding LBR capacity
*
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 3b16b4e9..263151ec 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -22,12 +22,7 @@
VOID
HyperTraceExamplePerformLbrTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- // LBR_IOCTL_REQUEST Request = {0};
-
- // Request.LbrConfig.Pid = 0;
- // Request.LbrConfig.LbrSelect = LBR_SELECT;
-
- if (LbrStartLbr(NULL, ApplyFromVmxRootMode, ApplyByVmcall))
+ if (LbrStartLbr(ApplyFromVmxRootMode, ApplyByVmcall))
{
for (volatile int i = 0; i < 50; i++)
{
@@ -43,78 +38,12 @@ HyperTraceExamplePerformLbrTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVm
}
}
- // LBR_STATE * State = LbrFindLbrState(0);
-
- // if (State)
- // {
LogInfo("Dumping LBR Buffer...\n");
- LbrGetLbr(NULL, ApplyFromVmxRootMode, ApplyByVmcall);
- // }
-
- // LbrDumpLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
- // LbrStopLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
+ LbrGetLbr(ApplyFromVmxRootMode, ApplyByVmcall);
}
}
-/**
- * @brief Example of performing LBR trace 2
- *
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
- *
- * @return BOOLEAN
- */
-VOID
-HyperTraceExamplePerformLbrTrace2(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
-{
- LBR_IOCTL_REQUEST Request = {0};
-
- KAFFINITY Affinity = 1;
- KeSetSystemAffinityThread(Affinity);
-
- LbrInitialize();
-
- if (!LbrCheck())
- {
- return;
- }
-
- Request.LbrConfig.Pid = 0;
- Request.LbrConfig.LbrSelect = LBR_SELECT;
-
- if (LbrStartLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall))
- {
- for (volatile int i = 0; i < 50; i++)
- {
- if (i % 2)
- {
- int a = i * 2;
- a += 5;
- }
- else
- {
- __nop();
- __nop();
- }
- }
-
- LBR_STATE * State = LbrFindLbrState(0);
-
- if (State)
- {
- LbrGetLbr(State, ApplyFromVmxRootMode, ApplyByVmcall);
- }
-
- LogInfo("Dumping LBR Buffer...\n");
-
- LbrDumpLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
- LbrStopLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
- }
-
- KeRevertToUserAffinityThread();
-}
-
/**
* @brief Start LBR tracing for HyperTrace
* @param ApplyFromVmxRootMode
@@ -125,12 +54,7 @@ HyperTraceExamplePerformLbrTrace2(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByV
BOOLEAN
HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- LBR_IOCTL_REQUEST Request = {0};
-
- Request.LbrConfig.Pid = 0;
- Request.LbrConfig.LbrSelect = LBR_SELECT;
-
- return LbrStartLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
+ return LbrStartLbr(ApplyFromVmxRootMode, ApplyByVmcall);
}
/**
@@ -143,22 +67,11 @@ HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
BOOLEAN
HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- LBR_IOCTL_REQUEST Request = {0};
-
- Request.LbrConfig.Pid = 0;
- Request.LbrConfig.LbrSelect = LBR_SELECT;
-
- LBR_STATE * State = LbrFindLbrState(0);
-
- if (State)
- {
- LbrGetLbr(State, ApplyFromVmxRootMode, ApplyByVmcall);
- }
+ LbrGetLbr(ApplyFromVmxRootMode, ApplyByVmcall);
LogInfo("Dumping LBR Buffer...\n");
- LbrDumpLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
- return LbrStopLbr(&Request, ApplyFromVmxRootMode, ApplyByVmcall);
+ return LbrStopLbr(ApplyFromVmxRootMode, ApplyByVmcall);
}
/**
@@ -175,8 +88,6 @@ BOOLEAN
HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
BOOLEAN InitForHypervisorEnvironment)
{
- ULONG ProcessorsCount;
-
//
// Check if the LBR is supported on this CPU before initializing the hypertrace module,
//
@@ -204,16 +115,6 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
//
RtlCopyMemory(&g_Callbacks, HypertraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
- //
- // Read number of cores
- //
- ProcessorsCount = KeQueryActiveProcessorCount(0);
-
- //
- // Initialize the memory for LBR requests on all cores
- //
- g_LbrRequestState = PlatformAllocateMemory(sizeof(LBR_IOCTL_REQUEST) * ProcessorsCount);
-
//
// Set the flag to indicate whether the initialization is being done for hypervisor environment or not
//
@@ -261,8 +162,6 @@ HyperTraceEnableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
- ULONG ProcessorsCount;
-
//
// Check if LBR is already enabled or not
//
@@ -295,17 +194,6 @@ HyperTraceEnableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
//
LbrInitialize();
- //
- // Read number of cores
- //
- ProcessorsCount = KeQueryActiveProcessorCount(0);
-
- for (size_t i = 0; i < ProcessorsCount; i++)
- {
- g_LbrRequestState[i].LbrConfig.Pid = 0;
- g_LbrRequestState[i].LbrConfig.LbrSelect = LBR_SELECT;
- }
-
//
// Broadcast enabling LBR on all cores
//
@@ -386,8 +274,6 @@ HyperTraceShowLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReque
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
- LBR_IOCTL_REQUEST * CurrentRequest;
-
//
// Check if LBR is already disabled or not
//
@@ -404,19 +290,10 @@ HyperTraceShowLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReque
//
// Get the current request (for current core)
//
- CurrentRequest = &g_LbrRequestState[KeGetCurrentProcessorNumberEx(NULL)];
-
- LBR_STATE * State = LbrFindLbrState(0);
-
- if (State)
- {
- LbrGetLbr(State, TRUE, TRUE);
- }
+ LbrGetLbr(TRUE, TRUE);
LogInfo("Dumping LBR Buffer...\n");
- LbrDumpLbr(CurrentRequest, TRUE, TRUE);
-
return TRUE;
}
@@ -437,16 +314,6 @@ HyperTraceUninit()
// Set callbacks to not initialized
//
g_HyperTraceCallbacksInitialized = FALSE;
-
- //
- // UnAllocate the state buffer
- //
- PlatformFreeMemory(g_LbrRequestState);
-
- //
- // Set LBR request buffer to zero
- //
- g_LbrRequestState = NULL64_ZERO;
}
/**
diff --git a/hyperdbg/hypertrace/header/GlobalVariables.h b/hyperdbg/hypertrace/header/GlobalVariables.h
index e992236d..e415a05c 100644
--- a/hyperdbg/hypertrace/header/GlobalVariables.h
+++ b/hyperdbg/hypertrace/header/GlobalVariables.h
@@ -33,9 +33,3 @@ BOOLEAN g_InitForHypervisorEnvironment;
*
*/
BOOLEAN g_LastBranchRecordEnabled;
-
-/**
- * @brief Core specific state
- *
- */
-LBR_IOCTL_REQUEST * g_LbrRequestState;
diff --git a/hyperdbg/hypertrace/header/Lbr.h b/hyperdbg/hypertrace/header/Lbr.h
index e83690d8..1d18942f 100644
--- a/hyperdbg/hypertrace/header/Lbr.h
+++ b/hyperdbg/hypertrace/header/Lbr.h
@@ -34,52 +34,6 @@ typedef struct _LBR_STACK_ENTRY
} LBR_STACK_ENTRY, PLBR_STACK_ENTRY;
-typedef struct _LBR_DATA
-{
- ULONGLONG LbrTos;
- LBR_STACK_ENTRY * Entries;
-
-} LBR_DATA, *PLBR_DATA;
-
-typedef struct _LBR_CONFIG
-{
- ULONG Pid;
- ULONGLONG LbrSelect;
-
-} LBR_CONFIG, *PLBR_CONFIG;
-
-typedef struct _LBR_STATE
-{
- LBR_CONFIG Config;
- LBR_DATA * Data;
- PVOID Parent;
- LIST_ENTRY List;
-
-} LBR_STATE, *PLBR_STATE;
-
-typedef struct _LBR_IOCTL_REQUEST
-{
- LBR_CONFIG LbrConfig;
- LBR_DATA * Buffer;
-
-} LBR_IOCTL_REQUEST, *PLBR_IOCTL_REQUEST;
-
-typedef struct _XIOCTL_REQUEST
-{
- ULONG Cmd;
- union
- {
- LBR_IOCTL_REQUEST Lbr;
- } Body;
-
-} XIOCTL_REQUEST, *PXIOCTL_REQUEST;
-
-// IOCTL Commands
-#define LIBIHT_IOCTL_ENABLE_LBR 0x1
-#define LIBIHT_IOCTL_DISABLE_LBR 0x2
-#define LIBIHT_IOCTL_DUMP_LBR 0x3
-#define LIBIHT_IOCTL_CONFIG_LBR 0x4
-
//////////////////////////////////////////////////
// Platform Wrappers //
//////////////////////////////////////////////////
@@ -137,40 +91,22 @@ extern CPU_LBR_MAP CPU_LBR_MAPS[];
//////////////////////////////////////////////////
VOID
-LbrGetLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+LbrGetLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
VOID
-LbrPutLbr(LBR_STATE * State, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
-
-LBR_STATE *
-LbrCreateLbrState();
-
-LBR_STATE *
-LbrFindLbrState(ULONG Pid);
+LbrPutLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
BOOLEAN
LbrCheck();
-VOID
-LbrInsertLbrState(LBR_STATE * NewState);
-
-VOID
-LbrRemoveLbrState(LBR_STATE * OldState);
-
-VOID
-LbrFreeLbrStatList();
-
VOID
LbrInitialize();
BOOLEAN
-LbrStartLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+LbrStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
BOOLEAN
-LbrStopLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
-
-BOOLEAN
-LbrDumpLbr(LBR_IOCTL_REQUEST * Request, BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+LbrStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
extern ULONGLONG LbrCapacity;
extern LIST_ENTRY LbrStateHead;
From 81869ec715b0b17af937e04010c5603f3b2fde33 Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 24 Apr 2026 17:16:11 +0200
Subject: [PATCH 131/323] dump LBR based on TOS MSR
---
hyperdbg/hypertrace/code/Lbr.c | 49 ++++++++++++++++----
hyperdbg/hypertrace/code/Tracing.c | 21 +++++++++
hyperdbg/hypertrace/header/GlobalVariables.h | 6 +++
hyperdbg/hypertrace/header/Lbr.h | 16 ++++++-
4 files changed, 82 insertions(+), 10 deletions(-)
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index d4259b68..e5cbb898 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -105,8 +105,21 @@ LbrInitialize()
VOID
LbrGetLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- ULONG i;
- ULONGLONG DbgCtlMsr;
+ ULONGLONG DbgCtlMsr;
+ UINT64 LbrTos;
+ ULONG CurrentIdx;
+ LBR_STACK_ENTRY * State;
+ UINT32 CurrentCore = 0;
+
+ //
+ // Get the current core id
+ //
+ CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+
+ //
+ // Get the current processor LBR stack
+ //
+ State = &g_LbrStateList[CurrentCore];
if (ApplyFromVmxRootMode)
{
@@ -137,14 +150,33 @@ LbrGetLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
}
- for (i = 0; i < (ULONG)LbrCapacity; i++)
+ //
+ // Read the current TOS index to know where the most recent branch is stored
+ //
+ xrdmsr(MSR_LBR_TOS, &LbrTos);
+
+ //
+ // Dump LBR entries into the current core's state structure
+ //
+ for (ULONG i = 0; i < (ULONG)LbrCapacity; i++)
{
- UINT64 FromMsr, ToMsr;
+ xrdmsr(MSR_LBR_NHM_FROM + i, &State->BranchEntry[i].From);
+ xrdmsr(MSR_LBR_NHM_TO + i, &State->BranchEntry[i].To);
+ }
- xrdmsr(MSR_LBR_NHM_FROM + i, &FromMsr);
- xrdmsr(MSR_LBR_NHM_TO + i, &ToMsr);
+ LogInfo("LBR Chronological Trace\n");
- LogInfo("LBR Entry %d: FROM = 0x%llx, TO = 0x%llx\n", i, FromMsr, ToMsr);
+ for (ULONG i = 1; i <= LbrCapacity; i++)
+ {
+ CurrentIdx = (ULONG)(LbrTos + i) % (ULONG)LbrCapacity;
+
+ if (State->BranchEntry[CurrentIdx].From == 0)
+ continue;
+
+ LogInfo("[%2u] FROM: 0x%llx TO: 0x%llx\n",
+ CurrentIdx,
+ State->BranchEntry[CurrentIdx].From,
+ State->BranchEntry[CurrentIdx].To);
}
}
@@ -229,7 +261,8 @@ LbrFlushLbr()
//
// Disable LBR
//
- LogInfo("LIBIHT-COM: Flush LBR on cpu core: %d\n", xcoreid());
+ LogInfo("Flush LBR on cpu core: %d\n", xcoreid());
+
xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 263151ec..cbb2bb04 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -88,6 +88,8 @@ BOOLEAN
HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
BOOLEAN InitForHypervisorEnvironment)
{
+ UINT32 ProcessorsCount = 0;
+
//
// Check if the LBR is supported on this CPU before initializing the hypertrace module,
//
@@ -115,6 +117,16 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
//
RtlCopyMemory(&g_Callbacks, HypertraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
+ //
+ // Query the number of processors in the system to initialize the global LBR state list accordingly
+ //
+ ProcessorsCount = KeQueryActiveProcessorCount(0);
+
+ //
+ // Initialize the global LBR state list to hold LBR states for each core
+ //
+ g_LbrStateList = (LBR_STACK_ENTRY *)xmalloc(sizeof(LBR_STACK_ENTRY) * ProcessorsCount);
+
//
// Set the flag to indicate whether the initialization is being done for hypervisor environment or not
//
@@ -314,6 +326,15 @@ HyperTraceUninit()
// Set callbacks to not initialized
//
g_HyperTraceCallbacksInitialized = FALSE;
+
+ //
+ // Unallocate the global LBR state list if it is allocated
+ //
+ if (g_LbrStateList != NULL)
+ {
+ xfree(g_LbrStateList);
+ g_LbrStateList = NULL;
+ }
}
/**
diff --git a/hyperdbg/hypertrace/header/GlobalVariables.h b/hyperdbg/hypertrace/header/GlobalVariables.h
index e415a05c..0ff4d3a8 100644
--- a/hyperdbg/hypertrace/header/GlobalVariables.h
+++ b/hyperdbg/hypertrace/header/GlobalVariables.h
@@ -33,3 +33,9 @@ BOOLEAN g_InitForHypervisorEnvironment;
*
*/
BOOLEAN g_LastBranchRecordEnabled;
+
+/**
+ * @brief This will be a dynamically allocated array to hold LBR states for each core
+ *
+ */
+LBR_STACK_ENTRY * g_LbrStateList;
diff --git a/hyperdbg/hypertrace/header/Lbr.h b/hyperdbg/hypertrace/header/Lbr.h
index 1d18942f..a291f6e9 100644
--- a/hyperdbg/hypertrace/header/Lbr.h
+++ b/hyperdbg/hypertrace/header/Lbr.h
@@ -11,7 +11,7 @@
#pragma once
//////////////////////////////////////////////////
-// Globals //
+// Constants //
//////////////////////////////////////////////////
// Intel MSR Constants
@@ -23,15 +23,27 @@
#define MSR_LBR_NHM_TO 0x000006C0
#define LBR_SELECT 0x00000000
+/**
+ * @brief Maximum LBR capacity that is supported by processors
+ *
+ */
+#define MAXIMUM_LBR_CAPACITY 0x20 // 32 entries, which is the maximum supported by modern Intel CPUs
+
//////////////////////////////////////////////////
// Structures //
//////////////////////////////////////////////////
-typedef struct _LBR_STACK_ENTRY
+typedef struct _LBR_BRANCH_ENTRY
{
ULONGLONG From;
ULONGLONG To;
+} LBR_BRANCH_ENTRY, PLBR_BRANCH_ENTRY;
+
+typedef struct _LBR_STACK_ENTRY
+{
+ LBR_BRANCH_ENTRY BranchEntry[MAXIMUM_LBR_CAPACITY];
+
} LBR_STACK_ENTRY, PLBR_STACK_ENTRY;
//////////////////////////////////////////////////
From 03162c06ee2c9d1deb9a65e10313b35bd36faabc Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 24 Apr 2026 17:24:18 +0200
Subject: [PATCH 132/323] remove unused LBR functions
---
hyperdbg/hypertrace/code/Lbr.c | 17 +----------------
hyperdbg/hypertrace/code/Tracing.c | 5 -----
hyperdbg/hypertrace/header/Lbr.h | 3 ---
3 files changed, 1 insertion(+), 24 deletions(-)
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index e5cbb898..fc3df472 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -14,9 +14,7 @@
// Global Definitions //
//////////////////////////////////////////////////
-ULONGLONG LbrCapacity = 0;
-LIST_ENTRY LbrStateHead;
-KSPIN_LOCK LbrStateLock;
+ULONGLONG LbrCapacity = 0;
//
// Typical Intel LBR capacities based on CPU model
@@ -81,19 +79,6 @@ CPU_LBR_MAP CPU_LBR_MAPS[] = {
{0x35, 8},
{0x36, 8}};
-/**
- * @brief Initialize LBR state list and spinlock
- *
- * @param State
- * @return VOID
- */
-VOID
-LbrInitialize()
-{
- InitializeListHead(&LbrStateHead);
- KeInitializeSpinLock(&LbrStateLock);
-}
-
/**
* @brief Read LBR MSRs and store the values in the provided LBR_STATE structure
*
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index cbb2bb04..759490f2 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -201,11 +201,6 @@ HyperTraceEnableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
return FALSE;
}
- //
- // Enabling LBR
- //
- LbrInitialize();
-
//
// Broadcast enabling LBR on all cores
//
diff --git a/hyperdbg/hypertrace/header/Lbr.h b/hyperdbg/hypertrace/header/Lbr.h
index a291f6e9..e6d3916c 100644
--- a/hyperdbg/hypertrace/header/Lbr.h
+++ b/hyperdbg/hypertrace/header/Lbr.h
@@ -111,9 +111,6 @@ LbrPutLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
BOOLEAN
LbrCheck();
-VOID
-LbrInitialize();
-
BOOLEAN
LbrStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
From 566d38c39a41c5eb8cf11d52f284a652293063a0 Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 24 Apr 2026 18:35:15 +0200
Subject: [PATCH 133/323] create dmp function to enable, disable, save, and
dump LBR branches
---
hyperdbg/hyperkd/code/driver/Ioctl.c | 2 +-
hyperdbg/hypertrace/code/DpcRoutines.c | 3 +-
hyperdbg/hypertrace/code/Lbr.c | 248 +++++++++---------
hyperdbg/hypertrace/code/Tracing.c | 41 +--
hyperdbg/hypertrace/header/Lbr.h | 15 +-
.../include/SDK/headers/RequestStructures.h | 2 +-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 2 +-
.../commands/extension-commands/lbr.cpp | 8 +-
8 files changed, 168 insertions(+), 153 deletions(-)
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index 9963c36e..d352309d 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -1286,7 +1286,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Perform the HyperTrace operation
//
- HyperTracePerformOperation(HyperTraceOperationRequest, FALSE);
+ HyperTracePerformOperation(HyperTraceOperationRequest, TRUE);
Irp->IoStatus.Information = SIZEOF_HYPERTRACE_OPERATION_PACKETS;
Status = STATUS_SUCCESS;
diff --git a/hyperdbg/hypertrace/code/DpcRoutines.c b/hyperdbg/hypertrace/code/DpcRoutines.c
index 541abc6b..86554a37 100644
--- a/hyperdbg/hypertrace/code/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/DpcRoutines.c
@@ -43,8 +43,7 @@ DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
//
// Enable LBR on all cores from VMX-root mode by VMCALL
//
- // LbrStartLbr(CurrentRequest, TRUE, TRUE);
- HyperTraceExamplePerformLbrTrace(TRUE, TRUE);
+ LbrStartLbr(TRUE, TRUE);
//
// Wait for all DPCs to synchronize at this point
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/Lbr.c
index fc3df472..c7bef9dc 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/Lbr.c
@@ -80,102 +80,60 @@ CPU_LBR_MAP CPU_LBR_MAPS[] = {
{0x36, 8}};
/**
- * @brief Read LBR MSRs and store the values in the provided LBR_STATE structure
- *
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
+ * @brief Flush LBR MSRs by disabling LBR and clearing all LBR entries
*
* @return VOID
*/
VOID
-LbrGetLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+LbrFlushLbr()
{
- ULONGLONG DbgCtlMsr;
- UINT64 LbrTos;
- ULONG CurrentIdx;
- LBR_STACK_ENTRY * State;
- UINT32 CurrentCore = 0;
+ ULONG i;
+ ULONGLONG DbgCtlMsr;
+ KIRQL OldIrql;
+
+ xlock_core(&OldIrql);
//
- // Get the current core id
+ // Disable LBR
//
- CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+ LogInfo("Flush LBR on cpu core: %d\n", xcoreid());
+
+ xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
+ DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
+ xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
//
- // Get the current processor LBR stack
+ // Flush LBR registers
//
- State = &g_LbrStateList[CurrentCore];
+ xwrmsr(MSR_LBR_SELECT, 0);
+ xwrmsr(MSR_LBR_TOS, 0);
- if (ApplyFromVmxRootMode)
+ for (i = 0; i < LbrCapacity; i++)
{
- if (ApplyByVmcall)
- {
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
- }
- else
- {
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
- }
-
- DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
-
- if (ApplyByVmcall)
- {
- g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
- }
- else
- {
- g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
- }
- }
- else
- {
- xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
- DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
- xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+ xwrmsr(MSR_LBR_NHM_FROM + i, 0);
+ xwrmsr(MSR_LBR_NHM_TO + i, 0);
}
- //
- // Read the current TOS index to know where the most recent branch is stored
- //
- xrdmsr(MSR_LBR_TOS, &LbrTos);
-
- //
- // Dump LBR entries into the current core's state structure
- //
- for (ULONG i = 0; i < (ULONG)LbrCapacity; i++)
- {
- xrdmsr(MSR_LBR_NHM_FROM + i, &State->BranchEntry[i].From);
- xrdmsr(MSR_LBR_NHM_TO + i, &State->BranchEntry[i].To);
- }
-
- LogInfo("LBR Chronological Trace\n");
-
- for (ULONG i = 1; i <= LbrCapacity; i++)
- {
- CurrentIdx = (ULONG)(LbrTos + i) % (ULONG)LbrCapacity;
-
- if (State->BranchEntry[CurrentIdx].From == 0)
- continue;
-
- LogInfo("[%2u] FROM: 0x%llx TO: 0x%llx\n",
- CurrentIdx,
- State->BranchEntry[CurrentIdx].From,
- State->BranchEntry[CurrentIdx].To);
- }
+ xrelease_core(&OldIrql);
}
/**
- * @brief Write LBR MSRs from the provided LBR_STATE structure
+ * @brief Start collecting LBR branches
*
* @param ApplyFromVmxRootMode
* @param ApplyByVmcall
*
- * @return VOID
+ * @return BOOLEAN
*/
-VOID
-LbrPutLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+BOOLEAN
+LbrStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
+ if (LbrCapacity == 0)
+ {
+ LogInfo("LBR: Aborting, CPU model not supported.\n");
+ return FALSE;
+ }
+
ULONGLONG DbgCtlMsr;
//
@@ -227,82 +185,132 @@ LbrPutLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
}
+
+ return TRUE;
}
/**
- * @brief Flush LBR MSRs by disabling LBR and clearing all LBR entries
+ * @brief Save LBR branches
*
* @return VOID
*/
VOID
-LbrFlushLbr()
+LbrSaveLbr()
{
- ULONG i;
- ULONGLONG DbgCtlMsr;
- KIRQL OldIrql;
-
- xlock_core(&OldIrql);
+ UINT64 LbrTos;
+ LBR_STACK_ENTRY * State;
+ UINT32 CurrentCore = 0;
//
- // Disable LBR
+ // Get the current core id
//
- LogInfo("Flush LBR on cpu core: %d\n", xcoreid());
-
- xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
- DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
- xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+ CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
//
- // Flush LBR registers
+ // Get the current processor LBR stack
//
- xwrmsr(MSR_LBR_SELECT, 0);
- xwrmsr(MSR_LBR_TOS, 0);
+ State = &g_LbrStateList[CurrentCore];
- for (i = 0; i < LbrCapacity; i++)
+ //
+ // Read and store the current TOS index to know where the most recent branch is stored
+ //
+ xrdmsr(MSR_LBR_TOS, &LbrTos);
+ State->Tos = (UINT32)LbrTos;
+
+ //
+ // Dump LBR entries into the current core's state structure
+ //
+ for (ULONG i = 0; i < (ULONG)LbrCapacity; i++)
{
- xwrmsr(MSR_LBR_NHM_FROM + i, 0);
- xwrmsr(MSR_LBR_NHM_TO + i, 0);
+ xrdmsr(MSR_LBR_NHM_FROM + i, &State->BranchEntry[i].From);
+ xrdmsr(MSR_LBR_NHM_TO + i, &State->BranchEntry[i].To);
}
-
- xrelease_core(&OldIrql);
}
/**
- * @brief Start collecting LBR branches for a specific process and store the configuration in the global LBR state list
+ * @brief Stop collecting LBR branches
*
* @param ApplyFromVmxRootMode
* @param ApplyByVmcall
*
- * @return BOOLEAN
+ * @return VOID
*/
-BOOLEAN
-LbrStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
-{
- if (LbrCapacity == 0)
- {
- LogInfo("LBR: Aborting, CPU model not supported.\n");
- return FALSE;
- }
-
- LbrPutLbr(ApplyFromVmxRootMode, ApplyByVmcall);
-
- return TRUE;
-}
-
-/**
- * @brief Stop collecting LBR branches for a specific process and remove the corresponding LBR state from the global list
- *
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
- *
- * @return BOOLEAN
- */
-BOOLEAN
+VOID
LbrStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- LbrGetLbr(ApplyFromVmxRootMode, ApplyByVmcall);
+ ULONGLONG DbgCtlMsr;
- return TRUE;
+ if (ApplyFromVmxRootMode)
+ {
+ if (ApplyByVmcall)
+ {
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
+ }
+ else
+ {
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+ }
+
+ DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
+
+ if (ApplyByVmcall)
+ {
+ g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
+ }
+ else
+ {
+ g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
+ }
+ }
+ else
+ {
+ xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
+ DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
+ xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+ }
+
+ //
+ // Save the LBR entries
+ //
+ LbrSaveLbr();
+}
+
+/**
+ * @brief Dump collected LBR branches
+ *
+ * @return VOID
+ */
+VOID
+LbrDumpLbr()
+{
+ ULONG CurrentIdx;
+ LBR_STACK_ENTRY * State;
+ UINT32 CurrentCore = 0;
+
+ //
+ // Get the current core id
+ //
+ CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+
+ //
+ // Get the current processor LBR stack
+ //
+ State = &g_LbrStateList[CurrentCore];
+
+ LogInfo("LBR Chronological Trace\n");
+
+ for (ULONG i = 1; i <= LbrCapacity; i++)
+ {
+ CurrentIdx = (ULONG)(State->Tos + i) % (ULONG)LbrCapacity;
+
+ // if (State->BranchEntry[CurrentIdx].From == 0)
+ // continue;
+
+ LogInfo("[%2u] FROM: 0x%llx TO: 0x%llx\n",
+ CurrentIdx,
+ State->BranchEntry[CurrentIdx].From,
+ State->BranchEntry[CurrentIdx].To);
+ }
}
/**
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 759490f2..719d4344 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -40,7 +40,8 @@ HyperTraceExamplePerformLbrTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVm
LogInfo("Dumping LBR Buffer...\n");
- LbrGetLbr(ApplyFromVmxRootMode, ApplyByVmcall);
+ LbrStopLbr(ApplyFromVmxRootMode, ApplyByVmcall);
+ LbrDumpLbr(); // This will print the collected LBR branches to the log
}
}
@@ -62,16 +63,12 @@ HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
* @param ApplyFromVmxRootMode
* @param ApplyByVmcall
*
- * @return BOOLEAN
+ * @return VOID
*/
-BOOLEAN
+VOID
HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- LbrGetLbr(ApplyFromVmxRootMode, ApplyByVmcall);
-
- LogInfo("Dumping LBR Buffer...\n");
-
- return LbrStopLbr(ApplyFromVmxRootMode, ApplyByVmcall);
+ LbrStopLbr(ApplyFromVmxRootMode, ApplyByVmcall);
}
/**
@@ -268,7 +265,7 @@ HyperTraceDisableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRe
}
/**
- * @brief Show LBR tracing for HyperTrace
+ * @brief Dump LBR tracing for HyperTrace
*
* @param HyperTraceOperationRequest
* @param ApplyFromVmxRootMode
@@ -276,7 +273,7 @@ HyperTraceDisableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRe
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceShowLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+HyperTraceDumpLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
BOOLEAN ApplyFromVmxRootMode)
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
@@ -294,13 +291,23 @@ HyperTraceShowLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReque
return FALSE;
}
- //
- // Get the current request (for current core)
- //
- LbrGetLbr(TRUE, TRUE);
-
LogInfo("Dumping LBR Buffer...\n");
+ //
+ // Save the LBR state
+ //
+ LbrSaveLbr();
+
+ //
+ // This will print the collected LBR branches to the log
+ //
+ LbrDumpLbr();
+
+ //
+ // The operation was successful
+ //
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+
return TRUE;
}
@@ -376,11 +383,11 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
break;
- case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SHOW:
+ case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP:
LogInfo("HyperTrace: Showing LBR tracing...\n");
- HyperTraceShowLbrTracing(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceDumpLbrTracing(HyperTraceOperationRequest, ApplyFromVmxRootMode);
break;
diff --git a/hyperdbg/hypertrace/header/Lbr.h b/hyperdbg/hypertrace/header/Lbr.h
index e6d3916c..71ec907b 100644
--- a/hyperdbg/hypertrace/header/Lbr.h
+++ b/hyperdbg/hypertrace/header/Lbr.h
@@ -43,6 +43,7 @@ typedef struct _LBR_BRANCH_ENTRY
typedef struct _LBR_STACK_ENTRY
{
LBR_BRANCH_ENTRY BranchEntry[MAXIMUM_LBR_CAPACITY];
+ UINT32 Tos;
} LBR_STACK_ENTRY, PLBR_STACK_ENTRY;
@@ -102,21 +103,21 @@ extern CPU_LBR_MAP CPU_LBR_MAPS[];
// Prototypes //
//////////////////////////////////////////////////
-VOID
-LbrGetLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
-
-VOID
-LbrPutLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
-
BOOLEAN
LbrCheck();
BOOLEAN
LbrStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
-BOOLEAN
+VOID
LbrStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+VOID
+LbrSaveLbr();
+
+VOID
+LbrDumpLbr();
+
extern ULONGLONG LbrCapacity;
extern LIST_ENTRY LbrStateHead;
extern KSPIN_LOCK LbrStateLock;
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 333e30ce..9d81cfa6 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1272,7 +1272,7 @@ typedef enum _HYPERTRACE_OPERATION_REQUEST_TYPE
{
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE,
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE,
- HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SHOW,
+ HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP,
} HYPERTRACE_OPERATION_REQUEST_TYPE;
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index cdc1413b..627cb6dc 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -56,7 +56,7 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * LbrOperationRequest,
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
-IMPORT_EXPORT_HYPERTRACE BOOLEAN
+IMPORT_EXPORT_HYPERTRACE VOID
HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index c70bae02..4f6ce288 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -31,7 +31,7 @@ CommandLbrHelp()
ShowMessages("\n");
ShowMessages("\t\te.g : !lbr enable\n");
ShowMessages("\t\te.g : !lbr disable\n");
- ShowMessages("\t\te.g : !lbr show\n");
+ ShowMessages("\t\te.g : !lbr dump\n");
}
/**
@@ -140,9 +140,9 @@ CommandLbr(vector CommandTokens, string Command)
{
LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE;
}
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "show"))
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "dump"))
{
- LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SHOW;
+ LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP;
}
else
{
@@ -165,7 +165,7 @@ CommandLbr(vector CommandTokens, string Command)
{
ShowMessages("LBR disabled successfully\n");
}
- else if (LbrRequest.HyperTraceOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SHOW)
+ else if (LbrRequest.HyperTraceOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP)
{
ShowMessages("LBR branches are shown\n");
}
From 70f66139536ace85e9ad1f87a0e4424c94fc3661 Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 24 Apr 2026 20:04:30 +0200
Subject: [PATCH 134/323] add lbr_save and lbr_dump script engine functions for
accessing LBR commands
---
.../hwdbg/script/script_definitions.scala | 2 +-
hyperdbg/hypertrace/code/Tracing.c | 83 +-
.../include/SDK/headers/RequestStructures.h | 1 +
.../headers/ScriptEngineCommonDefinitions.h | 12 +-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 8 +-
.../commands/extension-commands/lbr.cpp | 9 +
hyperdbg/script-engine/code/parse-table.c | 1508 +++++++++--------
hyperdbg/script-engine/header/parse-table.h | 16 +-
.../python/Boolean_Expression_Grammar.txt | 2 +-
hyperdbg/script-engine/python/Grammar.txt | 4 +-
hyperdbg/script-eval/code/Functions.c | 20 +-
hyperdbg/script-eval/code/ScriptEngineEval.c | 18 +-
.../header/ScriptEngineInternalHeader.h | 8 +-
13 files changed, 901 insertions(+), 790 deletions(-)
diff --git a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
index 5f052f33..558ea50c 100644
--- a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
+++ b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
@@ -45,6 +45,6 @@ object ScriptConstantTypes {
object ScriptEvalFunc {
object ScriptOperators extends ChiselEnum {
- val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncLbr_start, sFuncLbr_stop, sFuncRdtsc, sFuncRdtscp, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
+ val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncLbr_save, sFuncLbr_dump, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
}
}
\ No newline at end of file
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/Tracing.c
index 719d4344..bd2a9e2d 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/Tracing.c
@@ -166,8 +166,8 @@ HyperTraceQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId)
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceEnableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceEnableLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
@@ -225,8 +225,8 @@ HyperTraceEnableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceDisableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceDisableLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
@@ -264,6 +264,51 @@ HyperTraceDisableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRe
return TRUE;
}
+/**
+ * @brief Save LBR tracing for HyperTrace
+ *
+ * @param HyperTraceOperationRequest
+ * @param ApplyFromVmxRootMode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceSaveLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
+{
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
+ //
+ // Check if LBR is already disabled or not
+ //
+ if (!g_LastBranchRecordEnabled)
+ {
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_DISABLED;
+ }
+
+ return FALSE;
+ }
+
+ LogInfo("Saving LBR Buffer...\n");
+
+ //
+ // Save the LBR state
+ //
+ LbrSaveLbr();
+
+ //
+ // The operation was successful
+ //
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
+
+ return TRUE;
+}
+
/**
* @brief Dump LBR tracing for HyperTrace
*
@@ -273,8 +318,8 @@ HyperTraceDisableLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRe
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceDumpLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceDumpLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
@@ -293,11 +338,6 @@ HyperTraceDumpLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReque
LogInfo("Dumping LBR Buffer...\n");
- //
- // Save the LBR state
- //
- LbrSaveLbr();
-
//
// This will print the collected LBR branches to the log
//
@@ -306,7 +346,10 @@ HyperTraceDumpLbrTracing(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReque
//
// The operation was successful
//
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
return TRUE;
}
@@ -322,7 +365,7 @@ HyperTraceUninit()
//
// Disable LBR tracing if it is still enabled
//
- HyperTraceDisableLbrTracing(NULL, FALSE);
+ HyperTraceDisableLbr(NULL, FALSE);
//
// Set callbacks to not initialized
@@ -371,7 +414,7 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
LogInfo("HyperTrace: Enabling LBR tracing...\n");
- HyperTraceEnableLbrTracing(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceEnableLbr(HyperTraceOperationRequest, ApplyFromVmxRootMode);
break;
@@ -379,7 +422,15 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
LogInfo("HyperTrace: Disabling LBR tracing...\n");
- HyperTraceDisableLbrTracing(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceDisableLbr(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+
+ break;
+
+ case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE:
+
+ LogInfo("HyperTrace: Saving LBR tracing...\n");
+
+ HyperTraceSaveLbr(HyperTraceOperationRequest, ApplyFromVmxRootMode);
break;
@@ -387,7 +438,7 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
LogInfo("HyperTrace: Showing LBR tracing...\n");
- HyperTraceDumpLbrTracing(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceDumpLbr(HyperTraceOperationRequest, ApplyFromVmxRootMode);
break;
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 9d81cfa6..b6d6326b 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1272,6 +1272,7 @@ typedef enum _HYPERTRACE_OPERATION_REQUEST_TYPE
{
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE,
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE,
+ HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE,
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP,
} HYPERTRACE_OPERATION_REQUEST_TYPE;
diff --git a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
index 4b2ff7e9..43be87c3 100644
--- a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
+++ b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
@@ -148,10 +148,10 @@ static const char *const SymbolTypeNames[] = {
#define FUNC_EVENT_TRACE_STEP_OUT 51
#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP 52
#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN 53
-#define FUNC_LBR_START 54
-#define FUNC_LBR_STOP 55
-#define FUNC_RDTSC 56
-#define FUNC_RDTSCP 57
+#define FUNC_RDTSC 54
+#define FUNC_RDTSCP 55
+#define FUNC_LBR_SAVE 56
+#define FUNC_LBR_DUMP 57
#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 58
#define FUNC_EVENT_INJECT 59
#define FUNC_POI 60
@@ -253,10 +253,10 @@ static const char *const FunctionNames[] = {
"FUNC_EVENT_TRACE_STEP_OUT",
"FUNC_EVENT_TRACE_INSTRUMENTATION_STEP",
"FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN",
-"FUNC_LBR_START",
-"FUNC_LBR_STOP",
"FUNC_RDTSC",
"FUNC_RDTSCP",
+"FUNC_LBR_SAVE",
+"FUNC_LBR_DUMP",
"FUNC_SPINLOCK_LOCK_CUSTOM_WAIT",
"FUNC_EVENT_INJECT",
"FUNC_POI",
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 627cb6dc..518be457 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -54,10 +54,12 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * LbrOperationRequest,
//////////////////////////////////////////////////
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+HyperTraceSaveLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode);
-IMPORT_EXPORT_HYPERTRACE VOID
-HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTraceDumpLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index 4f6ce288..bbfab809 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -31,6 +31,7 @@ CommandLbrHelp()
ShowMessages("\n");
ShowMessages("\t\te.g : !lbr enable\n");
ShowMessages("\t\te.g : !lbr disable\n");
+ ShowMessages("\t\te.g : !lbr save\n");
ShowMessages("\t\te.g : !lbr dump\n");
}
@@ -140,6 +141,10 @@ CommandLbr(vector CommandTokens, string Command)
{
LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE;
}
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "save"))
+ {
+ LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE;
+ }
else if (CompareLowerCaseStrings(CommandTokens.at(1), "dump"))
{
LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP;
@@ -165,6 +170,10 @@ CommandLbr(vector CommandTokens, string Command)
{
ShowMessages("LBR disabled successfully\n");
}
+ else if (LbrRequest.HyperTraceOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE)
+ {
+ ShowMessages("LBR branches are saved\n");
+ }
else if (LbrRequest.HyperTraceOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP)
{
ShowMessages("LBR branches are shown\n");
diff --git a/hyperdbg/script-engine/code/parse-table.c b/hyperdbg/script-engine/code/parse-table.c
index 04b11dd7..a1515038 100644
--- a/hyperdbg/script-engine/code/parse-table.c
+++ b/hyperdbg/script-engine/code/parse-table.c
@@ -245,6 +245,8 @@ const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
{NON_TERMINAL, "ARRAY_DIMS_READ_OPT"},
{NON_TERMINAL, "ARRAY_DIMS_READ_OPT"},
{NON_TERMINAL, "ARRAY_DIMS_READ"},
@@ -369,10 +371,10 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "event_trace_step_out"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_STEP_OUT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_instrumentation_step"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_INSTRUMENTATION_STEP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_instrumentation_step_in"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_INSTRUMENTATION_STEP_IN"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "lbr_start"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_START"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "lbr_stop"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_STOP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "rdtsc"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSC"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "rdtscp"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSCP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_SAVE"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_DUMP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "spinlock_lock_custom_wait"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@SPINLOCK_LOCK_CUSTOM_WAIT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_inject"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_INJECT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
@@ -478,6 +480,8 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{EPSILON, "eps"}},
{{KEYWORD, "rdtsc"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSC"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "rdtscp"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSCP"},{SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_SAVE"},{SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_DUMP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "db"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DB"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "dd"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DD"},{SPECIAL_TOKEN, ")"}},
@@ -646,8 +650,8 @@ const unsigned int RhsSize[RULES_COUNT]=
4,
4,
4,
-4,
-4,
+5,
+5,
5,
5,
7,
@@ -755,6 +759,8 @@ const unsigned int RhsSize[RULES_COUNT]=
1,
4,
4,
+4,
+4,
5,
5,
5,
@@ -832,262 +838,262 @@ const unsigned int RhsSize[RULES_COUNT]=
};
const char* NoneTerminalMap[NONETERMINAL_COUNT]=
{
-"S2",
-"WHILE_STATEMENT",
-"ASSIGNMENT_STATEMENT",
-"SIMPLE_ASSIGNMENT",
-"ASSIGNMENT_STATEMENT'",
-"E2'",
-"E4",
-"E2",
-"WstringNumber",
-"E3",
-"ELSE_STATEMENT",
-"VARIABLE_TYPE6",
+"INIT_LIST_CONT",
"ARRAY_DIMS2",
-"ARRAY_DIMS_WRITE_OPT",
+"ELSE_STATEMENT",
+"ARRAY_INIT",
+"StringNumber",
+"VARIABLE_TYPE2",
+"VARIABLE_TYPE5",
+"E12",
+"MULTIPLE_ASSIGNMENT2",
+"VA",
+"WstringNumber",
"CONST_NUMBER",
-"STRING",
-"ARRAY_DIMS",
+"VARIABLE_TYPE6",
+"VARIABLE_TYPE1",
+"STATEMENT",
+"SIMPLE_ASSIGNMENT",
+"ELSIF_STATEMENT'",
+"L_VALUE",
+"VARIABLE_TYPE3",
+"VA3",
+"E5'",
+"ARRAY_DIMS_WRITE2",
+"E2'",
+"INIT_LIST",
+"ASSIGNMENT_STATEMENT",
+"ARRAY_DIMS_READ",
+"STATEMENT2",
+"S",
+"BOOLEAN_EXPRESSION",
+"ASSIGNMENT_STATEMENT'",
+"E1",
+"E3",
"ARRAY_DIMS_READ_OPT",
"WSTRING",
-"VA3",
-"VARIABLE_TYPE2",
-"ELSIF_STATEMENT",
-"VARIABLE_TYPE1",
-"VARIABLE_TYPE3",
-"END_OF_IF",
-"MULTIPLE_ASSIGNMENT2",
-"INIT_LIST_TAIL",
-"ARRAY_DIMS_READ2",
-"INIT_LIST",
-"E0'",
-"ARRAY_DIMS_WRITE",
-"INC_DEC'",
-"VA2",
-"StringNumber",
-"IF_STATEMENT",
-"ARRAY_DIMS_READ",
-"S",
-"VARIABLE_TYPE4",
-"E5'",
-"INIT_LIST_CONT",
-"E5",
-"L_VALUE",
-"E1'",
-"E3'",
-"VARIABLE_TYPE5",
-"ARRAY_INIT",
-"VA",
-"E1",
-"RETURN",
+"E2",
"FOR_STATEMENT",
-"MULTIPLE_ASSIGNMENT",
-"E12",
-"CALL_FUNC_STATEMENT",
-"ARRAY_DIMS_WRITE2",
-"STATEMENT",
+"WHILE_STATEMENT",
+"E1'",
+"ARRAY_DIMS_WRITE_OPT",
+"S2",
"INC_DEC",
-"BOOLEAN_EXPRESSION",
-"STATEMENT2",
+"E5",
+"RETURN",
+"CALL_FUNC_STATEMENT",
+"IF_STATEMENT",
+"DO_WHILE_STATEMENT",
+"MULTIPLE_ASSIGNMENT",
+"ARRAY_DIMS",
+"E4",
+"INC_DEC'",
"EXPRESSION",
-"ELSIF_STATEMENT'",
-"E4'",
+"ARRAY_DIMS_READ2",
+"INIT_LIST_TAIL",
+"END_OF_IF",
+"VARIABLE_TYPE4",
+"E0'",
+"E3'",
+"ELSIF_STATEMENT",
+"VA2",
"INIT_ITEM",
-"DO_WHILE_STATEMENT"
+"STRING",
+"E4'",
+"ARRAY_DIMS_WRITE"
};
const char* TerminalMap[TERMINAL_COUNT]=
{
-"_string",
-"_binary",
-"&=",
-"not",
-"spinlock_unlock",
-"|",
-"--",
-"~",
-"neg",
-"event_trace_step",
-"ed_pa",
-"strlen",
-"_decimal",
-"do",
-"wcsncmp",
-"low",
-"dd_pa",
-"_register",
-"+=",
-"virtual_to_physical",
-"_pseudo_register",
-"interlocked_decrement",
-"event_inject_error_code",
-"eq",
-">>",
-"interlocked_increment",
-"|=",
-"eb_pa",
-"db_pa",
-"<<",
-"}",
-"flush",
-"poi_pa",
-"<<=",
-"wcslen",
-"reference",
-",",
-"-=",
-"eb",
-"event_clear",
-")",
-"formats",
-"event_trace_step_out",
-"if",
-"physical_to_virtual",
-"memcmp",
-"event_inject",
-"{",
-"hi",
-"hi_pa",
-"+",
-"_script_variable_type",
-"low_pa",
-"_wstring",
-"continue",
-"db",
-"pause",
-"microsleep",
-"interlocked_compare_exchange",
-"disassemble_len32",
-"_global_id",
-"interlocked_exchange",
-"dq",
"event_enable",
-"print",
-"%=",
-"disassemble_len",
-"_function_id",
-"$",
-"lbr_start",
-"event_sc",
-"strncmp",
-"elsif",
-"++",
-"event_trace_instrumentation_step_in",
-"printf",
-";",
+"not",
+"formats",
"memcpy_pa",
-"wcscmp",
-"dw",
-"event_disable",
-"test_statement",
-"memcpy",
-"-",
-"spinlock_lock_custom_wait",
-"_local_id",
-"lbr_stop",
-"%",
-"_octal",
-"_function_parameter_id",
"eq_pa",
-">>=",
-"dq_pa",
-"dd",
-"return",
-"dw_pa",
-"event_trace_step_in",
-"check_address",
-"while",
-"event_trace_instrumentation_step",
-"/=",
-"interlocked_exchange_add",
-"*",
-"&",
-"]",
-"break",
-"rdtscp",
-"(",
-"poi",
-"strcmp",
-"else",
-"ed",
-"^=",
-"^",
-"#include",
-"rdtsc",
"spinlock_lock",
-"=",
-"/",
+"_binary",
+"_local_id",
+"low",
+"dq",
+"event_inject_error_code",
+"microsleep",
+"_register",
+"dw",
+"]",
+">>",
+"interlocked_compare_exchange",
+"else",
+"wcscmp",
+"eq",
+"dq_pa",
+"event_trace_step_out",
+"~",
+"++",
+"_script_variable_type",
"_hex",
+"return",
+"printf",
+"rdtsc",
+"_string",
+"(",
+")",
+"db_pa",
+"strncmp",
+"strlen",
+"/",
+"&=",
+"if",
+"#include",
+"_octal",
+"_decimal",
+"lbr_dump",
+"interlocked_increment",
+"eb_pa",
+"+=",
+"_global_id",
+"<<",
+"event_trace_step",
+"memcpy",
+"spinlock_unlock",
+"interlocked_exchange",
+"flush",
+"wcslen",
+"pause",
+"test_statement",
+"dd_pa",
+"db",
+"disassemble_len",
+"ed",
+"check_address",
+",",
+"event_clear",
+"_function_parameter_id",
+"spinlock_lock_custom_wait",
+"wcsncmp",
+"low_pa",
+"|=",
+"<<=",
+"event_trace_instrumentation_step",
+"^=",
+"$",
+"neg",
+"physical_to_virtual",
+"ed_pa",
+"^",
+"while",
+"event_sc",
+"strcmp",
+"eb",
+"event_trace_step_in",
+"%",
+"dw_pa",
+"event_inject",
+"&",
+"*",
"*=",
-"for",
+"event_disable",
+"rdtscp",
"disassemble_len64",
-"["
+"elsif",
+"{",
+"-",
+"poi",
+"hi_pa",
+"lbr_save",
+"[",
+"%=",
+"_pseudo_register",
+"do",
+"+",
+"/=",
+"-=",
+"_wstring",
+"event_trace_instrumentation_step_in",
+"reference",
+"memcmp",
+"interlocked_decrement",
+"for",
+"=",
+"|",
+">>=",
+"dd",
+";",
+"print",
+"continue",
+"hi",
+"break",
+"}",
+"--",
+"interlocked_exchange_add",
+"_function_id",
+"virtual_to_physical",
+"poi_pa",
+"disassemble_len32"
};
const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]=
{
- {2147483648 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,2147483648 ,16 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,15 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 },
- {2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 },
- {2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,273 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,272 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 },
- {2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,185 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,147 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 },
- {2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,55 },
- {2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,245 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,144 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,248 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,248 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 },
- {2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 },
- {2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,267 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,267 ,267 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,267 ,267 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,267 ,267 ,2147483648 ,267 ,267 ,2147483648 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,267 ,267 ,2147483648 ,2147483648 ,267 ,267 ,267 ,267 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,267 ,2147483648 },
- {271 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 },
- {2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,47 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 },
- {2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 },
- {2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,28 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,253 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,257 ,205 ,2147483648 ,231 ,234 ,253 ,2147483648 ,240 ,207 ,222 ,242 ,2147483648 ,217 ,254 ,214 ,2147483648 ,227 ,2147483648 ,213 ,2147483648 ,230 ,221 ,2147483648 ,2147483648 ,2147483648 ,218 ,2147483648 ,238 ,215 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,216 ,236 ,2147483648 ,2147483648 ,206 ,219 ,256 ,2147483648 ,220 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,233 ,211 ,242 ,228 ,204 ,2147483648 ,2147483648 ,2147483648 ,210 ,243 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,203 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,242 ,2147483648 ,2147483648 ,253 ,242 ,232 ,2147483648 ,224 ,202 ,2147483648 ,223 ,2147483648 ,209 ,2147483648 ,2147483648 ,2147483648 ,229 ,258 ,259 ,2147483648 ,2147483648 ,199 ,241 ,200 ,235 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,212 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,105 ,80 ,2147483648 ,2147483648 ,2147483648 ,102 ,86 ,128 ,131 ,2147483648 ,2147483648 ,140 ,104 ,119 ,2147483648 ,2147483648 ,114 ,2147483648 ,111 ,137 ,124 ,2147483648 ,110 ,2147483648 ,127 ,118 ,2147483648 ,2147483648 ,85 ,115 ,2147483648 ,135 ,112 ,2147483648 ,2147483648 ,123 ,77 ,2147483648 ,74 ,88 ,2147483648 ,113 ,133 ,96 ,2147483648 ,103 ,116 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,98 ,84 ,82 ,130 ,108 ,2147483648 ,125 ,101 ,75 ,73 ,2147483648 ,107 ,2147483648 ,2147483648 ,91 ,81 ,134 ,2147483648 ,2147483648 ,90 ,83 ,2147483648 ,139 ,136 ,100 ,76 ,78 ,138 ,2147483648 ,95 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,121 ,99 ,2147483648 ,120 ,87 ,106 ,2147483648 ,89 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,97 ,132 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,93 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 },
- {2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,58 },
- {2147483648 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,5 ,9 ,9 ,9 ,7 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,3 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,12 ,9 ,2147483648 ,11 ,9 ,9 ,9 ,9 ,9 ,7 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,8 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,7 ,9 ,2147483648 ,2147483648 ,7 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,4 ,9 ,2147483648 ,9 ,7 ,2147483648 ,2147483648 ,10 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,13 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,6 ,9 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,19 ,23 ,23 ,23 ,21 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,17 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,26 ,23 ,2147483648 ,25 ,23 ,23 ,23 ,23 ,23 ,21 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,22 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,21 ,23 ,2147483648 ,2147483648 ,21 ,23 ,2147483648 ,23 ,23 ,27 ,23 ,23 ,23 ,18 ,23 ,2147483648 ,23 ,21 ,2147483648 ,2147483648 ,24 ,23 ,2147483648 ,23 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,20 ,23 ,2147483648 },
- {2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,42 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
+ {2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,47 ,2147483648 ,46 ,46 ,46 ,46 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,147 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,273 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,272 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,210 ,2147483648 ,2147483648 ,234 ,2147483648 ,255 ,244 ,209 ,206 ,2147483648 ,2147483648 ,244 ,205 ,2147483648 ,2147483648 ,235 ,2147483648 ,241 ,229 ,226 ,2147483648 ,259 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,198 ,2147483648 ,243 ,2147483648 ,223 ,239 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,255 ,201 ,215 ,232 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,240 ,2147483648 ,2147483648 ,224 ,203 ,212 ,227 ,211 ,2147483648 ,2147483648 ,244 ,2147483648 ,242 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,207 ,218 ,233 ,2147483648 ,2147483648 ,2147483648 ,237 ,228 ,2147483648 ,2147483648 ,225 ,2147483648 ,261 ,260 ,2147483648 ,2147483648 ,199 ,214 ,2147483648 ,2147483648 ,257 ,202 ,221 ,200 ,2147483648 ,2147483648 ,256 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,217 ,238 ,216 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,204 ,2147483648 ,2147483648 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,231 ,245 ,219 ,220 ,213 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,275 ,2147483648 ,274 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,274 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,7 ,9 ,9 ,9 ,9 ,7 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,3 ,13 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,7 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,7 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,4 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,7 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,6 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,11 ,9 ,10 ,2147483648 ,2147483648 ,9 ,8 ,9 ,9 ,9 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,197 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,184 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,21 ,23 ,23 ,23 ,23 ,21 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,26 ,2147483648 ,27 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,21 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,21 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,18 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,21 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,20 ,2147483648 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,25 ,23 ,24 ,2147483648 ,2147483648 ,23 ,22 ,23 ,23 ,23 },
+ {0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,2 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,1 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2 ,2147483648 ,0 ,0 ,0 ,0 ,0 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,68 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,2147483648 ,2147483648 ,66 ,64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,179 },
+ {2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,185 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,182 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,181 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,15 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,16 ,2147483648 ,14 ,14 ,14 ,14 ,14 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,193 },
+ {2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,28 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 },
+ {75 ,105 ,74 ,139 ,129 ,79 ,2147483648 ,2147483648 ,104 ,101 ,137 ,82 ,2147483648 ,100 ,2147483648 ,2147483648 ,130 ,2147483648 ,136 ,124 ,121 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,91 ,2147483648 ,2147483648 ,2147483648 ,118 ,134 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,110 ,127 ,2147483648 ,2147483648 ,2147483648 ,86 ,138 ,80 ,125 ,85 ,135 ,84 ,78 ,119 ,98 ,107 ,122 ,106 ,2147483648 ,77 ,2147483648 ,95 ,140 ,117 ,2147483648 ,2147483648 ,89 ,2147483648 ,2147483648 ,102 ,113 ,128 ,2147483648 ,2147483648 ,81 ,132 ,123 ,87 ,2147483648 ,120 ,96 ,2147483648 ,2147483648 ,2147483648 ,76 ,92 ,109 ,2147483648 ,2147483648 ,2147483648 ,97 ,116 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,90 ,112 ,133 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,73 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,114 ,115 ,108 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,189 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,165 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,163 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,166 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,176 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,177 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,188 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,144 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 },
+ {2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,268 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,269 },
+ {2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,42 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
};
const char* KeywordList[]= {
"print",
@@ -1108,10 +1114,10 @@ const char* KeywordList[]= {
"event_trace_step_out",
"event_trace_instrumentation_step",
"event_trace_instrumentation_step_in",
-"lbr_start",
-"lbr_stop",
"rdtsc",
"rdtscp",
+"lbr_save",
+"lbr_dump",
"spinlock_lock_custom_wait",
"event_inject",
"poi",
@@ -1160,6 +1166,8 @@ const char* KeywordList[]= {
"wcsncmp",
"rdtsc",
"rdtscp",
+"lbr_save",
+"lbr_dump",
"poi",
"db",
"dd",
@@ -1325,12 +1333,12 @@ const char* ZeroOpFunc1[] = {
"@EVENT_TRACE_STEP_OUT",
"@EVENT_TRACE_INSTRUMENTATION_STEP",
"@EVENT_TRACE_INSTRUMENTATION_STEP_IN",
-"@LBR_START",
-"@LBR_STOP",
};
const char* ZeroOpFunc2[] = {
"@RDTSC",
"@RDTSCP",
+"@LBR_SAVE",
+"@LBR_DUMP",
};
const char* VarArgFunc1[] = {
"@PRINTF"
@@ -1389,10 +1397,10 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@EVENT_TRACE_STEP_OUT", FUNC_EVENT_TRACE_STEP_OUT},
{"@EVENT_TRACE_INSTRUMENTATION_STEP", FUNC_EVENT_TRACE_INSTRUMENTATION_STEP},
{"@EVENT_TRACE_INSTRUMENTATION_STEP_IN", FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN},
-{"@LBR_START", FUNC_LBR_START},
-{"@LBR_STOP", FUNC_LBR_STOP},
{"@RDTSC", FUNC_RDTSC},
{"@RDTSCP", FUNC_RDTSCP},
+{"@LBR_SAVE", FUNC_LBR_SAVE},
+{"@LBR_DUMP", FUNC_LBR_DUMP},
{"@SPINLOCK_LOCK_CUSTOM_WAIT", FUNC_SPINLOCK_LOCK_CUSTOM_WAIT},
{"@EVENT_INJECT", FUNC_EVENT_INJECT},
{"@POI", FUNC_POI},
@@ -1441,6 +1449,8 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@WCSNCMP", FUNC_WCSNCMP},
{"@RDTSC", FUNC_RDTSC},
{"@RDTSCP", FUNC_RDTSCP},
+{"@LBR_SAVE", FUNC_LBR_SAVE},
+{"@LBR_DUMP", FUNC_LBR_DUMP},
{"@POI", FUNC_POI},
{"@DB", FUNC_DB},
{"@DD", FUNC_DD},
@@ -1740,6 +1750,8 @@ const struct _SCRIPT_ENGINE_TOKEN LalrLhs[RULES_COUNT]=
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
{NON_TERMINAL, "E13"},
{NON_TERMINAL, "VA2"},
{NON_TERMINAL, "VA2"},
@@ -1811,6 +1823,8 @@ const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "disassemble_len"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN"}},
{{KEYWORD, "disassemble_len32"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN32"}},
{{KEYWORD, "disassemble_len64"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN64"}},
+ {{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_SAVE"}},
+ {{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_DUMP"}},
{{KEYWORD, "interlocked_increment"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"}},
{{KEYWORD, "interlocked_decrement"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"}},
{{KEYWORD, "reference"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@REFERENCE"}},
@@ -1935,6 +1949,8 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
5,
5,
5,
+5,
+5,
7,
7,
7,
@@ -1983,117 +1999,119 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
};
const char* LalrNoneTerminalMap[NONETERMINAL_COUNT]=
{
-"E4",
-"WstringNumber",
-"E3",
-"STRING",
-"EXP",
-"E13",
"CMP",
-"ARRAY1",
+"StringNumber",
+"E12",
+"B2",
+"B1",
+"WstringNumber",
+"E13",
+"B4",
"VA3",
+"E10",
+"ARRAY2",
+"S",
+"ARRAY4",
+"E3",
+"WSTRING",
+"B3",
+"EXP",
+"E5",
"ARRAY3",
"B5",
-"ARRAY2",
-"B3",
-"VA2",
-"B1",
-"StringNumber",
-"B4",
-"S",
-"E5",
-"ARRAY4",
+"E4",
"B6",
-"E12",
-"E10",
-"B2",
+"VA2",
+"STRING",
"BE",
-"WSTRING"
+"ARRAY1"
};
const char* LalrTerminalMap[TERMINAL_COUNT]=
{
-"_string",
-"_binary",
"not",
-"|",
-"~",
-"neg",
-"ed_pa",
-"strlen",
-"_decimal",
-"wcsncmp",
-"low",
-"dd_pa",
-"_register",
-"virtual_to_physical",
-"_pseudo_register",
-"interlocked_decrement",
-"eq",
-">",
-">=",
-"&&",
-">>",
-"interlocked_increment",
-"<<",
-"db_pa",
-"eb_pa",
-"wcslen",
-"poi_pa",
-"reference",
-",",
-"eb",
-")",
-"physical_to_virtual",
-"memcmp",
-"==",
-"hi",
-"+",
-"hi_pa",
-"low_pa",
-"_wstring",
-"db",
-"<=",
-"interlocked_compare_exchange",
-"disassemble_len32",
-"_global_id",
-"interlocked_exchange",
-"dq",
-"disassemble_len",
-"_function_id",
-"$",
-"!=",
-"strncmp",
-"||",
-"wcscmp",
-"dw",
-"-",
-"_local_id",
-"%",
-"_octal",
-"_function_parameter_id",
"eq_pa",
+"_binary",
+"_local_id",
+"!=",
+"low",
+"dq",
+"_register",
+"dw",
+"]",
+">>",
+"interlocked_compare_exchange",
+"wcscmp",
+"eq",
"dq_pa",
-"dd",
-"dw_pa",
+"~",
+"_hex",
+"==",
+"_string",
+"(",
+")",
+"db_pa",
+"strncmp",
+"strlen",
+"/",
+"_octal",
+"_decimal",
+"lbr_dump",
+"interlocked_increment",
+"eb_pa",
+"_global_id",
+"<<",
+"interlocked_exchange",
+"wcslen",
+">=",
+"<=",
+"dd_pa",
+"db",
+"disassemble_len",
+"ed",
"check_address",
-"interlocked_exchange_add",
+",",
+"_function_parameter_id",
+"wcsncmp",
+"low_pa",
+"$",
+"neg",
+"physical_to_virtual",
+"ed_pa",
+"^",
+"strcmp",
+"eb",
+"%",
+"dw_pa",
+"&",
"<",
"*",
-"&",
-"]",
-"(",
-"poi",
-"strcmp",
-"ed",
-"^",
-"/",
-"_hex",
"disassemble_len64",
-"["
+"-",
+"poi",
+"hi_pa",
+"lbr_save",
+"[",
+"_pseudo_register",
+"||",
+"+",
+">",
+"_wstring",
+"&&",
+"reference",
+"memcmp",
+"interlocked_decrement",
+"|",
+"dd",
+"hi",
+"interlocked_exchange_add",
+"_function_id",
+"virtual_to_physical",
+"poi_pa",
+"disassemble_len32"
};
const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{
- {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,7 ,18 ,5 ,2147483648 ,3 ,2147483648 ,6 ,1 ,13 ,2147483648 ,8 ,15 ,14 ,4 ,2 ,2147483648 },
+ {9 ,2147483648 ,15 ,4 ,3 ,2147483648 ,16 ,6 ,2147483648 ,14 ,18 ,1 ,2147483648 ,11 ,2147483648 ,5 ,10 ,13 ,2147483648 ,7 ,12 ,8 ,2147483648 ,2147483648 ,2 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2111,46 +2129,46 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {9 ,2147483648 ,15 ,4 ,3 ,2147483648 ,16 ,6 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,5 ,10 ,13 ,2147483648 ,7 ,12 ,8 ,2147483648 ,2147483648 ,126 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,7 ,18 ,5 ,2147483648 ,3 ,2147483648 ,6 ,2147483648 ,13 ,2147483648 ,8 ,15 ,14 ,4 ,123 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2164,81 +2182,83 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,7 ,18 ,5 ,2147483648 ,2147483648 ,2147483648 ,6 ,2147483648 ,13 ,2147483648 ,8 ,15 ,14 ,144 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,7 ,18 ,145 ,2147483648 ,2147483648 ,2147483648 ,6 ,2147483648 ,13 ,2147483648 ,8 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,7 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,13 ,2147483648 ,8 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,147 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,8 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,10 ,16 ,9 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,148 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,149 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,150 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,151 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,152 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,153 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,154 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,159 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,160 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,161 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,162 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,166 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,167 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,168 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,171 ,11 ,2147483648 ,169 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,170 },
- {12 ,2147483648 ,11 ,2147483648 ,173 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,174 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,175 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,176 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,177 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,178 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {9 ,2147483648 ,15 ,148 ,2147483648 ,2147483648 ,16 ,6 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,5 ,10 ,13 ,2147483648 ,7 ,12 ,8 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {9 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,6 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,149 ,10 ,13 ,2147483648 ,7 ,12 ,8 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {9 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,150 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,10 ,13 ,2147483648 ,7 ,12 ,8 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {9 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,10 ,13 ,2147483648 ,151 ,12 ,8 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {9 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,10 ,13 ,2147483648 ,2147483648 ,12 ,152 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,153 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,154 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,155 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,156 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,157 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,158 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,163 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,164 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,165 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,166 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,167 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,170 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,173 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,171 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
+ {2147483648 ,175 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,171 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,176 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,179 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,178 ,2147483648 ,177 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,181 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,171 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,182 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,183 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,184 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,185 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,187 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,186 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,188 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,189 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,190 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,192 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,178 ,2147483648 ,191 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,193 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,194 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,179 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,180 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,181 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,182 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,183 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,184 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,185 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,186 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,187 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,188 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,189 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,190 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,191 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,192 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,195 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,196 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,197 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,198 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,200 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,178 ,2147483648 ,199 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,201 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,202 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,203 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,204 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,194 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,195 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,196 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,197 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,199 ,198 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,200 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,202 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,203 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,204 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,205 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,199 ,206 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,207 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,209 ,11 ,2147483648 ,208 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,170 },
- {12 ,2147483648 ,11 ,2147483648 ,210 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,211 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,212 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,199 ,206 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,213 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,214 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,206 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,207 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,216 ,11 ,2147483648 ,215 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,170 },
- {12 ,2147483648 ,11 ,199 ,206 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,217 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,208 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,209 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,210 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,211 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,212 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,213 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,214 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,215 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,216 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,217 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,218 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,219 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,220 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,221 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,222 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,223 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2255,11 +2275,11 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2312,61 +2332,61 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,267 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,275 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,268 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,269 ,11 ,2147483648 ,208 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,170 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,276 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,171 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
+ {2147483648 ,277 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,171 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,270 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,278 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,279 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,178 ,2147483648 ,199 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,280 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,171 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,281 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,282 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,283 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,271 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,272 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,273 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,274 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,284 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,275 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,285 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,178 ,2147483648 ,199 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,286 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,287 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,276 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,277 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,288 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,199 ,206 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,278 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,279 ,11 ,2147483648 ,208 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,170 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,280 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,199 ,206 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,289 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,199 ,206 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,282 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,290 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2379,19 +2399,25 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,299 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,307 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,300 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,301 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,308 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,309 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,310 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {12 ,2147483648 ,11 ,2147483648 ,302 ,16 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,15 ,14 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2403,313 +2429,321 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
};
const int LalrActionTable[LALR_STATE_COUNT][LALR_TERMINAL_COUNT]=
{
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,82 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,84 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,-21 ,88 ,2147483648 ,87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,91 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,92 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 },
- {2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,2147483648 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,2147483648 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,2147483648 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-106 },
- {2147483648 ,60 ,41 ,2147483648 ,2147483648 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,2147483648 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,2147483648 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,2147483648 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,2147483648 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,2147483648 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,2147483648 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,2147483648 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,2147483648 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,2147483648 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,2147483648 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,2147483648 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,-95 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,96 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,172 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,172 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,172 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,91 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,92 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,91 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,92 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,96 },
- {2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,-105 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,-108 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,-107 },
- {2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,172 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 },
- {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,172 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 },
- {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 },
- {201 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,286 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,289 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,290 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,60 ,41 ,2147483648 ,22 ,40 ,61 ,59 ,74 ,66 ,35 ,57 ,19 ,42 ,30 ,44 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,58 ,45 ,73 ,32 ,71 ,2147483648 ,63 ,2147483648 ,33 ,65 ,2147483648 ,36 ,34 ,69 ,67 ,2147483648 ,54 ,2147483648 ,31 ,64 ,55 ,51 ,20 ,50 ,43 ,2147483648 ,2147483648 ,75 ,2147483648 ,23 ,25 ,72 ,28 ,2147483648 ,46 ,26 ,38 ,27 ,62 ,49 ,56 ,68 ,2147483648 ,29 ,53 ,2147483648 ,52 ,24 ,70 ,37 ,2147483648 ,2147483648 ,39 ,21 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 }
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,84 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,90 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,91 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,95 ,2147483648 ,-27 ,-27 ,94 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,2147483648 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,2147483648 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,2147483648 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,2147483648 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,2147483648 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,-97 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,180 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,180 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,180 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,205 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,91 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,91 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,95 ,2147483648 ,-25 ,-25 ,94 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,95 ,2147483648 ,-26 ,-26 ,94 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,180 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,180 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,299 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,300 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,301 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,302 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,311 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,312 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,313 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,314 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
};
const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{
@@ -2765,6 +2799,8 @@ const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{SEMANTIC_RULE, "@DISASSEMBLE_LEN"},
{SEMANTIC_RULE, "@DISASSEMBLE_LEN32"},
{SEMANTIC_RULE, "@DISASSEMBLE_LEN64"},
+ {SEMANTIC_RULE, "@LBR_SAVE"},
+ {SEMANTIC_RULE, "@LBR_DUMP"},
{SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"},
{SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"},
{SEMANTIC_RULE, "@REFERENCE"},
diff --git a/hyperdbg/script-engine/header/parse-table.h b/hyperdbg/script-engine/header/parse-table.h
index 96d146e1..66a2ecfe 100644
--- a/hyperdbg/script-engine/header/parse-table.h
+++ b/hyperdbg/script-engine/header/parse-table.h
@@ -1,19 +1,19 @@
#pragma once
#ifndef PARSE_TABLE_H
#define PARSE_TABLE_H
-#define RULES_COUNT 274
+#define RULES_COUNT 276
#define TERMINAL_COUNT 124
#define NONETERMINAL_COUNT 63
#define START_VARIABLE "S"
#define MAX_RHS_LEN 15
-#define KEYWORD_LIST_LENGTH 111
+#define KEYWORD_LIST_LENGTH 113
#define OPERATORS_ONE_OPERAND_LIST_LENGTH 3
#define OPERATORS_TWO_OPERAND_LIST_LENGTH 16
#define REGISTER_MAP_LIST_LENGTH 120
#define PSEUDO_REGISTER_MAP_LIST_LENGTH 16
#define SCRIPT_VARIABLE_TYPE_LIST_LENGTH 10
#define ASSIGNMENT_OPERATOR_LIST_LENGTH 10
-#define SEMANTIC_RULES_MAP_LIST_LENGTH 156
+#define SEMANTIC_RULES_MAP_LIST_LENGTH 158
#define THREEOPFUNC1_LENGTH 1
#define THREEOPFUNC2_LENGTH 3
#define TWOOPFUNC1_LENGTH 8
@@ -26,8 +26,8 @@
#define THREEOPFUNC4_LENGTH 1
#define ONEOPFUNC4_LENGTH 1
#define TWOOPFUNC4_LENGTH 1
-#define ZEROOPFUNC1_LENGTH 9
-#define ZEROOPFUNC2_LENGTH 2
+#define ZEROOPFUNC1_LENGTH 7
+#define ZEROOPFUNC2_LENGTH 4
#define VARARGFUNC1_LENGTH 1
extern const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT];
extern const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN];
@@ -60,11 +60,11 @@ extern const SYMBOL_MAP PseudoRegisterMapList[];
extern const char* ScriptVariableTypeList[];
-#define LALR_RULES_COUNT 109
-#define LALR_TERMINAL_COUNT 78
+#define LALR_RULES_COUNT 111
+#define LALR_TERMINAL_COUNT 80
#define LALR_NONTERMINAL_COUNT 26
#define LALR_MAX_RHS_LEN 9
-#define LALR_STATE_COUNT 307
+#define LALR_STATE_COUNT 315
extern const struct _SCRIPT_ENGINE_TOKEN LalrLhs[RULES_COUNT];
extern const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN];
extern const unsigned int LalrRhsSize[RULES_COUNT];
diff --git a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
index 494b36fd..dc4169f6 100644
--- a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
+++ b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
@@ -1,5 +1,5 @@
# OneOpFunc1 input is a number and returns a number.
-.OneOpFunc1->poi db dd dw dq neg hi low not check_address strlen wcslen disassemble_len disassemble_len32 disassemble_len64 interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa
+.OneOpFunc1->poi db dd dw dq neg hi low not check_address strlen wcslen disassemble_len disassemble_len32 disassemble_len64 lbr_save lbr_dump interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa
# TwoOpFunc1 inputs are two numbers and returns a number.
.TwoOpFunc1->ed eb eq interlocked_exchange interlocked_exchange_add wcscmp eb_pa ed_pa eq_pa
diff --git a/hyperdbg/script-engine/python/Grammar.txt b/hyperdbg/script-engine/python/Grammar.txt
index 3cc6a45b..f9c47fbd 100644
--- a/hyperdbg/script-engine/python/Grammar.txt
+++ b/hyperdbg/script-engine/python/Grammar.txt
@@ -35,10 +35,10 @@
# TwoOpFunc4 the two inputs are numbers or wstrings and returns a number.
.TwoOpFunc4->wcscmp
-.ZeroOpFunc1->pause flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in lbr_start lbr_stop
+.ZeroOpFunc1->pause flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in
# ZeroOpFunc2 no input and returns a number
-.ZeroOpFunc2->rdtsc rdtscp
+.ZeroOpFunc2->rdtsc rdtscp lbr_save lbr_dump
.VarArgFunc1->printf
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index bb7ef11e..b0e09ca1 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -2014,15 +2014,16 @@ ScriptEngineFunctionEventTraceStepIn()
}
/**
- * @brief Implementation of lbr_start function
+ * @brief Implementation of lbr_save function
*
- * @return VOID
+ * @return BOOLEAN
*/
-VOID
-ScriptEngineFunctionLbrStart()
+BOOLEAN
+ScriptEngineFunctionLbrSave()
{
#ifdef SCRIPT_ENGINE_USER_MODE
ShowMessages("err, it's not possible to call lbr_start function in the user-mode\n");
+ return FALSE;
#endif // SCRIPT_ENGINE_USER_MODE
#ifdef SCRIPT_ENGINE_KERNEL_MODE
@@ -2030,7 +2031,7 @@ ScriptEngineFunctionLbrStart()
//
// Depending if we are in VMX-root then a VMCALL is issued by default instead, otherwise the VMCALL is ignored
//
- HyperTraceStartLbr(VmFuncVmxGetCurrentExecutionMode(), TRUE);
+ return HyperTraceSaveLbr(NULL, VmFuncVmxGetCurrentExecutionMode());
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
@@ -2038,13 +2039,14 @@ ScriptEngineFunctionLbrStart()
/**
* @brief Implementation of lbr_stop function
*
- * @return VOID
+ * @return BOOLEAN
*/
-VOID
-ScriptEngineFunctionLbrStop()
+BOOLEAN
+ScriptEngineFunctionLbrDump()
{
#ifdef SCRIPT_ENGINE_USER_MODE
ShowMessages("err, it's not possible to call lbr_stop function in the user-mode\n");
+ return FALSE;
#endif // SCRIPT_ENGINE_USER_MODE
#ifdef SCRIPT_ENGINE_KERNEL_MODE
@@ -2052,7 +2054,7 @@ ScriptEngineFunctionLbrStop()
//
// Depending if we are in VMX-root then a VMCALL is issued by default instead, otherwise the VMCALL is ignored
//
- HyperTraceStopLbr(VmFuncVmxGetCurrentExecutionMode(), TRUE);
+ return HyperTraceDumpLbr(NULL, VmFuncVmxGetCurrentExecutionMode());
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
diff --git a/hyperdbg/script-eval/code/ScriptEngineEval.c b/hyperdbg/script-eval/code/ScriptEngineEval.c
index 903930f7..77280968 100644
--- a/hyperdbg/script-eval/code/ScriptEngineEval.c
+++ b/hyperdbg/script-eval/code/ScriptEngineEval.c
@@ -736,16 +736,26 @@ ScriptEngineExecute(PGUEST_REGS GuestRegs,
GuestRegs);
break;
- case FUNC_LBR_START:
+ case FUNC_LBR_SAVE:
- ScriptEngineFunctionLbrStart();
+ Des = (PSYMBOL)((unsigned long long)CodeBuffer->Head +
+ (unsigned long long)(*Indx * sizeof(SYMBOL)));
+ *Indx = *Indx + 1;
+ DesVal = ScriptEngineFunctionLbrSave();
+
+ SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
break;
- case FUNC_LBR_STOP:
+ case FUNC_LBR_DUMP:
- ScriptEngineFunctionLbrStop();
+ Des = (PSYMBOL)((unsigned long long)CodeBuffer->Head +
+ (unsigned long long)(*Indx * sizeof(SYMBOL)));
+ *Indx = *Indx + 1;
+ DesVal = ScriptEngineFunctionLbrDump();
+
+ SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
break;
case FUNC_FLUSH:
diff --git a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
index 2c07f760..b340c615 100644
--- a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
+++ b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
@@ -263,11 +263,11 @@ ScriptEngineFunctionEventTraceInstrumentationStep();
VOID
ScriptEngineFunctionEventTraceStepIn();
-VOID
-ScriptEngineFunctionLbrStart();
+BOOLEAN
+ScriptEngineFunctionLbrSave();
-VOID
-ScriptEngineFunctionLbrStop();
+BOOLEAN
+ScriptEngineFunctionLbrDump();
UINT64
ScriptEngineFunctionStrcmp(const char * Address1, const char * Address2);
From 3cbf328fee0645314bed2aa9db3e3cd2eb8bfd64 Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 25 Apr 2026 18:02:48 +0200
Subject: [PATCH 135/323] Restructure of the hypertrace project
---
CHANGELOG.md | 1 +
CREDITS.md | 3 +-
.../hyperkd/code/debugger/core/Debugger.c | 2 +-
.../code/debugger/events/Termination.c | 2 +-
.../hyperkd/code/debugger/kernel-level/Kd.c | 2 +-
hyperdbg/hyperkd/code/driver/Ioctl.c | 2 +-
hyperdbg/hyperkd/code/driver/Loader.c | 2 +-
.../code/{Tracing.c => api/LbrApi.c} | 40 +++----
hyperdbg/hypertrace/code/api/PtApi.c | 21 ++++
.../code/{ => broadcast}/Broadcast.c | 0
.../code/{ => broadcast}/DpcRoutines.c | 0
.../hypertrace/code/{ => common}/UnloadDll.c | 0
hyperdbg/hypertrace/code/{ => lbr}/Lbr.c | 35 +++---
hyperdbg/hypertrace/code/pt/Pt.c | 21 ++++
.../header/{Tracing.h => api/LbrApi.h} | 15 +--
hyperdbg/hypertrace/header/api/PtApi.h | 18 +++
.../header/{ => broadcast}/Broadcast.h | 0
.../hypertrace/header/{ => broadcast}/Dpc.h | 0
.../header/{ => broadcast}/DpcRoutines.h | 0
.../header/{ => common}/UnloadDll.h | 0
.../header/{ => globals}/GlobalVariables.h | 6 +
hyperdbg/hypertrace/header/{ => lbr}/Lbr.h | 53 +++++----
hyperdbg/hypertrace/header/pch.h | 42 ++++---
hyperdbg/hypertrace/header/pt/Pt.h | 31 +++++
hyperdbg/hypertrace/hypertrace.vcxproj | 30 ++---
.../hypertrace/hypertrace.vcxproj.filters | 107 ++++++++++++------
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 24 ++--
hyperdbg/script-eval/code/Functions.c | 4 +-
28 files changed, 295 insertions(+), 166 deletions(-)
rename hyperdbg/hypertrace/code/{Tracing.c => api/LbrApi.c} (88%)
create mode 100644 hyperdbg/hypertrace/code/api/PtApi.c
rename hyperdbg/hypertrace/code/{ => broadcast}/Broadcast.c (100%)
rename hyperdbg/hypertrace/code/{ => broadcast}/DpcRoutines.c (100%)
rename hyperdbg/hypertrace/code/{ => common}/UnloadDll.c (100%)
rename hyperdbg/hypertrace/code/{ => lbr}/Lbr.c (89%)
create mode 100644 hyperdbg/hypertrace/code/pt/Pt.c
rename hyperdbg/hypertrace/header/{Tracing.h => api/LbrApi.h} (51%)
create mode 100644 hyperdbg/hypertrace/header/api/PtApi.h
rename hyperdbg/hypertrace/header/{ => broadcast}/Broadcast.h (100%)
rename hyperdbg/hypertrace/header/{ => broadcast}/Dpc.h (100%)
rename hyperdbg/hypertrace/header/{ => broadcast}/DpcRoutines.h (100%)
rename hyperdbg/hypertrace/header/{ => common}/UnloadDll.h (100%)
rename hyperdbg/hypertrace/header/{ => globals}/GlobalVariables.h (92%)
rename hyperdbg/hypertrace/header/{ => lbr}/Lbr.h (72%)
create mode 100644 hyperdbg/hypertrace/header/pt/Pt.h
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f55fc80d..bba4deea 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -25,6 +25,7 @@ New release of the HyperDbg Debugger.
- Fix the problem of the '!epthook' not finding the PML1 entry ([link](https://docs.hyperdbg.org/commands/extension-commands/epthook))
- Fix the problem of getting the PML1 entry of the target address on Intel Core Ultra processors (#567) ([link](https://github.com/HyperDbg/HyperDbg/issues/567))
- Fix the '.clang-format' formatting error
+- Restructure of the hypertrace project
## [0.18.0.0] - 2026-02-16
New release of the HyperDbg Debugger.
diff --git a/CREDITS.md b/CREDITS.md
index 87577baa..0d39ff7b 100644
--- a/CREDITS.md
+++ b/CREDITS.md
@@ -26,4 +26,5 @@ Just so you know – the attributions listed on this credits page are acknowledg
- Björn Ruytenberg ([@0Xiphorus](https://twitter.com/0Xiphorus))
- Marcis Zarins ([@CokeTree3](https://github.com/CokeTree3)) for his works on enhancing HyperEvade project
- Artem Shishkin ([@honorary_bot](https://twitter.com/honorary_bot)) for always answering our hypervisor questions
-- unrustled.jimmies for helping us debug and fix issues, and his contributions in HyperDbg
\ No newline at end of file
+- unrustled.jimmies for helping us debug and fix issues, and his contributions in HyperDbg
+- Hari Mishal ([@harimishal1](https://github.com/harimishal1)) for his works on the hypertrace project for supporting Last Branch Record (LBR)
\ No newline at end of file
diff --git a/hyperdbg/hyperkd/code/debugger/core/Debugger.c b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
index dae95e97..922691f9 100644
--- a/hyperdbg/hyperkd/code/debugger/core/Debugger.c
+++ b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
@@ -277,7 +277,7 @@ DebuggerUninitialize()
//
// Uninitialize the HyperTrace (if it was initialized)
//
- HyperTraceUninit();
+ HyperTraceLbrUninit();
//
// Uninitialize kernel debugger
diff --git a/hyperdbg/hyperkd/code/debugger/events/Termination.c b/hyperdbg/hyperkd/code/debugger/events/Termination.c
index 122b455d..b6f59de4 100644
--- a/hyperdbg/hyperkd/code/debugger/events/Termination.c
+++ b/hyperdbg/hyperkd/code/debugger/events/Termination.c
@@ -1609,7 +1609,7 @@ TerminateQueryDebuggerResourceSaveAndLoadDebugControls(UINT32
//
// Query the hypertrace project about this controls since there might be using this load and save controls
//
- if (HyperTraceQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(CoreId))
+ if (HyperTraceLbrQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(CoreId))
{
//
// We should ignore it since LBR feature of hypertrace is still using it
diff --git a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
index acc93528..cf759122 100644
--- a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
+++ b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
@@ -2909,7 +2909,7 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
//
// Perform the HyperTrace operations (it's in vmx-root)
//
- HyperTracePerformOperation(HyperTraceOperationPacket, TRUE);
+ HyperTraceLbrPerformOperation(HyperTraceOperationPacket, TRUE);
//
// Send the result of the HyperTrace back to the debuggee
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index d352309d..eed36c98 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -1286,7 +1286,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Perform the HyperTrace operation
//
- HyperTracePerformOperation(HyperTraceOperationRequest, TRUE);
+ HyperTraceLbrPerformOperation(HyperTraceOperationRequest, TRUE);
Irp->IoStatus.Information = SIZEOF_HYPERTRACE_OPERATION_PACKETS;
Status = STATUS_SUCCESS;
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index bc11cc52..48d06e8f 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -63,7 +63,7 @@ LoaderInitHyperTrace(BOOLEAN InitForHypervisorEnvironment)
//
// Initialize hypertrace module
//
- if (HyperTraceInitCallback(&HyperTraceCallbacks, InitForHypervisorEnvironment))
+ if (HyperTraceLbrInitCallback(&HyperTraceCallbacks, InitForHypervisorEnvironment))
{
LogDebugInfo("HyperDbg's hypertrace loaded successfully");
return TRUE;
diff --git a/hyperdbg/hypertrace/code/Tracing.c b/hyperdbg/hypertrace/code/api/LbrApi.c
similarity index 88%
rename from hyperdbg/hypertrace/code/Tracing.c
rename to hyperdbg/hypertrace/code/api/LbrApi.c
index bd2a9e2d..26862452 100644
--- a/hyperdbg/hypertrace/code/Tracing.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -1,8 +1,8 @@
/**
- * @file Tracing.c
+ * @file LbrApi.c
* @author Hari Mishal (harimishal6@gmail.com)
* @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Tracing routines for HyperTrace module
+ * @brief Tracing routines for HyperTrace module (Intel Last Branch Record)
* @details
* @version 0.18
* @date 2025-12-02
@@ -20,7 +20,7 @@
* @return BOOLEAN
*/
VOID
-HyperTraceExamplePerformLbrTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+HyperTraceLbrExamplePerformTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
if (LbrStartLbr(ApplyFromVmxRootMode, ApplyByVmcall))
{
@@ -53,7 +53,7 @@ HyperTraceExamplePerformLbrTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVm
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+HyperTraceLbrStart(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
return LbrStartLbr(ApplyFromVmxRootMode, ApplyByVmcall);
}
@@ -66,7 +66,7 @@ HyperTraceStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
* @return VOID
*/
VOID
-HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+HyperTraceLbrStop(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
LbrStopLbr(ApplyFromVmxRootMode, ApplyByVmcall);
}
@@ -82,8 +82,8 @@ HyperTraceStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
- BOOLEAN InitForHypervisorEnvironment)
+HyperTraceLbrInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
+ BOOLEAN InitForHypervisorEnvironment)
{
UINT32 ProcessorsCount = 0;
@@ -150,7 +150,7 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId)
+HyperTraceLbrQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId)
{
UNREFERENCED_PARAMETER(CoreId); // Right now there is no core specifc controls for LBR
@@ -166,7 +166,7 @@ HyperTraceQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId)
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceEnableLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+HyperTraceLbrEnable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
BOOLEAN ApplyFromVmxRootMode)
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
@@ -225,7 +225,7 @@ HyperTraceEnableLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceDisableLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+HyperTraceLbrDisable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
BOOLEAN ApplyFromVmxRootMode)
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
@@ -273,7 +273,7 @@ HyperTraceDisableLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceSaveLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+HyperTraceLbrSave(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
BOOLEAN ApplyFromVmxRootMode)
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
@@ -318,7 +318,7 @@ HyperTraceSaveLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceDumpLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+HyperTraceLbrDump(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
BOOLEAN ApplyFromVmxRootMode)
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
@@ -360,12 +360,12 @@ HyperTraceDumpLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
* @return VOID
*/
VOID
-HyperTraceUninit()
+HyperTraceLbrUninit()
{
//
// Disable LBR tracing if it is still enabled
//
- HyperTraceDisableLbr(NULL, FALSE);
+ HyperTraceLbrDisable(NULL, FALSE);
//
// Set callbacks to not initialized
@@ -391,8 +391,8 @@ HyperTraceUninit()
* @return BOOLEAN
*/
BOOLEAN
-HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceLbrPerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
{
BOOLEAN Status = TRUE;
@@ -414,7 +414,7 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
LogInfo("HyperTrace: Enabling LBR tracing...\n");
- HyperTraceEnableLbr(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceLbrEnable(HyperTraceOperationRequest, ApplyFromVmxRootMode);
break;
@@ -422,7 +422,7 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
LogInfo("HyperTrace: Disabling LBR tracing...\n");
- HyperTraceDisableLbr(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceLbrDisable(HyperTraceOperationRequest, ApplyFromVmxRootMode);
break;
@@ -430,7 +430,7 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
LogInfo("HyperTrace: Saving LBR tracing...\n");
- HyperTraceSaveLbr(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceLbrSave(HyperTraceOperationRequest, ApplyFromVmxRootMode);
break;
@@ -438,7 +438,7 @@ HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationReq
LogInfo("HyperTrace: Showing LBR tracing...\n");
- HyperTraceDumpLbr(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceLbrDump(HyperTraceOperationRequest, ApplyFromVmxRootMode);
break;
diff --git a/hyperdbg/hypertrace/code/api/PtApi.c b/hyperdbg/hypertrace/code/api/PtApi.c
new file mode 100644
index 00000000..3b031415
--- /dev/null
+++ b/hyperdbg/hypertrace/code/api/PtApi.c
@@ -0,0 +1,21 @@
+/**
+ * @file PtApi.c
+ * @author
+ * @brief Tracing routines for HyperTrace module (Intel Processor Trace)
+ * @details
+ * @version 0.19
+ * @date 2026-04-25
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ */
+#include "pch.h"
+
+/**
+ * @brief Example of performing PT trace
+ *
+ * @return BOOLEAN
+ */
+VOID
+HyperTracePtExample()
+{
+}
diff --git a/hyperdbg/hypertrace/code/Broadcast.c b/hyperdbg/hypertrace/code/broadcast/Broadcast.c
similarity index 100%
rename from hyperdbg/hypertrace/code/Broadcast.c
rename to hyperdbg/hypertrace/code/broadcast/Broadcast.c
diff --git a/hyperdbg/hypertrace/code/DpcRoutines.c b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
similarity index 100%
rename from hyperdbg/hypertrace/code/DpcRoutines.c
rename to hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
diff --git a/hyperdbg/hypertrace/code/UnloadDll.c b/hyperdbg/hypertrace/code/common/UnloadDll.c
similarity index 100%
rename from hyperdbg/hypertrace/code/UnloadDll.c
rename to hyperdbg/hypertrace/code/common/UnloadDll.c
diff --git a/hyperdbg/hypertrace/code/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
similarity index 89%
rename from hyperdbg/hypertrace/code/Lbr.c
rename to hyperdbg/hypertrace/code/lbr/Lbr.c
index c7bef9dc..6d956b93 100644
--- a/hyperdbg/hypertrace/code/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -1,7 +1,7 @@
/**
* @file Lbr.c
* @author Hari Mishal (harimishal6@gmail.com)
- * @brief Message logging and tracing implementation
+ * @brief Last Branch Record (LBR) tracing implementation for HyperTrace module
* @details Modified from LIBIHT project (Thomasaon Zhao et al) with Windows style updates.
* @version 0.18
* @date 2025-12-02
@@ -14,8 +14,6 @@
// Global Definitions //
//////////////////////////////////////////////////
-ULONGLONG LbrCapacity = 0;
-
//
// Typical Intel LBR capacities based on CPU model
// This is a subset; you can expand this as needed
@@ -89,18 +87,15 @@ LbrFlushLbr()
{
ULONG i;
ULONGLONG DbgCtlMsr;
- KIRQL OldIrql;
-
- xlock_core(&OldIrql);
//
// Disable LBR
//
LogInfo("Flush LBR on cpu core: %d\n", xcoreid());
- xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
- DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
- xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+ xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
+ DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
+ xwrmsr(IA32_DEBUGCTL, DbgCtlMsr);
//
// Flush LBR registers
@@ -113,8 +108,6 @@ LbrFlushLbr()
xwrmsr(MSR_LBR_NHM_FROM + i, 0);
xwrmsr(MSR_LBR_NHM_TO + i, 0);
}
-
- xrelease_core(&OldIrql);
}
/**
@@ -162,8 +155,8 @@ LbrStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
}
- DbgCtlMsr |= DEBUGCTLMSR_LBR; // Bit 0 = 1
- DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
+ DbgCtlMsr |= IA32_DEBUGCTL_LBR_FLAG; // Bit 0 = 1
+ DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
if (ApplyByVmcall)
{
@@ -180,10 +173,10 @@ LbrStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
// Enable LBR and CLEAR 'Freeze LBRs on PMI' (Bit 11)
// If Bit 11 is set, the LBR stops as soon as a single interrupt happens
//
- xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
- DbgCtlMsr |= DEBUGCTLMSR_LBR; // Bit 0 = 1
- DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
- xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+ xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
+ DbgCtlMsr |= IA32_DEBUGCTL_LBR_FLAG; // Bit 0 = 1
+ DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
+ xwrmsr(IA32_DEBUGCTL, DbgCtlMsr);
}
return TRUE;
@@ -251,7 +244,7 @@ LbrStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
}
- DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
+ DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
if (ApplyByVmcall)
{
@@ -264,9 +257,9 @@ LbrStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
}
else
{
- xrdmsr(MSR_IA32_DEBUGCTLMSR, &DbgCtlMsr);
- DbgCtlMsr &= ~DEBUGCTLMSR_LBR;
- xwrmsr(MSR_IA32_DEBUGCTLMSR, DbgCtlMsr);
+ xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
+ DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
+ xwrmsr(IA32_DEBUGCTL, DbgCtlMsr);
}
//
diff --git a/hyperdbg/hypertrace/code/pt/Pt.c b/hyperdbg/hypertrace/code/pt/Pt.c
new file mode 100644
index 00000000..cf2edaaf
--- /dev/null
+++ b/hyperdbg/hypertrace/code/pt/Pt.c
@@ -0,0 +1,21 @@
+/**
+ * @file Pt.c
+ * @author
+ * @brief Processor Trace (PT) tracing implementation for HyperTrace module
+ * @details
+ * @version 0.19
+ * @date 2026-04-25
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ */
+#include "pch.h"
+
+/**
+ * @brief Processor Trace (PT) test function
+ *
+ * @return VOID
+ */
+VOID
+PtTest()
+{
+}
diff --git a/hyperdbg/hypertrace/header/Tracing.h b/hyperdbg/hypertrace/header/api/LbrApi.h
similarity index 51%
rename from hyperdbg/hypertrace/header/Tracing.h
rename to hyperdbg/hypertrace/header/api/LbrApi.h
index 3b5ca89e..da3af5f0 100644
--- a/hyperdbg/hypertrace/header/Tracing.h
+++ b/hyperdbg/hypertrace/header/api/LbrApi.h
@@ -1,8 +1,8 @@
/**
- * @file Tracing.h
+ * @file LbrApi.h
* @author Hari Mishal (harimishal6@gmail.com)
- * @brief Message logging and tracing implementation
- * @details Modified from LIBIHT project (Thomasaon Zhao et al) with Windows style updates.
+ * @brief Header for LBR tracing routines for HyperTrace module (Intel Last Branch Record)
+ * @details
* @version 0.18
* @date 2025-12-02
*
@@ -11,11 +11,8 @@
#pragma once
//////////////////////////////////////////////////
-// Globals //
+// Functions //
//////////////////////////////////////////////////
-/**
- * @brief List of callbacks
- *
- */
-HYPERTRACE_CALLBACKS g_Callbacks;
+VOID
+HyperTraceLbrExamplePerformTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
diff --git a/hyperdbg/hypertrace/header/api/PtApi.h b/hyperdbg/hypertrace/header/api/PtApi.h
new file mode 100644
index 00000000..8ba8c25b
--- /dev/null
+++ b/hyperdbg/hypertrace/header/api/PtApi.h
@@ -0,0 +1,18 @@
+/**
+ * @file PtApi.h
+ * @author
+ * @brief Header for PT tracing routines for HyperTrace module (Intel Processor Trace)
+ * @details
+ * @version 0.19
+ * @date 2026-04-25
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Globals //
+//////////////////////////////////////////////////
+
+VOID
+HyperTracePtExample();
diff --git a/hyperdbg/hypertrace/header/Broadcast.h b/hyperdbg/hypertrace/header/broadcast/Broadcast.h
similarity index 100%
rename from hyperdbg/hypertrace/header/Broadcast.h
rename to hyperdbg/hypertrace/header/broadcast/Broadcast.h
diff --git a/hyperdbg/hypertrace/header/Dpc.h b/hyperdbg/hypertrace/header/broadcast/Dpc.h
similarity index 100%
rename from hyperdbg/hypertrace/header/Dpc.h
rename to hyperdbg/hypertrace/header/broadcast/Dpc.h
diff --git a/hyperdbg/hypertrace/header/DpcRoutines.h b/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
similarity index 100%
rename from hyperdbg/hypertrace/header/DpcRoutines.h
rename to hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
diff --git a/hyperdbg/hypertrace/header/UnloadDll.h b/hyperdbg/hypertrace/header/common/UnloadDll.h
similarity index 100%
rename from hyperdbg/hypertrace/header/UnloadDll.h
rename to hyperdbg/hypertrace/header/common/UnloadDll.h
diff --git a/hyperdbg/hypertrace/header/GlobalVariables.h b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
similarity index 92%
rename from hyperdbg/hypertrace/header/GlobalVariables.h
rename to hyperdbg/hypertrace/header/globals/GlobalVariables.h
index 0ff4d3a8..3cbcb430 100644
--- a/hyperdbg/hypertrace/header/GlobalVariables.h
+++ b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
@@ -16,6 +16,12 @@
// Global Variables //
//////////////////////////////////////////////////
+/**
+ * @brief List of callbacks
+ *
+ */
+HYPERTRACE_CALLBACKS g_Callbacks;
+
/**
* @brief The flag indicating whether the hypertrace module callbacks is initialized or not
*
diff --git a/hyperdbg/hypertrace/header/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
similarity index 72%
rename from hyperdbg/hypertrace/header/Lbr.h
rename to hyperdbg/hypertrace/header/lbr/Lbr.h
index 71ec907b..7154d793 100644
--- a/hyperdbg/hypertrace/header/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -14,14 +14,11 @@
// Constants //
//////////////////////////////////////////////////
-// Intel MSR Constants
-#define MSR_IA32_DEBUGCTLMSR 0x000001D9
-#define DEBUGCTLMSR_LBR (1ULL << 0)
-#define MSR_LBR_SELECT 0x000001C8
-#define MSR_LBR_TOS 0x000001C9
-#define MSR_LBR_NHM_FROM 0x00000680
-#define MSR_LBR_NHM_TO 0x000006C0
-#define LBR_SELECT 0x00000000
+#define MSR_LBR_SELECT 0x000001C8
+#define MSR_LBR_TOS 0x000001C9
+#define MSR_LBR_NHM_FROM 0x00000680
+#define MSR_LBR_NHM_TO 0x000006C0
+#define LBR_SELECT 0x00000000
/**
* @brief Maximum LBR capacity that is supported by processors
@@ -33,6 +30,10 @@
// Structures //
//////////////////////////////////////////////////
+/**
+ * @brief The structure to hold a single LBR entry (from and to addresses)
+ *
+ */
typedef struct _LBR_BRANCH_ENTRY
{
ULONGLONG From;
@@ -40,6 +41,10 @@ typedef struct _LBR_BRANCH_ENTRY
} LBR_BRANCH_ENTRY, PLBR_BRANCH_ENTRY;
+/**
+ * @brief The structure to hold the LBR stack for a single processor core, including the branch entries and the TOS index
+ *
+ */
typedef struct _LBR_STACK_ENTRY
{
LBR_BRANCH_ENTRY BranchEntry[MAXIMUM_LBR_CAPACITY];
@@ -60,22 +65,6 @@ typedef struct _LBR_STACK_ENTRY
#define xcoreid() KeGetCurrentProcessorNumber()
#define xgetcurrent_pid() (ULONG)(ULONG_PTR) PsGetCurrentProcessId()
-// List Handling
-#define xlist_next(ptr) (ptr)->Flink
-#define xlist_add(entry, head) InsertTailList(&(head), &(entry))
-#define xlist_del(entry) RemoveEntryList(&(entry))
-
-// Spinlock & IRQL (Using Windows Native to fix VCR001)
-#define xacquire_lock(Lock, Irql) KeAcquireSpinLock((PKSPIN_LOCK)(Lock), (Irql))
-#define xrelease_lock(Lock, Irql) KeReleaseSpinLock((PKSPIN_LOCK)(Lock), *(Irql))
-
-#define xlock_core(irql) KeRaiseIrql(DISPATCH_LEVEL, irql)
-#define xrelease_core(irql) KeLowerIrql(*(irql))
-
-// Buffer Copy
-#define xcopy_from_user(dest, src, sz) (RtlCopyMemory(dest, src, sz), 0)
-#define xcopy_to_user(dest, src, sz) (RtlCopyMemory(dest, src, sz), 0)
-
// CPUID (Fixed C6001: initialized cpuInfo)
#define xcpuid(code, a, b, c, d) \
{ \
@@ -91,16 +80,30 @@ typedef struct _LBR_STACK_ENTRY
// Global Variables //
//////////////////////////////////////////////////
+/**
+ * @brief The structure to hold the mapping of CPU model to its LBR capacity
+ *
+ */
typedef struct _CPU_LBR_MAP
{
ULONG Model;
ULONG LbrCapacity;
} CPU_LBR_MAP, *PCPU_LBR_MAP;
+/**
+ * @brief The global variable to hold the mapping of CPU model to its LBR capacity
+ *
+ */
extern CPU_LBR_MAP CPU_LBR_MAPS[];
+/**
+ * @brief The global variable to hold the LBR capacity of the current CPU
+ *
+ */
+ULONGLONG LbrCapacity;
+
//////////////////////////////////////////////////
-// Prototypes //
+// Functions //
//////////////////////////////////////////////////
BOOLEAN
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 9dba8f90..2767c8fb 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -42,18 +42,6 @@
//
#include "ia32-doc/out/ia32.h"
-//
-// DPC and broadcasting function headers
-//
-#include "Dpc.h"
-#include "DpcRoutines.h"
-#include "Broadcast.h"
-
-//
-// Unload function (to be called when the driver is unloaded)
-//
-#include "UnloadDll.h"
-
//
// SDK headers
//
@@ -64,6 +52,23 @@
//
#include "config/Configuration.h"
+//
+// Platform independent headers
+//
+#include "platform/kernel/header/PlatformMem.h"
+
+//
+// DPC and broadcasting function headers
+//
+#include "broadcast/Dpc.h"
+#include "broadcast/DpcRoutines.h"
+#include "broadcast/Broadcast.h"
+
+//
+// Unload function (to be called when the driver is unloaded)
+//
+#include "common/UnloadDll.h"
+
//
// Hyperlog headers
//
@@ -81,15 +86,16 @@
#include "SDK/modules/HyperTrace.h"
//
-// Definition of tracing types and structures
+// Definition of tracing types and structures (Last Branch Record)
//
-#include "Tracing.h"
-#include "Lbr.h"
+#include "api/LbrApi.h"
+#include "lbr/Lbr.h"
//
-// Platform independent headers
+// Definition of tracing types and structures (Processor Trace)
//
-#include "platform/kernel/header/PlatformMem.h"
+#include "api/PtApi.h"
+#include "pt/Pt.h"
//
// Export functions
@@ -99,4 +105,4 @@
//
// Global variables
//
-#include "GlobalVariables.h"
+#include "globals/GlobalVariables.h"
diff --git a/hyperdbg/hypertrace/header/pt/Pt.h b/hyperdbg/hypertrace/header/pt/Pt.h
new file mode 100644
index 00000000..6a5f74a2
--- /dev/null
+++ b/hyperdbg/hypertrace/header/pt/Pt.h
@@ -0,0 +1,31 @@
+/**
+ * @file Pt.h
+ * @author
+ * @brief Header for Processor Trace (PT) tracing routines for HyperTrace module
+ * @details
+ * @version 0.19
+ * @date 2026-04-25
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Constants //
+//////////////////////////////////////////////////
+
+//////////////////////////////////////////////////
+// Structures //
+//////////////////////////////////////////////////
+
+//////////////////////////////////////////////////
+// Platform Wrappers //
+//////////////////////////////////////////////////
+
+//////////////////////////////////////////////////
+// Global Variables //
+//////////////////////////////////////////////////
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index 7d9ec5e4..b6283379 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -101,27 +101,29 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
index 79fc73b9..c1dfe379 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj.filters
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -21,46 +21,73 @@
{50dcf65c-eea2-4bf3-b57e-d6689999b39d}
+
+ {09d5457a-bade-4a3f-a171-641110492d57}
+
+
+ {b8b32a09-61fb-433a-ad79-eb7cfc5f3437}
+
+
+ {32ea8333-847b-443d-8992-4140d54dc1d3}
+
+
+ {2271439b-db98-4351-9457-77225ccee301}
+
+
+ {d2eb3e6f-49d6-49c6-a255-a0158414ff54}
+
+
+ {df6eb164-34b2-4f2a-9530-b88443662fb7}
+
+
+ {cb4e742a-6e43-4798-af4a-72bcb11089c9}
+
+
+ {ab21116d-5f5b-4ef8-82bb-6585ac3dec95}
+
+
+ {57d56081-eede-41a3-b9f0-e7019d32c986}
+
+
+ {a59b8bf9-45ee-49c9-bbac-9b065f41f1a2}
+
+
+ {7d49a3f4-a2eb-48b1-8f41-220b9ccf30dc}
+
-
- code
-
-
- code
-
-
- code
-
code\platform
code\interface
-
- code
+
+ code\api
-
- code
+
+ code\api
-
- code
+
+ code\broadcast
+
+
+ code\broadcast
+
+
+ code\common
+
+
+ code\lbr
+
+
+ code\pt
-
- header
-
-
- header
-
header
-
- header
-
header\platform
@@ -70,20 +97,32 @@
header\interface
-
- header
+
+ header\api
-
- header
+
+ header\broadcast
-
- header
+
+ header\broadcast
-
- header
+
+ header\broadcast
-
- header
+
+ header\common
+
+
+ header\globals
+
+
+ header\lbr
+
+
+ header\pt
+
+
+ header\api
\ No newline at end of file
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 518be457..0ee687d6 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -16,16 +16,6 @@
# define IMPORT_EXPORT_HYPERTRACE __declspec(dllimport)
#endif
-//////////////////////////////////////////////////
-// Example Functions //
-//////////////////////////////////////////////////
-
-//
-// Used for testing purposes
-//
-IMPORT_EXPORT_HYPERTRACE VOID
-HyperTraceExamplePerformLbrTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
-
//////////////////////////////////////////////////
// HyperTrace Functions //
//////////////////////////////////////////////////
@@ -34,32 +24,32 @@ HyperTraceExamplePerformLbrTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVm
// Initialize the hypertrace module with the provided callbacks
//
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks, BOOLEAN InitForHypervisorEnvironment);
+HyperTraceLbrInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks, BOOLEAN InitForHypervisorEnvironment);
//
// Uninitialize the HyperTrace module
//
IMPORT_EXPORT_HYPERTRACE VOID
-HyperTraceUninit();
+HyperTraceLbrUninit();
//
// Perform operations related to HyperTrace based on the request type and parameters
//
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTracePerformOperation(HYPERTRACE_OPERATION_PACKETS * LbrOperationRequest,
- BOOLEAN ApplyFromVmxRootMode);
+HyperTraceLbrPerformOperation(HYPERTRACE_OPERATION_PACKETS * LbrOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode);
//////////////////////////////////////////////////
// LBR Functions //
//////////////////////////////////////////////////
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceSaveLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+HyperTraceLbrSave(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
BOOLEAN ApplyFromVmxRootMode);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceDumpLbr(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+HyperTraceLbrDump(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
BOOLEAN ApplyFromVmxRootMode);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId);
+HyperTraceLbrQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId);
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index b0e09ca1..431be3df 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -2031,7 +2031,7 @@ ScriptEngineFunctionLbrSave()
//
// Depending if we are in VMX-root then a VMCALL is issued by default instead, otherwise the VMCALL is ignored
//
- return HyperTraceSaveLbr(NULL, VmFuncVmxGetCurrentExecutionMode());
+ return HyperTraceLbrSave(NULL, VmFuncVmxGetCurrentExecutionMode());
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
@@ -2054,7 +2054,7 @@ ScriptEngineFunctionLbrDump()
//
// Depending if we are in VMX-root then a VMCALL is issued by default instead, otherwise the VMCALL is ignored
//
- return HyperTraceDumpLbr(NULL, VmFuncVmxGetCurrentExecutionMode());
+ return HyperTraceLbrDump(NULL, VmFuncVmxGetCurrentExecutionMode());
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
From e359911d6034f6ce49216ac1c1889554f9206f1c Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 25 Apr 2026 21:42:17 +0200
Subject: [PATCH 136/323] add base structure for Intel PT
---
.../hyperkd/code/debugger/core/Debugger.c | 2 +-
hyperdbg/hyperkd/code/driver/Loader.c | 2 +-
hyperdbg/hypertrace/code/api/LbrApi.c | 123 ++----------------
hyperdbg/hypertrace/code/api/TraceApi.c | 118 +++++++++++++++++
.../hypertrace/code/broadcast/DpcRoutines.c | 4 +-
hyperdbg/hypertrace/code/lbr/Lbr.c | 82 ++++++------
hyperdbg/hypertrace/code/pt/Pt.c | 97 +++++++++++++-
hyperdbg/hypertrace/header/api/LbrApi.h | 4 +
hyperdbg/hypertrace/header/api/TraceApi.h | 37 ++++++
.../header/globals/GlobalVariables.h | 6 +
hyperdbg/hypertrace/header/lbr/Lbr.h | 32 +----
hyperdbg/hypertrace/header/pch.h | 5 +
hyperdbg/hypertrace/header/pt/Pt.h | 4 +
hyperdbg/hypertrace/hypertrace.vcxproj | 2 +
.../hypertrace/hypertrace.vcxproj.filters | 6 +
hyperdbg/include/SDK/headers/ErrorCodes.h | 18 +++
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 4 +-
.../code/debugger/core/debugger.cpp | 15 +++
18 files changed, 371 insertions(+), 190 deletions(-)
create mode 100644 hyperdbg/hypertrace/code/api/TraceApi.c
create mode 100644 hyperdbg/hypertrace/header/api/TraceApi.h
diff --git a/hyperdbg/hyperkd/code/debugger/core/Debugger.c b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
index 922691f9..bf9946f3 100644
--- a/hyperdbg/hyperkd/code/debugger/core/Debugger.c
+++ b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
@@ -277,7 +277,7 @@ DebuggerUninitialize()
//
// Uninitialize the HyperTrace (if it was initialized)
//
- HyperTraceLbrUninit();
+ HyperTraceUnInit();
//
// Uninitialize kernel debugger
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index 48d06e8f..bc11cc52 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -63,7 +63,7 @@ LoaderInitHyperTrace(BOOLEAN InitForHypervisorEnvironment)
//
// Initialize hypertrace module
//
- if (HyperTraceLbrInitCallback(&HyperTraceCallbacks, InitForHypervisorEnvironment))
+ if (HyperTraceInitCallback(&HyperTraceCallbacks, InitForHypervisorEnvironment))
{
LogDebugInfo("HyperDbg's hypertrace loaded successfully");
return TRUE;
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 26862452..da4015ef 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -22,7 +22,7 @@
VOID
HyperTraceLbrExamplePerformTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- if (LbrStartLbr(ApplyFromVmxRootMode, ApplyByVmcall))
+ if (LbrStart(ApplyFromVmxRootMode, ApplyByVmcall))
{
for (volatile int i = 0; i < 50; i++)
{
@@ -40,8 +40,8 @@ HyperTraceLbrExamplePerformTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVm
LogInfo("Dumping LBR Buffer...\n");
- LbrStopLbr(ApplyFromVmxRootMode, ApplyByVmcall);
- LbrDumpLbr(); // This will print the collected LBR branches to the log
+ LbrStop(ApplyFromVmxRootMode, ApplyByVmcall);
+ LbrDump(); // This will print the collected LBR branches to the log
}
}
@@ -55,7 +55,7 @@ HyperTraceLbrExamplePerformTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVm
BOOLEAN
HyperTraceLbrStart(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- return LbrStartLbr(ApplyFromVmxRootMode, ApplyByVmcall);
+ return LbrStart(ApplyFromVmxRootMode, ApplyByVmcall);
}
/**
@@ -68,78 +68,7 @@ HyperTraceLbrStart(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
VOID
HyperTraceLbrStop(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
- LbrStopLbr(ApplyFromVmxRootMode, ApplyByVmcall);
-}
-
-/**
- * @brief Initialize the hyper trace module callbacks
- * @details This only for callback initialization, not for LBR initialization
- *
- * @param HypertraceCallbacks
- * @param InitForHypervisorEnvironment Whether the initialization is being done for hypervisor environment or not,
- * it can be used to skip some of the initialization steps if it is not for hypervisor environment and behave differently based on that
- *
- * @return BOOLEAN
- */
-BOOLEAN
-HyperTraceLbrInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
- BOOLEAN InitForHypervisorEnvironment)
-{
- UINT32 ProcessorsCount = 0;
-
- //
- // Check if the LBR is supported on this CPU before initializing the hypertrace module,
- //
- if (!LbrCheck())
- {
- return FALSE;
- }
-
- //
- // Check if any of the required callbacks are NULL
- //
- for (UINT32 i = 0; i < sizeof(HYPERTRACE_CALLBACKS) / sizeof(UINT64); i++)
- {
- if (((PVOID *)HypertraceCallbacks)[i] == NULL)
- {
- //
- // The callback has null entry, so we cannot proceed
- //
- return FALSE;
- }
- }
-
- //
- // Save the callbacks
- //
- RtlCopyMemory(&g_Callbacks, HypertraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
-
- //
- // Query the number of processors in the system to initialize the global LBR state list accordingly
- //
- ProcessorsCount = KeQueryActiveProcessorCount(0);
-
- //
- // Initialize the global LBR state list to hold LBR states for each core
- //
- g_LbrStateList = (LBR_STACK_ENTRY *)xmalloc(sizeof(LBR_STACK_ENTRY) * ProcessorsCount);
-
- //
- // Set the flag to indicate whether the initialization is being done for hypervisor environment or not
- //
- g_InitForHypervisorEnvironment = InitForHypervisorEnvironment;
-
- //
- // It is initialized, but LBR is disabled at this stage
- //
- g_LastBranchRecordEnabled = FALSE;
-
- //
- // Enable callbacks and set the initialized flag
- //
- g_HyperTraceCallbacksInitialized = TRUE;
-
- return TRUE;
+ LbrStop(ApplyFromVmxRootMode, ApplyByVmcall);
}
/**
@@ -243,16 +172,16 @@ HyperTraceLbrDisable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
return FALSE;
}
- //
- // Broadcast disabling LBR on all cores
- //
- BroadcastDisableLbrOnAllCores();
-
//
// Disabling LBR
//
g_LastBranchRecordEnabled = FALSE;
+ //
+ // Broadcast disabling LBR on all cores
+ //
+ BroadcastDisableLbrOnAllCores();
+
//
// Set successful status
//
@@ -296,7 +225,7 @@ HyperTraceLbrSave(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
//
// Save the LBR state
//
- LbrSaveLbr();
+ LbrSave();
//
// The operation was successful
@@ -341,7 +270,7 @@ HyperTraceLbrDump(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
//
// This will print the collected LBR branches to the log
//
- LbrDumpLbr();
+ LbrDump();
//
// The operation was successful
@@ -354,34 +283,6 @@ HyperTraceLbrDump(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
return TRUE;
}
-/**
- * @brief Uninitialize the hyper trace module
- *
- * @return VOID
- */
-VOID
-HyperTraceLbrUninit()
-{
- //
- // Disable LBR tracing if it is still enabled
- //
- HyperTraceLbrDisable(NULL, FALSE);
-
- //
- // Set callbacks to not initialized
- //
- g_HyperTraceCallbacksInitialized = FALSE;
-
- //
- // Unallocate the global LBR state list if it is allocated
- //
- if (g_LbrStateList != NULL)
- {
- xfree(g_LbrStateList);
- g_LbrStateList = NULL;
- }
-}
-
/**
* @brief Perform actions related to HyperTrace
*
diff --git a/hyperdbg/hypertrace/code/api/TraceApi.c b/hyperdbg/hypertrace/code/api/TraceApi.c
new file mode 100644
index 00000000..a2daf735
--- /dev/null
+++ b/hyperdbg/hypertrace/code/api/TraceApi.c
@@ -0,0 +1,118 @@
+/**
+ * @file TraceApi.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Tracing routines for HyperTrace module
+ * @details
+ * @version 0.19
+ * @date 2026-04-25
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ */
+#include "pch.h"
+
+/**
+ * @brief Initialize the hyper trace module callbacks
+ * @details This only for callback initialization, not for LBR, PT, etc. initialization
+ *
+ * @param HypertraceCallbacks
+ * @param InitForHypervisorEnvironment Whether the initialization is being done for hypervisor environment or not,
+ * it can be used to skip some of the initialization steps if it is not for hypervisor environment and behave differently based on that
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
+ BOOLEAN InitForHypervisorEnvironment)
+{
+ UINT32 ProcessorsCount = 0;
+
+ //
+ // Check if any of the required callbacks are NULL
+ //
+ for (UINT32 i = 0; i < sizeof(HYPERTRACE_CALLBACKS) / sizeof(UINT64); i++)
+ {
+ if (((PVOID *)HypertraceCallbacks)[i] == NULL)
+ {
+ //
+ // The callback has null entry, so we cannot proceed
+ //
+ return FALSE;
+ }
+ }
+
+ //
+ // Save the callbacks
+ //
+ RtlCopyMemory(&g_Callbacks, HypertraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
+
+ //
+ // Query the number of processors in the system to initialize the global LBR state list accordingly
+ //
+ ProcessorsCount = KeQueryActiveProcessorCount(0);
+
+ //
+ // Initialize the global LBR state list to hold LBR states for each core
+ //
+ g_LbrStateList = (LBR_STACK_ENTRY *)PlatformMemAllocateZeroedNonPagedPool(sizeof(LBR_STACK_ENTRY) * ProcessorsCount);
+
+ //
+ // Set the flag to indicate whether the initialization is being done for hypervisor environment or not
+ //
+ g_InitForHypervisorEnvironment = InitForHypervisorEnvironment;
+
+ //
+ // It is initialized, but LBR is disabled at this stage
+ //
+ g_LastBranchRecordEnabled = FALSE;
+
+ //
+ // It is initialized, but Processor Trace is disabled at this stage
+ //
+ g_ProcessorTraceEnabled = FALSE;
+
+ //
+ // Enable callbacks and set the initialized flag
+ //
+ g_HyperTraceCallbacksInitialized = TRUE;
+
+ return TRUE;
+}
+
+/**
+ * @brief Uninitialize the hypertrace module
+ *
+ * @return VOID
+ */
+VOID
+HyperTraceUnInit()
+{
+ //
+ // Disable LBR tracing if it is still enabled
+ //
+ if (g_LastBranchRecordEnabled)
+ {
+ HyperTraceLbrDisable(NULL, FALSE);
+ }
+
+ //
+ // Unallocate the global LBR state list if it is allocated
+ //
+ if (g_LbrStateList != NULL)
+ {
+ PlatformMemFreePool(g_LbrStateList);
+ g_LbrStateList = NULL;
+ }
+
+ //
+ // Disable Processor Trace if it is still enabled
+ //
+ if (g_ProcessorTraceEnabled)
+ {
+ HyperTracePtDisable(NULL, FALSE);
+ }
+
+ //
+ // Set callbacks to not initialized
+ //
+ g_HyperTraceCallbacksInitialized = FALSE;
+}
diff --git a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
index 86554a37..01d9594b 100644
--- a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
@@ -43,7 +43,7 @@ DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
//
// Enable LBR on all cores from VMX-root mode by VMCALL
//
- LbrStartLbr(TRUE, TRUE);
+ LbrStart(TRUE, TRUE);
//
// Wait for all DPCs to synchronize at this point
@@ -76,7 +76,7 @@ DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, P
//
// Disable LBR on all cores from VMX-root mode by VMCALL
//
- LbrStopLbr(TRUE, TRUE);
+ LbrStop(TRUE, TRUE);
//
// Check if the initialization is being done for hypervisor environment or not
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 6d956b93..47c2f4d2 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -77,13 +77,47 @@ CPU_LBR_MAP CPU_LBR_MAPS[] = {
{0x35, 8},
{0x36, 8}};
+/**
+ * @brief Check if the current CPU supports LBR by examining the CPU family and model and looking up the corresponding LBR capacity
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrCheck()
+{
+ ULONG a, b, c, d;
+ ULONG Family, Model;
+ ULONGLONG i;
+
+ xcpuid(1, &a, &b, &c, &d);
+
+ Family = ((a >> 8) & 0xF) + ((a >> 20) & 0xFF);
+ Model = ((a >> 4) & 0xF) | ((a >> 12) & 0xF0);
+
+ for (i = 0; i < sizeof(CPU_LBR_MAPS) / sizeof(CPU_LBR_MAPS[0]); ++i)
+ {
+ if (Model == CPU_LBR_MAPS[i].Model)
+ {
+ LbrCapacity = CPU_LBR_MAPS[i].LbrCapacity;
+ break;
+ }
+ }
+
+ if (LbrCapacity == 0)
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
/**
* @brief Flush LBR MSRs by disabling LBR and clearing all LBR entries
*
* @return VOID
*/
VOID
-LbrFlushLbr()
+LbrFlush()
{
ULONG i;
ULONGLONG DbgCtlMsr;
@@ -91,7 +125,7 @@ LbrFlushLbr()
//
// Disable LBR
//
- LogInfo("Flush LBR on cpu core: %d\n", xcoreid());
+ LogInfo("Flush LBR on cpu core: %d\n", KeGetCurrentProcessorNumberEx(NULL));
xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
@@ -119,7 +153,7 @@ LbrFlushLbr()
* @return BOOLEAN
*/
BOOLEAN
-LbrStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+LbrStart(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
if (LbrCapacity == 0)
{
@@ -188,7 +222,7 @@ LbrStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
* @return VOID
*/
VOID
-LbrSaveLbr()
+LbrSave()
{
UINT64 LbrTos;
LBR_STACK_ENTRY * State;
@@ -229,7 +263,7 @@ LbrSaveLbr()
* @return VOID
*/
VOID
-LbrStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+LbrStop(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
ULONGLONG DbgCtlMsr;
@@ -265,7 +299,7 @@ LbrStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
//
// Save the LBR entries
//
- LbrSaveLbr();
+ LbrSave();
}
/**
@@ -274,7 +308,7 @@ LbrStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
* @return VOID
*/
VOID
-LbrDumpLbr()
+LbrDump()
{
ULONG CurrentIdx;
LBR_STACK_ENTRY * State;
@@ -305,37 +339,3 @@ LbrDumpLbr()
State->BranchEntry[CurrentIdx].To);
}
}
-
-/**
- * @brief Check if the current CPU supports LBR by examining the CPU family and model and looking up the corresponding LBR capacity
- *
- * @return BOOLEAN
- */
-BOOLEAN
-LbrCheck()
-{
- ULONG a, b, c, d;
- ULONG Family, Model;
- ULONGLONG i;
-
- xcpuid(1, &a, &b, &c, &d);
-
- Family = ((a >> 8) & 0xF) + ((a >> 20) & 0xFF);
- Model = ((a >> 4) & 0xF) | ((a >> 12) & 0xF0);
-
- for (i = 0; i < sizeof(CPU_LBR_MAPS) / sizeof(CPU_LBR_MAPS[0]); ++i)
- {
- if (Model == CPU_LBR_MAPS[i].Model)
- {
- LbrCapacity = CPU_LBR_MAPS[i].LbrCapacity;
- break;
- }
- }
-
- if (LbrCapacity == 0)
- {
- return FALSE;
- }
-
- return TRUE;
-}
diff --git a/hyperdbg/hypertrace/code/pt/Pt.c b/hyperdbg/hypertrace/code/pt/Pt.c
index cf2edaaf..5894d33b 100644
--- a/hyperdbg/hypertrace/code/pt/Pt.c
+++ b/hyperdbg/hypertrace/code/pt/Pt.c
@@ -11,11 +11,100 @@
#include "pch.h"
/**
- * @brief Processor Trace (PT) test function
+ * @brief Check if the current CPU supports PT
*
- * @return VOID
+ * @return BOOLEAN
*/
-VOID
-PtTest()
+BOOLEAN
+PtCheck()
{
+ return FALSE;
+}
+
+/**
+ * @brief Enable PT tracing for HyperTrace
+ *
+ * @param HyperTraceOperationRequest
+ * @param ApplyFromVmxRootMode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTracePtEnable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
+{
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
+ //
+ // Check if PT is already enabled or not
+ //
+ if (g_ProcessorTraceEnabled)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_ALREADY_ENABLED;
+ return FALSE;
+ }
+
+ //
+ // Check PT support on CPU
+ //
+ if (!PtCheck())
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_NOT_SUPPORTED;
+ return FALSE;
+ }
+
+ //
+ // Set the flag to indicate that PT tracing is enabled
+ //
+ g_ProcessorTraceEnabled = TRUE;
+
+ //
+ // Set successful status
+ //
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+
+ return TRUE;
+}
+
+/**
+ * @brief Disable PT tracing for HyperTrace
+ *
+ * @param HyperTraceOperationRequest
+ * @param ApplyFromVmxRootMode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTracePtDisable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
+{
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
+ //
+ // Check if LBR is already disabled or not
+ //
+ if (!g_LastBranchRecordEnabled)
+ {
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_ALREADY_DISABLED;
+ }
+
+ return FALSE;
+ }
+
+ //
+ // Disabling PT
+ //
+ g_ProcessorTraceEnabled = FALSE;
+
+ //
+ // Set successful status
+ //
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
+
+ return TRUE;
}
diff --git a/hyperdbg/hypertrace/header/api/LbrApi.h b/hyperdbg/hypertrace/header/api/LbrApi.h
index da3af5f0..50258422 100644
--- a/hyperdbg/hypertrace/header/api/LbrApi.h
+++ b/hyperdbg/hypertrace/header/api/LbrApi.h
@@ -16,3 +16,7 @@
VOID
HyperTraceLbrExamplePerformTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+
+BOOLEAN
+HyperTraceLbrDisable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode);
diff --git a/hyperdbg/hypertrace/header/api/TraceApi.h b/hyperdbg/hypertrace/header/api/TraceApi.h
new file mode 100644
index 00000000..f79da5cc
--- /dev/null
+++ b/hyperdbg/hypertrace/header/api/TraceApi.h
@@ -0,0 +1,37 @@
+/**
+ * @file TraceApi.h
+ * @author
+ * @brief Header for general tracing routines for HyperTrace module
+ * @details
+ * @version 0.19
+ * @date 2026-04-25
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+//
+// Most of the functions are defined and exported
+//
+
+//////////////////////////////////////////////////
+// Platform Wrappers //
+//////////////////////////////////////////////////
+
+#define xrdmsr(msr, pval) (*(pval) = __readmsr(msr))
+#define xwrmsr(msr, val) (msr, val)
+
+// CPUID (Fixed C6001: initialized CpuInfo)
+#define xcpuid(code, a, b, c, d) \
+ { \
+ int CpuInfo[4] = {0}; \
+ __cpuid(CpuInfo, code); \
+ *a = CpuInfo[0]; \
+ *b = CpuInfo[1]; \
+ *c = CpuInfo[2]; \
+ *d = CpuInfo[3]; \
+ }
diff --git a/hyperdbg/hypertrace/header/globals/GlobalVariables.h b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
index 3cbcb430..edc82ef4 100644
--- a/hyperdbg/hypertrace/header/globals/GlobalVariables.h
+++ b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
@@ -40,6 +40,12 @@ BOOLEAN g_InitForHypervisorEnvironment;
*/
BOOLEAN g_LastBranchRecordEnabled;
+/**
+ * @brief The flag indicating whether the hypertrace Processor Trace is initialized or not
+ *
+ */
+BOOLEAN g_ProcessorTraceEnabled;
+
/**
* @brief This will be a dynamically allocated array to hold LBR states for each core
*
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index 7154d793..f0cbd42c 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -52,30 +52,6 @@ typedef struct _LBR_STACK_ENTRY
} LBR_STACK_ENTRY, PLBR_STACK_ENTRY;
-//////////////////////////////////////////////////
-// Platform Wrappers //
-//////////////////////////////////////////////////
-
-#define xmalloc(sz) PlatformMemAllocateZeroedNonPagedPool(sz)
-#define xfree(p) PlatformMemFreePool(p)
-#define xmemset(ptr, sz) RtlZeroMemory(ptr, sz)
-#define xmemcpy RtlCopyMemory
-#define xrdmsr(msr, pval) (*(pval) = __readmsr(msr))
-#define xwrmsr(msr, val) __writemsr(msr, val)
-#define xcoreid() KeGetCurrentProcessorNumber()
-#define xgetcurrent_pid() (ULONG)(ULONG_PTR) PsGetCurrentProcessId()
-
-// CPUID (Fixed C6001: initialized cpuInfo)
-#define xcpuid(code, a, b, c, d) \
- { \
- int cpuInfo[4] = {0}; \
- __cpuid(cpuInfo, code); \
- *a = cpuInfo[0]; \
- *b = cpuInfo[1]; \
- *c = cpuInfo[2]; \
- *d = cpuInfo[3]; \
- }
-
//////////////////////////////////////////////////
// Global Variables //
//////////////////////////////////////////////////
@@ -110,16 +86,16 @@ BOOLEAN
LbrCheck();
BOOLEAN
-LbrStartLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+LbrStart(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
VOID
-LbrStopLbr(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+LbrStop(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
VOID
-LbrSaveLbr();
+LbrSave();
VOID
-LbrDumpLbr();
+LbrDump();
extern ULONGLONG LbrCapacity;
extern LIST_ENTRY LbrStateHead;
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 2767c8fb..b92ac10b 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -85,6 +85,11 @@
//
#include "SDK/modules/HyperTrace.h"
+//
+// Definition of general tracing types
+//
+#include "api/TraceApi.h"
+
//
// Definition of tracing types and structures (Last Branch Record)
//
diff --git a/hyperdbg/hypertrace/header/pt/Pt.h b/hyperdbg/hypertrace/header/pt/Pt.h
index 6a5f74a2..742ba4b8 100644
--- a/hyperdbg/hypertrace/header/pt/Pt.h
+++ b/hyperdbg/hypertrace/header/pt/Pt.h
@@ -29,3 +29,7 @@
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
+
+BOOLEAN
+HyperTracePtDisable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode);
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index b6283379..6d1c6ffe 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -104,6 +104,7 @@
+
@@ -116,6 +117,7 @@
+
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
index c1dfe379..7454fc1b 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj.filters
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -83,6 +83,9 @@
code\pt
+
+ code\api
+
@@ -124,5 +127,8 @@
header\api
+
+ header\api
+
\ No newline at end of file
diff --git a/hyperdbg/include/SDK/headers/ErrorCodes.h b/hyperdbg/include/SDK/headers/ErrorCodes.h
index c48dff70..be94d96a 100644
--- a/hyperdbg/include/SDK/headers/ErrorCodes.h
+++ b/hyperdbg/include/SDK/headers/ErrorCodes.h
@@ -617,6 +617,24 @@
*/
#define DEBUGGER_ERROR_DEBUGCTL_NOT_SUPPORTED_ON_VMCS 0xc000005f
+/**
+ * @brief error, PT is already enabled
+ *
+ */
+#define DEBUGGER_ERROR_PT_ALREADY_ENABLED 0xc0000060
+
+/**
+ * @brief error, PT is already disabled
+ *
+ */
+#define DEBUGGER_ERROR_PT_ALREADY_DISABLED 0xc0000061
+
+/**
+ * @brief error, PT is not supported by the processor
+ *
+ */
+#define DEBUGGER_ERROR_PT_NOT_SUPPORTED 0xc0000062
+
//
// WHEN YOU ADD ANYTHING TO THIS LIST OF ERRORS, THEN
// MAKE SURE TO ADD AN ERROR MESSAGE TO ShowErrorMessage(UINT32 Error)
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 0ee687d6..e3e91988 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -24,13 +24,13 @@
// Initialize the hypertrace module with the provided callbacks
//
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceLbrInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks, BOOLEAN InitForHypervisorEnvironment);
+HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks, BOOLEAN InitForHypervisorEnvironment);
//
// Uninitialize the HyperTrace module
//
IMPORT_EXPORT_HYPERTRACE VOID
-HyperTraceLbrUninit();
+HyperTraceUnInit();
//
// Perform operations related to HyperTrace based on the request type and parameters
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index 65ec1e87..8168e155 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -599,6 +599,21 @@ ShowErrorMessage(UINT32 Error)
Error);
break;
+ case DEBUGGER_ERROR_PT_ALREADY_ENABLED:
+ ShowMessages("err, PT is already enabled (%x)\n",
+ Error);
+ break;
+
+ case DEBUGGER_ERROR_PT_ALREADY_DISABLED:
+ ShowMessages("err, PT is already disabled (%x)\n",
+ Error);
+ break;
+
+ case DEBUGGER_ERROR_PT_NOT_SUPPORTED:
+ ShowMessages("err, PT is not supported on this processor (%x)\n",
+ Error);
+ break;
+
default:
ShowMessages("err, error not found (%x)\n",
Error);
From c6b6a8a3a01367237dc406ca7c320e77de089475 Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 25 Apr 2026 22:46:55 +0200
Subject: [PATCH 137/323] add processor trace command
---
CHANGELOG.md | 1 +
.../hyperkd/code/debugger/kernel-level/Kd.c | 38 +++-
hyperdbg/hyperkd/code/driver/Ioctl.c | 58 +++++-
hyperdbg/hypertrace/code/api/LbrApi.c | 40 ++--
hyperdbg/hypertrace/code/api/PtApi.c | 153 +++++++++++++++
hyperdbg/hypertrace/code/pt/Pt.c | 88 ---------
hyperdbg/hypertrace/header/api/LbrApi.h | 2 +-
hyperdbg/hypertrace/header/pt/Pt.h | 3 +-
hyperdbg/include/SDK/headers/Connection.h | 6 +-
hyperdbg/include/SDK/headers/Ioctls.h | 11 +-
.../include/SDK/headers/RequestStructures.h | 56 ++++--
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 37 ++--
.../commands/extension-commands/lbr.cpp | 40 ++--
.../commands/extension-commands/pt.cpp | 185 ++++++++++++++++++
.../code/debugger/core/interpreter.cpp | 2 +
.../code/debugger/kernel-level/kd.cpp | 53 ++++-
.../kernel-level/kernel-listening.cpp | 36 +++-
hyperdbg/libhyperdbg/header/commands.h | 7 +-
hyperdbg/libhyperdbg/header/debugger.h | 3 +-
hyperdbg/libhyperdbg/header/help.h | 3 +
hyperdbg/libhyperdbg/header/kd.h | 5 +-
hyperdbg/libhyperdbg/libhyperdbg.vcxproj | 1 +
.../libhyperdbg/libhyperdbg.vcxproj.filters | 3 +
23 files changed, 639 insertions(+), 192 deletions(-)
create mode 100644 hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bba4deea..947d1a10 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -26,6 +26,7 @@ New release of the HyperDbg Debugger.
- Fix the problem of getting the PML1 entry of the target address on Intel Core Ultra processors (#567) ([link](https://github.com/HyperDbg/HyperDbg/issues/567))
- Fix the '.clang-format' formatting error
- Restructure of the hypertrace project
+- Add starting structure for supporting Intel Processor Trace (PT)
## [0.18.0.0] - 2026-02-16
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
index cf759122..c1118da9 100644
--- a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
+++ b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
@@ -2186,7 +2186,8 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
PDEBUGGEE_BP_PACKET BpPacket;
PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS PtePacket;
PSMI_OPERATION_PACKETS SmiOperationPacket;
- PHYPERTRACE_OPERATION_PACKETS HyperTraceOperationPacket;
+ PHYPERTRACE_LBR_OPERATION_PACKETS HyperTraceLbrOperationPacket;
+ PHYPERTRACE_PT_OPERATION_PACKETS HyperTracePtOperationPacket;
PDEBUGGER_APIC_REQUEST ApicPacket;
PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS IdtEntryPacket;
PDEBUGGER_PAGE_IN_REQUEST PageinPacket;
@@ -2902,22 +2903,41 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
break;
- case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_OPERATION:
+ case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_LBR_OPERATION:
- HyperTraceOperationPacket = (HYPERTRACE_OPERATION_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
+ HyperTraceLbrOperationPacket = (HYPERTRACE_LBR_OPERATION_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
//
- // Perform the HyperTrace operations (it's in vmx-root)
+ // Perform the HyperTrace LBR operations (it's in vmx-root)
//
- HyperTraceLbrPerformOperation(HyperTraceOperationPacket, TRUE);
+ HyperTraceLbrPerformOperation(HyperTraceLbrOperationPacket, TRUE);
//
- // Send the result of the HyperTrace back to the debuggee
+ // Send the result of the HyperTrace LBR back to the debuggee
//
KdResponsePacketToDebugger(DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGEE_TO_DEBUGGER,
- DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_OPERATION_REQUESTS,
- (CHAR *)HyperTraceOperationPacket,
- SIZEOF_HYPERTRACE_OPERATION_PACKETS);
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_LBR_OPERATION_REQUESTS,
+ (CHAR *)HyperTraceLbrOperationPacket,
+ SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS);
+
+ break;
+
+ case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_PT_OPERATION:
+
+ HyperTracePtOperationPacket = (HYPERTRACE_PT_OPERATION_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
+
+ //
+ // Perform the HyperTrace PT operations (it's in vmx-root)
+ //
+ HyperTracePtPerformOperation(HyperTracePtOperationPacket, TRUE);
+
+ //
+ // Send the result of the HyperTrace PT back to the debuggee
+ //
+ KdResponsePacketToDebugger(DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGEE_TO_DEBUGGER,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_PT_OPERATION_REQUESTS,
+ (CHAR *)HyperTracePtOperationPacket,
+ SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS);
break;
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index eed36c98..dbbb0d32 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -59,7 +59,8 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
PDEBUGGER_PAUSE_PACKET_RECEIVED DebuggerPauseKernelRequest;
PDEBUGGER_GENERAL_ACTION DebuggerNewActionRequest;
PSMI_OPERATION_PACKETS SmiOperationRequest;
- PHYPERTRACE_OPERATION_PACKETS HyperTraceOperationRequest;
+ PHYPERTRACE_LBR_OPERATION_PACKETS HyperTraceLbrOperationRequest;
+ PHYPERTRACE_PT_OPERATION_PACKETS HyperTracePtOperationRequest;
PVOID BufferToStoreThreadsAndProcessesDetails;
NTSTATUS Status;
ULONG InBuffLength; // Input buffer length
@@ -1255,12 +1256,12 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
break;
- case IOCTL_PERFORM_HYPERTRACE_OPERATION:
+ case IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION:
//
// First validate the parameters.
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_HYPERTRACE_OPERATION_PACKETS ||
+ if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS ||
Irp->AssociatedIrp.SystemBuffer == NULL)
{
Status = STATUS_INVALID_PARAMETER;
@@ -1281,14 +1282,57 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
// Both usermode and to send to usermode and the coming buffer are
// at the same place
//
- HyperTraceOperationRequest = (PHYPERTRACE_OPERATION_PACKETS)Irp->AssociatedIrp.SystemBuffer;
+ HyperTraceLbrOperationRequest = (PHYPERTRACE_LBR_OPERATION_PACKETS)Irp->AssociatedIrp.SystemBuffer;
//
- // Perform the HyperTrace operation
+ // Perform the HyperTrace LBR operation
//
- HyperTraceLbrPerformOperation(HyperTraceOperationRequest, TRUE);
+ HyperTraceLbrPerformOperation(HyperTraceLbrOperationRequest, TRUE);
- Irp->IoStatus.Information = SIZEOF_HYPERTRACE_OPERATION_PACKETS;
+ Irp->IoStatus.Information = SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS;
+ Status = STATUS_SUCCESS;
+
+ //
+ // Avoid zeroing it
+ //
+ DoNotChangeInformation = TRUE;
+
+ break;
+
+ case IOCTL_PERFORM_HYPERTRACE_PT_OPERATION:
+
+ //
+ // First validate the parameters.
+ //
+ if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS ||
+ Irp->AssociatedIrp.SystemBuffer == NULL)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ LogError("Err, invalid parameter to IOCTL dispatcher");
+ break;
+ }
+
+ InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
+ OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
+
+ if (!InBuffLength || !OutBuffLength)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place
+ //
+ HyperTracePtOperationRequest = (PHYPERTRACE_PT_OPERATION_PACKETS)Irp->AssociatedIrp.SystemBuffer;
+
+ //
+ // Perform the HyperTrace PT operation
+ //
+ HyperTracePtPerformOperation(HyperTracePtOperationRequest, TRUE);
+
+ Irp->IoStatus.Information = SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS;
Status = STATUS_SUCCESS;
//
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index da4015ef..c7915034 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -95,8 +95,8 @@ HyperTraceLbrQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId)
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrEnable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
@@ -154,8 +154,8 @@ HyperTraceLbrEnable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrDisable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceLbrDisable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
@@ -202,8 +202,8 @@ HyperTraceLbrDisable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrSave(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
@@ -247,8 +247,8 @@ HyperTraceLbrSave(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrDump(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
{
UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
@@ -284,16 +284,16 @@ HyperTraceLbrDump(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
}
/**
- * @brief Perform actions related to HyperTrace
+ * @brief Perform actions related to HyperTrace LBR
*
- * @param HyperTraceOperationRequest
+ * @param LbrOperationRequest
* @param ApplyFromVmxRootMode
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrPerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
{
BOOLEAN Status = TRUE;
@@ -302,20 +302,20 @@ HyperTraceLbrPerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperation
//
if (!g_HyperTraceCallbacksInitialized)
{
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED;
+ LbrOperationRequest->KernelStatus = DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED;
return FALSE;
}
//
// Perform the requested operation
//
- switch (HyperTraceOperationRequest->HyperTraceOperationType)
+ switch (LbrOperationRequest->LbrOperationType)
{
case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE:
LogInfo("HyperTrace: Enabling LBR tracing...\n");
- HyperTraceLbrEnable(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceLbrEnable(LbrOperationRequest, ApplyFromVmxRootMode);
break;
@@ -323,7 +323,7 @@ HyperTraceLbrPerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperation
LogInfo("HyperTrace: Disabling LBR tracing...\n");
- HyperTraceLbrDisable(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceLbrDisable(LbrOperationRequest, ApplyFromVmxRootMode);
break;
@@ -331,7 +331,7 @@ HyperTraceLbrPerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperation
LogInfo("HyperTrace: Saving LBR tracing...\n");
- HyperTraceLbrSave(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceLbrSave(LbrOperationRequest, ApplyFromVmxRootMode);
break;
@@ -339,13 +339,13 @@ HyperTraceLbrPerformOperation(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperation
LogInfo("HyperTrace: Showing LBR tracing...\n");
- HyperTraceLbrDump(HyperTraceOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceLbrDump(LbrOperationRequest, ApplyFromVmxRootMode);
break;
default:
- Status = FALSE;
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE;
+ Status = FALSE;
+ LbrOperationRequest->KernelStatus = DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE;
break;
}
diff --git a/hyperdbg/hypertrace/code/api/PtApi.c b/hyperdbg/hypertrace/code/api/PtApi.c
index 3b031415..1aa4f20e 100644
--- a/hyperdbg/hypertrace/code/api/PtApi.c
+++ b/hyperdbg/hypertrace/code/api/PtApi.c
@@ -19,3 +19,156 @@ VOID
HyperTracePtExample()
{
}
+
+/**
+ * @brief Enable PT tracing for HyperTrace
+ *
+ * @param PtOperationRequest
+ * @param ApplyFromVmxRootMode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTracePtEnable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
+{
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
+ //
+ // Check if PT is already enabled or not
+ //
+ if (g_ProcessorTraceEnabled)
+ {
+ PtOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_ALREADY_ENABLED;
+ return FALSE;
+ }
+
+ //
+ // Check PT support on CPU
+ //
+ if (!PtCheck())
+ {
+ PtOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_NOT_SUPPORTED;
+ return FALSE;
+ }
+
+ //
+ // Set the flag to indicate that PT tracing is enabled
+ //
+ g_ProcessorTraceEnabled = TRUE;
+
+ //
+ // Set successful status
+ //
+ PtOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+
+ return TRUE;
+}
+
+/**
+ * @brief Disable PT tracing for HyperTrace
+ *
+ * @param PtOperationRequest
+ * @param ApplyFromVmxRootMode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTracePtDisable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
+{
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
+ //
+ // Check if LBR is already disabled or not
+ //
+ if (!g_LastBranchRecordEnabled)
+ {
+ if (PtOperationRequest != NULL)
+ {
+ PtOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_ALREADY_DISABLED;
+ }
+
+ return FALSE;
+ }
+
+ //
+ // Disabling PT
+ //
+ g_ProcessorTraceEnabled = FALSE;
+
+ //
+ // Set successful status
+ //
+ if (PtOperationRequest != NULL)
+ {
+ PtOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
+
+ return TRUE;
+}
+
+/**
+ * @brief Perform actions related to HyperTrace PT
+ *
+ * @param PtOperationRequest
+ * @param ApplyFromVmxRootMode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTracePtPerformOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
+{
+ BOOLEAN Status = TRUE;
+
+ //
+ // Check if the hypertrace module is initialized before performing any operation
+ //
+ if (!g_HyperTraceCallbacksInitialized)
+ {
+ PtOperationRequest->KernelStatus = DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED;
+ return FALSE;
+ }
+
+ //
+ // Perform the requested operation
+ //
+ switch (PtOperationRequest->PtOperationType)
+ {
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_ENABLE:
+
+ LogInfo("HyperTrace: Enabling LBR tracing...\n");
+
+ HyperTracePtEnable(PtOperationRequest, ApplyFromVmxRootMode);
+
+ break;
+
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE:
+
+ LogInfo("HyperTrace: Disabling PT tracing...\n");
+
+ HyperTracePtDisable(PtOperationRequest, ApplyFromVmxRootMode);
+
+ break;
+
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SAVE:
+
+ LogInfo("HyperTrace: Saving LBR tracing (Not implemented)\n");
+
+ break;
+
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DUMP:
+
+ LogInfo("HyperTrace: Showing PT tracing (Not implemented)\n");
+
+ break;
+
+ default:
+ Status = FALSE;
+ PtOperationRequest->KernelStatus = DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE;
+ break;
+ }
+
+ return Status;
+}
diff --git a/hyperdbg/hypertrace/code/pt/Pt.c b/hyperdbg/hypertrace/code/pt/Pt.c
index 5894d33b..a52701e8 100644
--- a/hyperdbg/hypertrace/code/pt/Pt.c
+++ b/hyperdbg/hypertrace/code/pt/Pt.c
@@ -20,91 +20,3 @@ PtCheck()
{
return FALSE;
}
-
-/**
- * @brief Enable PT tracing for HyperTrace
- *
- * @param HyperTraceOperationRequest
- * @param ApplyFromVmxRootMode
- *
- * @return BOOLEAN
- */
-BOOLEAN
-HyperTracePtEnable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
-{
- UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
-
- //
- // Check if PT is already enabled or not
- //
- if (g_ProcessorTraceEnabled)
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_ALREADY_ENABLED;
- return FALSE;
- }
-
- //
- // Check PT support on CPU
- //
- if (!PtCheck())
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_NOT_SUPPORTED;
- return FALSE;
- }
-
- //
- // Set the flag to indicate that PT tracing is enabled
- //
- g_ProcessorTraceEnabled = TRUE;
-
- //
- // Set successful status
- //
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
-
- return TRUE;
-}
-
-/**
- * @brief Disable PT tracing for HyperTrace
- *
- * @param HyperTraceOperationRequest
- * @param ApplyFromVmxRootMode
- *
- * @return BOOLEAN
- */
-BOOLEAN
-HyperTracePtDisable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
-{
- UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
-
- //
- // Check if LBR is already disabled or not
- //
- if (!g_LastBranchRecordEnabled)
- {
- if (HyperTraceOperationRequest != NULL)
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_ALREADY_DISABLED;
- }
-
- return FALSE;
- }
-
- //
- // Disabling PT
- //
- g_ProcessorTraceEnabled = FALSE;
-
- //
- // Set successful status
- //
- if (HyperTraceOperationRequest != NULL)
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
- }
-
- return TRUE;
-}
diff --git a/hyperdbg/hypertrace/header/api/LbrApi.h b/hyperdbg/hypertrace/header/api/LbrApi.h
index 50258422..cd258392 100644
--- a/hyperdbg/hypertrace/header/api/LbrApi.h
+++ b/hyperdbg/hypertrace/header/api/LbrApi.h
@@ -18,5 +18,5 @@ VOID
HyperTraceLbrExamplePerformTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
BOOLEAN
-HyperTraceLbrDisable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
+HyperTraceLbrDisable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
BOOLEAN ApplyFromVmxRootMode);
diff --git a/hyperdbg/hypertrace/header/pt/Pt.h b/hyperdbg/hypertrace/header/pt/Pt.h
index 742ba4b8..c70b4657 100644
--- a/hyperdbg/hypertrace/header/pt/Pt.h
+++ b/hyperdbg/hypertrace/header/pt/Pt.h
@@ -31,5 +31,4 @@
//////////////////////////////////////////////////
BOOLEAN
-HyperTracePtDisable(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode);
+PtCheck();
diff --git a/hyperdbg/include/SDK/headers/Connection.h b/hyperdbg/include/SDK/headers/Connection.h
index 1191b870..98945d42 100644
--- a/hyperdbg/include/SDK/headers/Connection.h
+++ b/hyperdbg/include/SDK/headers/Connection.h
@@ -101,7 +101,8 @@ typedef enum _DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_QUERY_PCIDEVINFO,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_READ_IDT_ENTRIES,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_SMI_OPERATION,
- DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_OPERATION,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_LBR_OPERATION,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_PT_OPERATION,
//
// Debuggee to debugger
@@ -140,7 +141,8 @@ typedef enum _DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_PCIDEVINFO,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_QUERY_IDT_ENTRIES_REQUESTS,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_SMI_OPERATION_REQUESTS,
- DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_OPERATION_REQUESTS,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_LBR_OPERATION_REQUESTS,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_PT_OPERATION_REQUESTS,
//
// hardware debuggee to debugger
diff --git a/hyperdbg/include/SDK/headers/Ioctls.h b/hyperdbg/include/SDK/headers/Ioctls.h
index 7d6afbd0..b7973de3 100644
--- a/hyperdbg/include/SDK/headers/Ioctls.h
+++ b/hyperdbg/include/SDK/headers/Ioctls.h
@@ -332,8 +332,15 @@
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x826, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
- * @brief ioctl, to perform HyperTrace operations
+ * @brief ioctl, to perform HyperTrace LBR operations
*
*/
-#define IOCTL_PERFORM_HYPERTRACE_OPERATION \
+#define IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x827, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+/**
+ * @brief ioctl, to perform HyperTrace PT operations
+ *
+ */
+#define IOCTL_PERFORM_HYPERTRACE_PT_OPERATION \
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x828, METHOD_BUFFERED, FILE_ANY_ACCESS)
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index b6d6326b..5cdec797 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1265,35 +1265,69 @@ typedef struct _SMI_OPERATION_PACKETS
*/
/**
- * @brief Perform actions related to HyperTrace
+ * @brief Perform actions related to HyperTrace for LBR
*
*/
-typedef enum _HYPERTRACE_OPERATION_REQUEST_TYPE
+typedef enum _HYPERTRACE_LBR_OPERATION_REQUEST_TYPE
{
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE,
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE,
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE,
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP,
-} HYPERTRACE_OPERATION_REQUEST_TYPE;
+} HYPERTRACE_LBR_OPERATION_REQUEST_TYPE;
/**
- * @brief The structure of HyperTrace result packet in HyperDbg
+ * @brief The structure of HyperTrace LBR result packet in HyperDbg
*
*/
-typedef struct _HYPERTRACE_OPERATION_PACKETS
+typedef struct _HYPERTRACE_LBR_OPERATION_PACKETS
{
- HYPERTRACE_OPERATION_REQUEST_TYPE HyperTraceOperationType;
- UINT32 KernelStatus;
+ HYPERTRACE_LBR_OPERATION_REQUEST_TYPE LbrOperationType;
+ UINT32 KernelStatus;
-} HYPERTRACE_OPERATION_PACKETS, *PHYPERTRACE_OPERATION_PACKETS;
+} HYPERTRACE_LBR_OPERATION_PACKETS, *PHYPERTRACE_LBR_OPERATION_PACKETS;
/**
- * @brief Debugger size of HYPERTRACE_OPERATION_PACKETS
+ * @brief Debugger size of HYPERTRACE_LBR_OPERATION_PACKETS
*
*/
-#define SIZEOF_HYPERTRACE_OPERATION_PACKETS \
- sizeof(HYPERTRACE_OPERATION_PACKETS)
+#define SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS \
+ sizeof(HYPERTRACE_LBR_OPERATION_PACKETS)
+
+/* ==============================================================================================
+ */
+
+/**
+ * @brief Perform actions related to HyperTrace for PT
+ *
+ */
+typedef enum _HYPERTRACE_PT_OPERATION_REQUEST_TYPE
+{
+ HYPERTRACE_PT_OPERATION_REQUEST_TYPE_ENABLE,
+ HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE,
+ HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SAVE,
+ HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DUMP,
+
+} HYPERTRACE_PT_OPERATION_REQUEST_TYPE;
+
+/**
+ * @brief The structure of HyperTrace PT result packet in HyperDbg
+ *
+ */
+typedef struct _HYPERTRACE_PT_OPERATION_PACKETS
+{
+ HYPERTRACE_PT_OPERATION_REQUEST_TYPE PtOperationType;
+ UINT32 KernelStatus;
+
+} HYPERTRACE_PT_OPERATION_PACKETS, *PHYPERTRACE_PT_OPERATION_PACKETS;
+
+/**
+ * @brief Debugger size of HYPERTRACE_PT_OPERATION_PACKETS
+ *
+ */
+#define SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS \
+ sizeof(HYPERTRACE_PT_OPERATION_PACKETS)
/* ==============================================================================================
*/
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index e3e91988..337f4a25 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -32,24 +32,39 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks, BOOLEAN InitF
IMPORT_EXPORT_HYPERTRACE VOID
HyperTraceUnInit();
-//
-// Perform operations related to HyperTrace based on the request type and parameters
-//
-IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceLbrPerformOperation(HYPERTRACE_OPERATION_PACKETS * LbrOperationRequest,
- BOOLEAN ApplyFromVmxRootMode);
-
//////////////////////////////////////////////////
// LBR Functions //
//////////////////////////////////////////////////
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceLbrSave(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode);
+HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceLbrDump(HYPERTRACE_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode);
+HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId);
+
+//
+// Perform operations related to HyperTrace LBR based on the request type and parameters
+//
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode);
+
+//////////////////////////////////////////////////
+// PT Functions //
+//////////////////////////////////////////////////
+
+BOOLEAN
+HyperTracePtDisable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode);
+
+//
+// Perform operations related to HyperTrace PT based on the request type and parameters
+//
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTracePtPerformOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index bbfab809..f1666d06 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -43,7 +43,7 @@ CommandLbrHelp()
* @return VOID
*/
BOOLEAN
-CommandLbrSendRequest(HYPERTRACE_OPERATION_PACKETS * LbrRequest)
+CommandLbrSendRequest(HYPERTRACE_LBR_OPERATION_PACKETS * LbrRequest)
{
BOOL Status;
ULONG ReturnedLength;
@@ -53,7 +53,7 @@ CommandLbrSendRequest(HYPERTRACE_OPERATION_PACKETS * LbrRequest)
//
// Send the request over serial kernel debugger
//
- if (!KdSendHyperTracePacketsToDebuggee(LbrRequest, SIZEOF_HYPERTRACE_OPERATION_PACKETS))
+ if (!KdSendHyperTraceLbrPacketsToDebuggee(LbrRequest, SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS))
{
return FALSE;
}
@@ -70,14 +70,14 @@ CommandLbrSendRequest(HYPERTRACE_OPERATION_PACKETS * LbrRequest)
// Send IOCTL
//
Status = DeviceIoControl(
- g_DeviceHandle, // Handle to device
- IOCTL_PERFORM_HYPERTRACE_OPERATION, // IO Control Code (IOCTL)
- LbrRequest, // Input Buffer to driver.
- SIZEOF_HYPERTRACE_OPERATION_PACKETS, // Input buffer length
- LbrRequest, // Output Buffer from driver.
- SIZEOF_HYPERTRACE_OPERATION_PACKETS, // Length of output buffer in bytes.
- &ReturnedLength, // Bytes placed in buffer.
- NULL // synchronous call
+ g_DeviceHandle, // Handle to device
+ IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION, // IO Control Code (IOCTL)
+ LbrRequest, // Input Buffer to driver.
+ SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS, // Input buffer length
+ LbrRequest, // Output Buffer from driver.
+ SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS, // Length of output buffer in bytes.
+ &ReturnedLength, // Bytes placed in buffer.
+ NULL // synchronous call
);
if (!Status)
@@ -106,7 +106,7 @@ CommandLbrSendRequest(HYPERTRACE_OPERATION_PACKETS * LbrRequest)
* @return BOOLEAN
*/
BOOLEAN
-HyperDbgPerformLbrOperation(HYPERTRACE_OPERATION_PACKETS * LbrRequest)
+HyperDbgPerformLbrOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrRequest)
{
return CommandLbrSendRequest(LbrRequest);
}
@@ -122,7 +122,7 @@ HyperDbgPerformLbrOperation(HYPERTRACE_OPERATION_PACKETS * LbrRequest)
VOID
CommandLbr(vector CommandTokens, string Command)
{
- HYPERTRACE_OPERATION_PACKETS LbrRequest = {0};
+ HYPERTRACE_LBR_OPERATION_PACKETS LbrRequest = {0};
if (CommandTokens.size() != 2)
{
@@ -135,19 +135,19 @@ CommandLbr(vector CommandTokens, string Command)
if (CompareLowerCaseStrings(CommandTokens.at(1), "enable"))
{
- LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE;
+ LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE;
}
else if (CompareLowerCaseStrings(CommandTokens.at(1), "disable"))
{
- LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE;
+ LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE;
}
else if (CompareLowerCaseStrings(CommandTokens.at(1), "save"))
{
- LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE;
+ LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE;
}
else if (CompareLowerCaseStrings(CommandTokens.at(1), "dump"))
{
- LbrRequest.HyperTraceOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP;
+ LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP;
}
else
{
@@ -162,19 +162,19 @@ CommandLbr(vector CommandTokens, string Command)
//
if (CommandLbrSendRequest(&LbrRequest))
{
- if (LbrRequest.HyperTraceOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE)
+ if (LbrRequest.LbrOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE)
{
ShowMessages("LBR enabled successfully\n");
}
- else if (LbrRequest.HyperTraceOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE)
+ else if (LbrRequest.LbrOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE)
{
ShowMessages("LBR disabled successfully\n");
}
- else if (LbrRequest.HyperTraceOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE)
+ else if (LbrRequest.LbrOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE)
{
ShowMessages("LBR branches are saved\n");
}
- else if (LbrRequest.HyperTraceOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP)
+ else if (LbrRequest.LbrOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP)
{
ShowMessages("LBR branches are shown\n");
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp
new file mode 100644
index 00000000..0c86476a
--- /dev/null
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp
@@ -0,0 +1,185 @@
+/**
+ * @file pt.cpp
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief !pt command
+ * @details
+ * @version 0.19
+ * @date 2026-04-25
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+//
+// Global Variables
+//
+extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
+
+/**
+ * @brief help of the !pt command
+ *
+ * @return VOID
+ */
+VOID
+CommandPtHelp()
+{
+ ShowMessages("!pt : enables and disables Processor Trace (PT).\n");
+
+ ShowMessages("syntax : \t!pt [Function (string)]\n");
+
+ ShowMessages("\n");
+ ShowMessages("\t\te.g : !pt enable\n");
+ ShowMessages("\t\te.g : !pt disable\n");
+}
+
+/**
+ * @brief Send PT requests
+ *
+ * @param PtRequest
+ *
+ * @return VOID
+ */
+BOOLEAN
+CommandPtSendRequest(HYPERTRACE_PT_OPERATION_PACKETS * PtRequest)
+{
+ BOOL Status;
+ ULONG ReturnedLength;
+
+ if (g_IsSerialConnectedToRemoteDebuggee)
+ {
+ //
+ // Send the request over serial kernel debugger
+ //
+ if (!KdSendHyperTracePtPacketsToDebuggee(PtRequest, SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS))
+ {
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+ else
+ {
+ AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnFalse);
+
+ //
+ // Send IOCTL
+ //
+ Status = DeviceIoControl(
+ g_DeviceHandle, // Handle to device
+ IOCTL_PERFORM_HYPERTRACE_PT_OPERATION, // IO Control Code (IOCTL)
+ PtRequest, // Input Buffer to driver.
+ SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS, // Input buffer length
+ PtRequest, // Output Buffer from driver.
+ SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS, // Length of output buffer in bytes.
+ &ReturnedLength, // Bytes placed in buffer.
+ NULL // synchronous call
+ );
+
+ if (!Status)
+ {
+ ShowMessages("ioctl failed with code 0x%x\n", GetLastError());
+
+ return FALSE;
+ }
+
+ if (PtRequest->KernelStatus == DEBUGGER_OPERATION_WAS_SUCCESSFUL)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+}
+
+/**
+ * @brief Request to perform an PT operation
+ *
+ * @param PtRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperDbgPerformPtOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtRequest)
+{
+ return CommandPtSendRequest(PtRequest);
+}
+
+/**
+ * @brief !pt command handler
+ *
+ * @param CommandTokens
+ * @param Command
+ *
+ * @return VOID
+ */
+VOID
+CommandPt(vector CommandTokens, string Command)
+{
+ HYPERTRACE_PT_OPERATION_PACKETS PtRequest = {0};
+
+ if (CommandTokens.size() != 2)
+ {
+ ShowMessages("incorrect use of the '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
+
+ CommandPtHelp();
+ return;
+ }
+
+ if (CompareLowerCaseStrings(CommandTokens.at(1), "enable"))
+ {
+ PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_ENABLE;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "disable"))
+ {
+ PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "save"))
+ {
+ PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SAVE;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "dump"))
+ {
+ PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DUMP;
+ }
+ else
+ {
+ ShowMessages("incorrect use of the '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
+ CommandPtHelp();
+ return;
+ }
+
+ //
+ // Send the PT operation request
+ //
+ if (CommandPtSendRequest(&PtRequest))
+ {
+ if (PtRequest.PtOperationType == HYPERTRACE_PT_OPERATION_REQUEST_TYPE_ENABLE)
+ {
+ ShowMessages("PT enabled successfully\n");
+ }
+ else if (PtRequest.PtOperationType == HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE)
+ {
+ ShowMessages("PT disabled successfully\n");
+ }
+ else if (PtRequest.PtOperationType == HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SAVE)
+ {
+ ShowMessages("PT branches are saved\n");
+ }
+ else if (PtRequest.PtOperationType == HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DUMP)
+ {
+ ShowMessages("PT branches are shown\n");
+ }
+ }
+ else
+ {
+ ShowErrorMessage(PtRequest.KernelStatus);
+ return;
+ }
+}
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
index 4460714e..18b115a6 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
@@ -1631,6 +1631,8 @@ InitializeCommandsDictionary()
g_CommandsList["!lbr"] = {&CommandLbr, &CommandLbrHelp, DEBUGGER_COMMAND_LBR_ATTRIBUTES};
+ g_CommandsList["!pt"] = {&CommandPt, &CommandPtHelp, DEBUGGER_COMMAND_PT_ATTRIBUTES};
+
//
// hwdbg commands
//
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
index f11e3e53..11b008df 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
@@ -1056,36 +1056,71 @@ KdSendSmiPacketsToDebuggee(PSMI_OPERATION_PACKETS SmiOperationRequest, UINT32 Ex
}
/**
- * @brief Send requests for HyperTrace operation packet to the debuggee
+ * @brief Send requests for HyperTrace LBR operation packet to the debuggee
*
- * @param HyperTraceOperationRequest
+ * @param HyperTraceLbrOperationRequest
*
* @return BOOLEAN
*/
BOOLEAN
-KdSendHyperTracePacketsToDebuggee(PHYPERTRACE_OPERATION_PACKETS HyperTraceOperationRequest, UINT32 ExpectedRequestSize)
+KdSendHyperTraceLbrPacketsToDebuggee(PHYPERTRACE_LBR_OPERATION_PACKETS HyperTraceLbrOperationRequest, UINT32 ExpectedRequestSize)
{
//
// Set the request data
//
- DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_OPERATION_RESULT, HyperTraceOperationRequest, ExpectedRequestSize);
+ DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_OPERATION_RESULT, HyperTraceLbrOperationRequest, ExpectedRequestSize);
//
// Send the LBR request packets
//
if (!KdCommandPacketAndBufferToDebuggee(
DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGER_TO_DEBUGGEE_EXECUTE_ON_VMX_ROOT,
- DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_OPERATION,
- (CHAR *)HyperTraceOperationRequest,
- SIZEOF_HYPERTRACE_OPERATION_PACKETS))
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_LBR_OPERATION,
+ (CHAR *)HyperTraceLbrOperationRequest,
+ SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS))
{
return FALSE;
}
//
- // Wait until the result of actions to HyperTrace is received
+ // Wait until the result of actions to HyperTrace LBR is received
//
- DbgWaitForKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_OPERATION_RESULT);
+ DbgWaitForKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_OPERATION_RESULT);
+
+ return TRUE;
+}
+
+/**
+ * @brief Send requests for HyperTrace PT operation packet to the debuggee
+ *
+ * @param HyperTracePtOperationRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+KdSendHyperTracePtPacketsToDebuggee(PHYPERTRACE_PT_OPERATION_PACKETS HyperTracePtOperationRequest, UINT32 ExpectedRequestSize)
+{
+ //
+ // Set the request data
+ //
+ DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_PT_OPERATION_RESULT, HyperTracePtOperationRequest, ExpectedRequestSize);
+
+ //
+ // Send the PT request packets
+ //
+ if (!KdCommandPacketAndBufferToDebuggee(
+ DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGER_TO_DEBUGGEE_EXECUTE_ON_VMX_ROOT,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_PT_OPERATION,
+ (CHAR *)HyperTracePtOperationRequest,
+ SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS))
+ {
+ return FALSE;
+ }
+
+ //
+ // Wait until the result of actions to HyperTrace PT is received
+ //
+ DbgWaitForKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_PT_OPERATION_RESULT);
return TRUE;
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
index 57b05e67..e1821ac3 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
@@ -70,7 +70,8 @@ ListeningSerialPortInDebugger()
PDEBUGGER_SHORT_CIRCUITING_EVENT ShortCircuitingPacket;
PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS PtePacket;
PSMI_OPERATION_PACKETS SmiOperationPacket;
- PHYPERTRACE_OPERATION_PACKETS HyperTraceOperationPacket;
+ PHYPERTRACE_LBR_OPERATION_PACKETS HyperTraceLbrOperationPacket;
+ PHYPERTRACE_PT_OPERATION_PACKETS HyperTracePtOperationPacket;
PDEBUGGER_PAGE_IN_REQUEST PageinPacket;
PDEBUGGER_VA2PA_AND_PA2VA_COMMANDS Va2paPa2vaPacket;
PDEBUGGEE_BP_LIST_OR_MODIFY_PACKET ListOrModifyBreakpointPacket;
@@ -1007,24 +1008,45 @@ StartAgain:
break;
- case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_OPERATION_REQUESTS:
+ case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_LBR_OPERATION_REQUESTS:
- HyperTraceOperationPacket = (HYPERTRACE_OPERATION_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
+ HyperTraceLbrOperationPacket = (HYPERTRACE_LBR_OPERATION_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
//
// Get the address and size of the caller
//
- DbgWaitGetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_OPERATION_RESULT, &CallerAddress, &CallerSize);
+ DbgWaitGetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_OPERATION_RESULT, &CallerAddress, &CallerSize);
//
// Copy the memory buffer for the caller
//
- memcpy(CallerAddress, HyperTraceOperationPacket, CallerSize);
+ memcpy(CallerAddress, HyperTraceLbrOperationPacket, CallerSize);
//
- // Signal the event relating to receiving result of HyperTrace operation
+ // Signal the event relating to receiving result of HyperTrace LBR operation
//
- DbgReceivedKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_OPERATION_RESULT);
+ DbgReceivedKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_OPERATION_RESULT);
+
+ break;
+
+ case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_PT_OPERATION_REQUESTS:
+
+ HyperTracePtOperationPacket = (HYPERTRACE_PT_OPERATION_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
+
+ //
+ // Get the address and size of the caller
+ //
+ DbgWaitGetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_PT_OPERATION_RESULT, &CallerAddress, &CallerSize);
+
+ //
+ // Copy the memory buffer for the caller
+ //
+ memcpy(CallerAddress, HyperTracePtOperationPacket, CallerSize);
+
+ //
+ // Signal the event relating to receiving result of HyperTrace PT operation
+ //
+ DbgReceivedKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_PT_OPERATION_RESULT);
break;
diff --git a/hyperdbg/libhyperdbg/header/commands.h b/hyperdbg/libhyperdbg/header/commands.h
index 9081a70e..0972d80d 100644
--- a/hyperdbg/libhyperdbg/header/commands.h
+++ b/hyperdbg/libhyperdbg/header/commands.h
@@ -479,7 +479,9 @@ typedef std::map CommandType;
#define DEBUGGER_COMMAND_LBR_ATTRIBUTES \
NULL
-// DEBUGGER_COMMAND_ATTRIBUTE_LOCAL_COMMAND_IN_DEBUGGER_MODE
+
+#define DEBUGGER_COMMAND_PT_ATTRIBUTES \
+ NULL
//////////////////////////////////////////////////
// Command Functions //
@@ -770,6 +772,9 @@ CommandSmi(vector CommandTokens, string Command);
VOID
CommandLbr(vector CommandTokens, string Command);
+VOID
+CommandPt(vector CommandTokens, string Command);
+
//
// hwdbg commands
//
diff --git a/hyperdbg/libhyperdbg/header/debugger.h b/hyperdbg/libhyperdbg/header/debugger.h
index 6f1fabe2..77a77ea9 100644
--- a/hyperdbg/libhyperdbg/header/debugger.h
+++ b/hyperdbg/libhyperdbg/header/debugger.h
@@ -61,7 +61,8 @@
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_PCIDEVINFO_RESULT 0x1d
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_IDT_ENTRIES 0x1e
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_SMI_OPERATION_RESULT 0x1f
-#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_OPERATION_RESULT 0x20
+#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_OPERATION_RESULT 0x20
+#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_PT_OPERATION_RESULT 0x21
//////////////////////////////////////////////////
// Event Details //
diff --git a/hyperdbg/libhyperdbg/header/help.h b/hyperdbg/libhyperdbg/header/help.h
index e7ab5102..f00d748f 100644
--- a/hyperdbg/libhyperdbg/header/help.h
+++ b/hyperdbg/libhyperdbg/header/help.h
@@ -312,6 +312,9 @@ CommandSmiHelp();
VOID
CommandLbrHelp();
+VOID
+CommandPtHelp();
+
//
// hwdbg commands
//
diff --git a/hyperdbg/libhyperdbg/header/kd.h b/hyperdbg/libhyperdbg/header/kd.h
index 94038ec1..5c195f00 100644
--- a/hyperdbg/libhyperdbg/header/kd.h
+++ b/hyperdbg/libhyperdbg/header/kd.h
@@ -156,7 +156,10 @@ BOOLEAN
KdSendSmiPacketsToDebuggee(PSMI_OPERATION_PACKETS SmiOperationRequest, UINT32 ExpectedRequestSize);
BOOLEAN
-KdSendHyperTracePacketsToDebuggee(PHYPERTRACE_OPERATION_PACKETS HyperTraceOperationRequest, UINT32 ExpectedRequestSize);
+KdSendHyperTraceLbrPacketsToDebuggee(PHYPERTRACE_LBR_OPERATION_PACKETS HyperTraceLbrOperationRequest, UINT32 ExpectedRequestSize);
+
+BOOLEAN
+KdSendHyperTracePtPacketsToDebuggee(PHYPERTRACE_PT_OPERATION_PACKETS HyperTracePtOperationRequest, UINT32 ExpectedRequestSize);
BOOLEAN
KdSendQueryIdtPacketsToDebuggee(PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS IdtRequest);
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
index 62c40fa5..4f8ae89b 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
@@ -181,6 +181,7 @@
+
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
index 916d4e49..2b471595 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
@@ -601,6 +601,9 @@
code\debugger\commands\extension-commands
+
+ code\debugger\commands\extension-commands
+
From 76d91901cd4a069043b71034e9bda58b90106ed0 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 26 Apr 2026 02:23:04 +0200
Subject: [PATCH 138/323] add lbr_flush function to the script engine
---
hyperdbg/hypertrace/code/api/LbrApi.c | 77 +-
.../hypertrace/code/broadcast/Broadcast.c | 14 +
.../hypertrace/code/broadcast/DpcRoutines.c | 33 +
hyperdbg/hypertrace/code/lbr/Lbr.c | 36 +-
.../hypertrace/header/broadcast/Broadcast.h | 3 +
.../hypertrace/header/broadcast/DpcRoutines.h | 3 +
hyperdbg/hypertrace/header/lbr/Lbr.h | 3 +
.../include/SDK/headers/RequestStructures.h | 1 +
.../headers/ScriptEngineCommonDefinitions.h | 110 +-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 4 +
.../commands/extension-commands/lbr.cpp | 9 +
hyperdbg/script-engine/code/parse-table.c | 1453 +++++++++--------
hyperdbg/script-engine/header/parse-table.h | 10 +-
hyperdbg/script-engine/python/Grammar.txt | 2 +-
hyperdbg/script-eval/code/Functions.c | 28 +-
hyperdbg/script-eval/code/ScriptEngineEval.c | 6 +
.../header/ScriptEngineInternalHeader.h | 3 +
17 files changed, 979 insertions(+), 816 deletions(-)
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index c7915034..372f3d31 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -45,32 +45,6 @@ HyperTraceLbrExamplePerformTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVm
}
}
-/**
- * @brief Start LBR tracing for HyperTrace
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
- *
- * @return BOOLEAN
- */
-BOOLEAN
-HyperTraceLbrStart(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
-{
- return LbrStart(ApplyFromVmxRootMode, ApplyByVmcall);
-}
-
-/**
- * @brief Stop LBR tracing for HyperTrace
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
- *
- * @return VOID
- */
-VOID
-HyperTraceLbrStop(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
-{
- LbrStop(ApplyFromVmxRootMode, ApplyByVmcall);
-}
-
/**
* @brief Query the state of LBR save and load VM exit and entry controls
*
@@ -193,6 +167,49 @@ HyperTraceLbrDisable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReque
return TRUE;
}
+/**
+ * @brief Flush LBR tracing for HyperTrace
+ *
+ * @param HyperTraceOperationRequest
+ * @param ApplyFromVmxRootMode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode)
+{
+ UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
+
+ //
+ // Check if LBR is already disabled or not
+ //
+ if (!g_LastBranchRecordEnabled)
+ {
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_DISABLED;
+ }
+
+ return FALSE;
+ }
+
+ //
+ // Broadcast disabling LBR on all cores
+ //
+ BroadcastDisableLbrOnAllCores();
+
+ //
+ // Set successful status
+ //
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
+
+ return TRUE;
+}
+
/**
* @brief Save LBR tracing for HyperTrace
*
@@ -343,6 +360,14 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
break;
+ case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FLUSH:
+
+ LogInfo("HyperTrace: Flushing LBR tracing...\n");
+
+ HyperTraceLbrFlush(LbrOperationRequest, ApplyFromVmxRootMode);
+
+ break;
+
default:
Status = FALSE;
LbrOperationRequest->KernelStatus = DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE;
diff --git a/hyperdbg/hypertrace/code/broadcast/Broadcast.c b/hyperdbg/hypertrace/code/broadcast/Broadcast.c
index fd3a5520..76fb6088 100644
--- a/hyperdbg/hypertrace/code/broadcast/Broadcast.c
+++ b/hyperdbg/hypertrace/code/broadcast/Broadcast.c
@@ -38,3 +38,17 @@ BroadcastDisableLbrOnAllCores()
//
KeGenericCallDpc(DpcRoutineDisableLbr, NULL);
}
+
+/**
+ * @brief Routines to flush LBR on all cores
+ *
+ * @return VOID
+ */
+VOID
+BroadcastFlushLbrOnAllCores()
+{
+ //
+ // Broadcast to all cores
+ //
+ KeGenericCallDpc(DpcRoutineFlushLbr, NULL);
+}
diff --git a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
index 01d9594b..13625384 100644
--- a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
@@ -104,3 +104,36 @@ DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, P
return TRUE;
}
+
+/**
+ * @brief Broadcast flushing LBR
+ *
+ * @param Dpc
+ * @param DeferredContext
+ * @param SystemArgument1
+ * @param SystemArgument2
+ * @return BOOLEAN
+ */
+BOOLEAN
+DpcRoutineFlushLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ UNREFERENCED_PARAMETER(Dpc);
+ UNREFERENCED_PARAMETER(DeferredContext);
+
+ //
+ // Flush LBR on all cores
+ //
+ LbrFlush(TRUE, TRUE);
+
+ //
+ // Wait for all DPCs to synchronize at this point
+ //
+ KeSignalCallDpcSynchronize(SystemArgument2);
+
+ //
+ // Mark the DPC as being complete
+ //
+ KeSignalCallDpcDone(SystemArgument1);
+
+ return TRUE;
+}
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 47c2f4d2..4003aff6 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -114,10 +114,13 @@ LbrCheck()
/**
* @brief Flush LBR MSRs by disabling LBR and clearing all LBR entries
*
+ * @param ApplyFromVmxRootMode
+ * @param ApplyByVmcall
+ *
* @return VOID
*/
VOID
-LbrFlush()
+LbrFlush(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
{
ULONG i;
ULONGLONG DbgCtlMsr;
@@ -127,9 +130,34 @@ LbrFlush()
//
LogInfo("Flush LBR on cpu core: %d\n", KeGetCurrentProcessorNumberEx(NULL));
- xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
- DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
- xwrmsr(IA32_DEBUGCTL, DbgCtlMsr);
+ if (ApplyFromVmxRootMode)
+ {
+ if (ApplyByVmcall)
+ {
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
+ }
+ else
+ {
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+ }
+
+ DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
+
+ if (ApplyByVmcall)
+ {
+ g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
+ }
+ else
+ {
+ g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
+ }
+ }
+ else
+ {
+ xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
+ DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
+ xwrmsr(IA32_DEBUGCTL, DbgCtlMsr);
+ }
//
// Flush LBR registers
diff --git a/hyperdbg/hypertrace/header/broadcast/Broadcast.h b/hyperdbg/hypertrace/header/broadcast/Broadcast.h
index e73850ba..b2e05a3d 100644
--- a/hyperdbg/hypertrace/header/broadcast/Broadcast.h
+++ b/hyperdbg/hypertrace/header/broadcast/Broadcast.h
@@ -21,3 +21,6 @@ BroadcastEnableLbrOnAllCores();
VOID
BroadcastDisableLbrOnAllCores();
+
+VOID
+BroadcastFlushLbrOnAllCores();
diff --git a/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h b/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
index 814847f2..a002192b 100644
--- a/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
+++ b/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
@@ -21,3 +21,6 @@ DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
BOOLEAN
DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+
+BOOLEAN
+DpcRoutineFlushLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index f0cbd42c..30180064 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -91,6 +91,9 @@ LbrStart(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
VOID
LbrStop(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+VOID
+LbrFlush(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+
VOID
LbrSave();
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 5cdec797..30a630bd 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1274,6 +1274,7 @@ typedef enum _HYPERTRACE_LBR_OPERATION_REQUEST_TYPE
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE,
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE,
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP,
+ HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FLUSH,
} HYPERTRACE_LBR_OPERATION_REQUEST_TYPE;
diff --git a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
index 43be87c3..ceb53e78 100644
--- a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
+++ b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
@@ -143,60 +143,61 @@ static const char *const SymbolTypeNames[] = {
#define FUNC_PRINTF 46
#define FUNC_PAUSE 47
#define FUNC_FLUSH 48
-#define FUNC_EVENT_TRACE_STEP 49
-#define FUNC_EVENT_TRACE_STEP_IN 50
-#define FUNC_EVENT_TRACE_STEP_OUT 51
-#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP 52
-#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN 53
-#define FUNC_RDTSC 54
-#define FUNC_RDTSCP 55
-#define FUNC_LBR_SAVE 56
-#define FUNC_LBR_DUMP 57
-#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 58
-#define FUNC_EVENT_INJECT 59
-#define FUNC_POI 60
-#define FUNC_DB 61
-#define FUNC_DD 62
-#define FUNC_DW 63
-#define FUNC_DQ 64
-#define FUNC_NEG 65
-#define FUNC_HI 66
-#define FUNC_LOW 67
-#define FUNC_NOT 68
-#define FUNC_CHECK_ADDRESS 69
-#define FUNC_DISASSEMBLE_LEN 70
-#define FUNC_DISASSEMBLE_LEN32 71
-#define FUNC_DISASSEMBLE_LEN64 72
-#define FUNC_INTERLOCKED_INCREMENT 73
-#define FUNC_INTERLOCKED_DECREMENT 74
-#define FUNC_PHYSICAL_TO_VIRTUAL 75
-#define FUNC_VIRTUAL_TO_PHYSICAL 76
-#define FUNC_POI_PA 77
-#define FUNC_HI_PA 78
-#define FUNC_LOW_PA 79
-#define FUNC_DB_PA 80
-#define FUNC_DD_PA 81
-#define FUNC_DW_PA 82
-#define FUNC_DQ_PA 83
-#define FUNC_ED 84
-#define FUNC_EB 85
-#define FUNC_EQ 86
-#define FUNC_INTERLOCKED_EXCHANGE 87
-#define FUNC_INTERLOCKED_EXCHANGE_ADD 88
-#define FUNC_EB_PA 89
-#define FUNC_ED_PA 90
-#define FUNC_EQ_PA 91
-#define FUNC_INTERLOCKED_COMPARE_EXCHANGE 92
-#define FUNC_STRLEN 93
-#define FUNC_STRCMP 94
-#define FUNC_MEMCMP 95
-#define FUNC_STRNCMP 96
-#define FUNC_WCSLEN 97
-#define FUNC_WCSCMP 98
-#define FUNC_EVENT_INJECT_ERROR_CODE 99
-#define FUNC_MEMCPY 100
-#define FUNC_MEMCPY_PA 101
-#define FUNC_WCSNCMP 102
+#define FUNC_LBR_FLUSH 49
+#define FUNC_EVENT_TRACE_STEP 50
+#define FUNC_EVENT_TRACE_STEP_IN 51
+#define FUNC_EVENT_TRACE_STEP_OUT 52
+#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP 53
+#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN 54
+#define FUNC_RDTSC 55
+#define FUNC_RDTSCP 56
+#define FUNC_LBR_SAVE 57
+#define FUNC_LBR_DUMP 58
+#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 59
+#define FUNC_EVENT_INJECT 60
+#define FUNC_POI 61
+#define FUNC_DB 62
+#define FUNC_DD 63
+#define FUNC_DW 64
+#define FUNC_DQ 65
+#define FUNC_NEG 66
+#define FUNC_HI 67
+#define FUNC_LOW 68
+#define FUNC_NOT 69
+#define FUNC_CHECK_ADDRESS 70
+#define FUNC_DISASSEMBLE_LEN 71
+#define FUNC_DISASSEMBLE_LEN32 72
+#define FUNC_DISASSEMBLE_LEN64 73
+#define FUNC_INTERLOCKED_INCREMENT 74
+#define FUNC_INTERLOCKED_DECREMENT 75
+#define FUNC_PHYSICAL_TO_VIRTUAL 76
+#define FUNC_VIRTUAL_TO_PHYSICAL 77
+#define FUNC_POI_PA 78
+#define FUNC_HI_PA 79
+#define FUNC_LOW_PA 80
+#define FUNC_DB_PA 81
+#define FUNC_DD_PA 82
+#define FUNC_DW_PA 83
+#define FUNC_DQ_PA 84
+#define FUNC_ED 85
+#define FUNC_EB 86
+#define FUNC_EQ 87
+#define FUNC_INTERLOCKED_EXCHANGE 88
+#define FUNC_INTERLOCKED_EXCHANGE_ADD 89
+#define FUNC_EB_PA 90
+#define FUNC_ED_PA 91
+#define FUNC_EQ_PA 92
+#define FUNC_INTERLOCKED_COMPARE_EXCHANGE 93
+#define FUNC_STRLEN 94
+#define FUNC_STRCMP 95
+#define FUNC_MEMCMP 96
+#define FUNC_STRNCMP 97
+#define FUNC_WCSLEN 98
+#define FUNC_WCSCMP 99
+#define FUNC_EVENT_INJECT_ERROR_CODE 100
+#define FUNC_MEMCPY 101
+#define FUNC_MEMCPY_PA 102
+#define FUNC_WCSNCMP 103
static const char *const FunctionNames[] = {
"FUNC_UNDEFINED",
@@ -248,6 +249,7 @@ static const char *const FunctionNames[] = {
"FUNC_PRINTF",
"FUNC_PAUSE",
"FUNC_FLUSH",
+"FUNC_LBR_FLUSH",
"FUNC_EVENT_TRACE_STEP",
"FUNC_EVENT_TRACE_STEP_IN",
"FUNC_EVENT_TRACE_STEP_OUT",
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 337f4a25..d3f77538 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -44,6 +44,10 @@ IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
BOOLEAN ApplyFromVmxRootMode);
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
+ BOOLEAN ApplyFromVmxRootMode);
+
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index f1666d06..28df6ca7 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -33,6 +33,7 @@ CommandLbrHelp()
ShowMessages("\t\te.g : !lbr disable\n");
ShowMessages("\t\te.g : !lbr save\n");
ShowMessages("\t\te.g : !lbr dump\n");
+ ShowMessages("\t\te.g : !lbr flush\n");
}
/**
@@ -149,6 +150,10 @@ CommandLbr(vector CommandTokens, string Command)
{
LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP;
}
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "flush"))
+ {
+ LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FLUSH;
+ }
else
{
ShowMessages("incorrect use of the '%s'\n\n",
@@ -178,6 +183,10 @@ CommandLbr(vector CommandTokens, string Command)
{
ShowMessages("LBR branches are shown\n");
}
+ else if (LbrRequest.LbrOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FLUSH)
+ {
+ ShowMessages("LBR branches are flush\n");
+ }
}
else
{
diff --git a/hyperdbg/script-engine/code/parse-table.c b/hyperdbg/script-engine/code/parse-table.c
index a1515038..5647b26b 100644
--- a/hyperdbg/script-engine/code/parse-table.c
+++ b/hyperdbg/script-engine/code/parse-table.c
@@ -142,6 +142,7 @@ const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
+ {NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "VA"},
{NON_TERMINAL, "VA"},
{NON_TERMINAL, "IF_STATEMENT"},
@@ -366,6 +367,7 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "printf"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "STRING"},{SEMANTIC_RULE, "@VARGSTART"},{NON_TERMINAL, "VA"},{SEMANTIC_RULE, "@PRINTF"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "pause"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@PAUSE"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "flush"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@FLUSH"},{SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "lbr_flush"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_FLUSH"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_step"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_STEP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_step_in"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_STEP_IN"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_step_out"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_STEP_OUT"},{SPECIAL_TOKEN, ")"}},
@@ -650,6 +652,7 @@ const unsigned int RhsSize[RULES_COUNT]=
4,
4,
4,
+4,
5,
5,
5,
@@ -838,262 +841,263 @@ const unsigned int RhsSize[RULES_COUNT]=
};
const char* NoneTerminalMap[NONETERMINAL_COUNT]=
{
-"INIT_LIST_CONT",
-"ARRAY_DIMS2",
-"ELSE_STATEMENT",
-"ARRAY_INIT",
-"StringNumber",
-"VARIABLE_TYPE2",
-"VARIABLE_TYPE5",
-"E12",
-"MULTIPLE_ASSIGNMENT2",
-"VA",
-"WstringNumber",
-"CONST_NUMBER",
-"VARIABLE_TYPE6",
-"VARIABLE_TYPE1",
-"STATEMENT",
-"SIMPLE_ASSIGNMENT",
-"ELSIF_STATEMENT'",
-"L_VALUE",
-"VARIABLE_TYPE3",
-"VA3",
-"E5'",
-"ARRAY_DIMS_WRITE2",
-"E2'",
-"INIT_LIST",
-"ASSIGNMENT_STATEMENT",
"ARRAY_DIMS_READ",
-"STATEMENT2",
-"S",
-"BOOLEAN_EXPRESSION",
-"ASSIGNMENT_STATEMENT'",
-"E1",
-"E3",
-"ARRAY_DIMS_READ_OPT",
-"WSTRING",
-"E2",
-"FOR_STATEMENT",
-"WHILE_STATEMENT",
+"ARRAY_INIT",
+"ELSE_STATEMENT",
+"INC_DEC'",
+"ARRAY_DIMS_READ2",
"E1'",
+"VARIABLE_TYPE3",
+"RETURN",
+"VA",
+"INIT_LIST",
+"L_VALUE",
+"INIT_ITEM",
+"STATEMENT",
+"END_OF_IF",
+"ELSIF_STATEMENT",
+"SIMPLE_ASSIGNMENT",
+"E0'",
+"CALL_FUNC_STATEMENT",
+"E2'",
+"STRING",
+"VARIABLE_TYPE1",
+"ARRAY_DIMS",
+"ARRAY_DIMS_READ_OPT",
+"ARRAY_DIMS2",
"ARRAY_DIMS_WRITE_OPT",
"S2",
+"WHILE_STATEMENT",
+"StringNumber",
"INC_DEC",
-"E5",
-"RETURN",
-"CALL_FUNC_STATEMENT",
-"IF_STATEMENT",
-"DO_WHILE_STATEMENT",
+"E12",
+"VA3",
+"FOR_STATEMENT",
+"E5'",
+"ASSIGNMENT_STATEMENT",
+"CONST_NUMBER",
"MULTIPLE_ASSIGNMENT",
-"ARRAY_DIMS",
-"E4",
-"INC_DEC'",
+"VARIABLE_TYPE2",
+"VARIABLE_TYPE6",
+"DO_WHILE_STATEMENT",
"EXPRESSION",
-"ARRAY_DIMS_READ2",
-"INIT_LIST_TAIL",
-"END_OF_IF",
+"E3",
"VARIABLE_TYPE4",
-"E0'",
-"E3'",
-"ELSIF_STATEMENT",
-"VA2",
-"INIT_ITEM",
-"STRING",
+"E2",
+"WSTRING",
+"E5",
+"STATEMENT2",
+"VARIABLE_TYPE5",
+"INIT_LIST_TAIL",
+"E4",
+"ARRAY_DIMS_WRITE",
"E4'",
-"ARRAY_DIMS_WRITE"
+"ELSIF_STATEMENT'",
+"WstringNumber",
+"ASSIGNMENT_STATEMENT'",
+"IF_STATEMENT",
+"E3'",
+"E1",
+"ARRAY_DIMS_WRITE2",
+"BOOLEAN_EXPRESSION",
+"INIT_LIST_CONT",
+"VA2",
+"S",
+"MULTIPLE_ASSIGNMENT2"
};
const char* TerminalMap[TERMINAL_COUNT]=
{
-"event_enable",
-"not",
-"formats",
-"memcpy_pa",
-"eq_pa",
-"spinlock_lock",
-"_binary",
-"_local_id",
-"low",
-"dq",
-"event_inject_error_code",
-"microsleep",
-"_register",
-"dw",
-"]",
-">>",
-"interlocked_compare_exchange",
-"else",
-"wcscmp",
-"eq",
-"dq_pa",
-"event_trace_step_out",
-"~",
-"++",
-"_script_variable_type",
-"_hex",
-"return",
-"printf",
-"rdtsc",
-"_string",
-"(",
-")",
-"db_pa",
-"strncmp",
-"strlen",
-"/",
-"&=",
-"if",
-"#include",
-"_octal",
"_decimal",
-"lbr_dump",
-"interlocked_increment",
-"eb_pa",
-"+=",
-"_global_id",
-"<<",
-"event_trace_step",
-"memcpy",
-"spinlock_unlock",
-"interlocked_exchange",
-"flush",
-"wcslen",
-"pause",
-"test_statement",
-"dd_pa",
-"db",
-"disassemble_len",
-"ed",
-"check_address",
-",",
-"event_clear",
-"_function_parameter_id",
-"spinlock_lock_custom_wait",
-"wcsncmp",
-"low_pa",
"|=",
-"<<=",
-"event_trace_instrumentation_step",
-"^=",
-"$",
-"neg",
-"physical_to_virtual",
-"ed_pa",
-"^",
-"while",
-"event_sc",
-"strcmp",
-"eb",
-"event_trace_step_in",
-"%",
-"dw_pa",
-"event_inject",
-"&",
-"*",
-"*=",
-"event_disable",
-"rdtscp",
-"disassemble_len64",
-"elsif",
+"flush",
"{",
-"-",
-"poi",
-"hi_pa",
-"lbr_save",
-"[",
-"%=",
-"_pseudo_register",
-"do",
"+",
-"/=",
-"-=",
-"_wstring",
-"event_trace_instrumentation_step_in",
+"interlocked_exchange",
"reference",
-"memcmp",
-"interlocked_decrement",
-"for",
-"=",
-"|",
-">>=",
-"dd",
-";",
-"print",
-"continue",
-"hi",
-"break",
-"}",
-"--",
+"do",
+"&=",
+"check_address",
+"_local_id",
"interlocked_exchange_add",
+"spinlock_lock",
+"|",
+"if",
+"lbr_dump",
+"physical_to_virtual",
+"for",
+"disassemble_len",
+"_script_variable_type",
+"hi_pa",
+"_pseudo_register",
+"_wstring",
+">>",
+"return",
+"continue",
+"event_trace_instrumentation_step_in",
+"(",
+"lbr_flush",
+"event_disable",
+"db",
+"memcpy_pa",
+"dq",
+"spinlock_lock_custom_wait",
+",",
+"wcsncmp",
+"strlen",
+"_hex",
+"event_enable",
+"db_pa",
+"_string",
+"--",
+"hi",
+"neg",
+"interlocked_decrement",
+"interlocked_compare_exchange",
+"eb_pa",
+"&",
+"%=",
"_function_id",
+"eq",
+"break",
+"while",
+"eb",
+"ed_pa",
"virtual_to_physical",
+"}",
+"low_pa",
+"_global_id",
+"disassemble_len64",
+"#include",
+"printf",
+"dw",
+"event_trace_step",
+"event_trace_step_in",
+"else",
+"dd",
+"elsif",
+"not",
+"interlocked_increment",
+"microsleep",
+"_binary",
+"eq_pa",
+"disassemble_len32",
+"event_inject",
+"_function_parameter_id",
+"test_statement",
+"spinlock_unlock",
+"event_trace_step_out",
+"=",
+"*=",
+">>=",
+"~",
+"^=",
+"-=",
+"<<=",
+"strcmp",
+"_register",
+"wcscmp",
+"pause",
+"%",
+"lbr_save",
+"event_inject_error_code",
+"/",
+"strncmp",
+"memcmp",
+"formats",
+"]",
+"rdtscp",
+"event_sc",
+")",
+"_octal",
+"ed",
+"-",
+"*",
+"[",
+"++",
+";",
+"dd_pa",
+"event_clear",
+"/=",
+"print",
+"^",
+"event_trace_instrumentation_step",
"poi_pa",
-"disassemble_len32"
+"dq_pa",
+"low",
+"+=",
+"wcslen",
+"<<",
+"rdtsc",
+"poi",
+"memcpy",
+"$",
+"dw_pa"
};
const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]=
{
- {2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,47 ,2147483648 ,46 ,46 ,46 ,46 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,147 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,273 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,272 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,210 ,2147483648 ,2147483648 ,234 ,2147483648 ,255 ,244 ,209 ,206 ,2147483648 ,2147483648 ,244 ,205 ,2147483648 ,2147483648 ,235 ,2147483648 ,241 ,229 ,226 ,2147483648 ,259 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,198 ,2147483648 ,243 ,2147483648 ,223 ,239 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,255 ,201 ,215 ,232 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,240 ,2147483648 ,2147483648 ,224 ,203 ,212 ,227 ,211 ,2147483648 ,2147483648 ,244 ,2147483648 ,242 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,207 ,218 ,233 ,2147483648 ,2147483648 ,2147483648 ,237 ,228 ,2147483648 ,2147483648 ,225 ,2147483648 ,261 ,260 ,2147483648 ,2147483648 ,199 ,214 ,2147483648 ,2147483648 ,257 ,202 ,221 ,200 ,2147483648 ,2147483648 ,256 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,217 ,238 ,216 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,204 ,2147483648 ,2147483648 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,231 ,245 ,219 ,220 ,213 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,275 ,2147483648 ,274 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,274 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,7 ,9 ,9 ,9 ,9 ,7 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,3 ,13 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,7 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,7 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,4 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,7 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,6 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,11 ,9 ,10 ,2147483648 ,2147483648 ,9 ,8 ,9 ,9 ,9 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,197 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,184 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,21 ,23 ,23 ,23 ,23 ,21 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,26 ,2147483648 ,27 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,21 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,21 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,18 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,21 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,20 ,2147483648 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,25 ,23 ,24 ,2147483648 ,2147483648 ,23 ,22 ,23 ,23 ,23 },
- {0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,2 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,1 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2 ,2147483648 ,0 ,0 ,0 ,0 ,0 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,68 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,2147483648 ,2147483648 ,66 ,64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,179 },
- {2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,185 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,182 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,181 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,15 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,16 ,2147483648 ,14 ,14 ,14 ,14 ,14 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,193 },
- {2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,28 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 },
- {75 ,105 ,74 ,139 ,129 ,79 ,2147483648 ,2147483648 ,104 ,101 ,137 ,82 ,2147483648 ,100 ,2147483648 ,2147483648 ,130 ,2147483648 ,136 ,124 ,121 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,91 ,2147483648 ,2147483648 ,2147483648 ,118 ,134 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,110 ,127 ,2147483648 ,2147483648 ,2147483648 ,86 ,138 ,80 ,125 ,85 ,135 ,84 ,78 ,119 ,98 ,107 ,122 ,106 ,2147483648 ,77 ,2147483648 ,95 ,140 ,117 ,2147483648 ,2147483648 ,89 ,2147483648 ,2147483648 ,102 ,113 ,128 ,2147483648 ,2147483648 ,81 ,132 ,123 ,87 ,2147483648 ,120 ,96 ,2147483648 ,2147483648 ,2147483648 ,76 ,92 ,109 ,2147483648 ,2147483648 ,2147483648 ,97 ,116 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,90 ,112 ,133 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,73 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,114 ,115 ,108 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,189 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,165 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,163 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,166 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,176 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,177 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,188 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,144 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 },
- {2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,268 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,269 },
- {2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,42 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,148 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 },
+ {2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,163 ,167 ,2147483648 ,169 ,162 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,171 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,251 ,251 ,250 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,28 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {43 ,2147483648 ,2147483648 ,42 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 },
+ {2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,5 ,2147483648 ,9 ,7 ,9 ,9 ,2147483648 ,3 ,9 ,9 ,6 ,9 ,12 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,8 ,9 ,10 ,4 ,9 ,9 ,9 ,2147483648 ,9 ,7 ,9 ,13 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,7 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,7 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,7 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 },
+ {2147483648 ,2147483648 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 },
+ {2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,145 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,126 ,113 ,2147483648 ,2147483648 ,107 ,2147483648 ,127 ,79 ,2147483648 ,2147483648 ,95 ,114 ,2147483648 ,108 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,86 ,76 ,99 ,140 ,102 ,96 ,2147483648 ,141 ,132 ,2147483648 ,75 ,119 ,2147483648 ,2147483648 ,104 ,103 ,112 ,131 ,128 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,124 ,129 ,115 ,2147483648 ,118 ,2147483648 ,110 ,2147483648 ,83 ,101 ,87 ,88 ,2147483648 ,100 ,2147483648 ,106 ,111 ,82 ,2147483648 ,130 ,109 ,97 ,2147483648 ,78 ,80 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,137 ,84 ,2147483648 ,94 ,138 ,2147483648 ,135 ,134 ,74 ,2147483648 ,93 ,81 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,77 ,2147483648 ,73 ,2147483648 ,90 ,116 ,122 ,105 ,2147483648 ,136 ,2147483648 ,92 ,98 ,139 ,2147483648 ,121 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,248 ,248 ,247 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,56 ,2147483648 ,56 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,15 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,16 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {273 ,2147483648 ,2147483648 ,2147483648 ,273 ,273 ,273 ,2147483648 ,2147483648 ,273 ,273 ,273 ,2147483648 ,2147483648 ,2147483648 ,273 ,273 ,2147483648 ,273 ,2147483648 ,273 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,273 ,2147483648 ,273 ,2147483648 ,2147483648 ,273 ,273 ,273 ,2147483648 ,273 ,274 ,2147483648 ,273 ,273 ,273 ,273 ,273 ,273 ,2147483648 ,273 ,273 ,2147483648 ,2147483648 ,273 ,273 ,273 ,2147483648 ,273 ,273 ,273 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,273 ,273 ,2147483648 ,273 ,273 ,273 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,273 ,273 ,273 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,273 ,273 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,273 ,273 ,273 ,273 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,273 ,273 ,2147483648 ,273 ,2147483648 ,273 ,273 ,2147483648 ,2147483648 ,273 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {256 ,2147483648 ,2147483648 ,2147483648 ,259 ,231 ,218 ,2147483648 ,2147483648 ,212 ,245 ,232 ,2147483648 ,2147483648 ,2147483648 ,202 ,219 ,2147483648 ,213 ,2147483648 ,222 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,204 ,2147483648 ,207 ,2147483648 ,2147483648 ,243 ,237 ,256 ,2147483648 ,224 ,2147483648 ,2147483648 ,209 ,208 ,217 ,236 ,233 ,262 ,2147483648 ,246 ,230 ,2147483648 ,2147483648 ,229 ,234 ,220 ,2147483648 ,223 ,245 ,215 ,2147483648 ,2147483648 ,206 ,2147483648 ,2147483648 ,2147483648 ,205 ,2147483648 ,211 ,216 ,2147483648 ,256 ,235 ,214 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,238 ,245 ,242 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,240 ,239 ,2147483648 ,2147483648 ,200 ,2147483648 ,2147483648 ,256 ,228 ,258 ,261 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 ,227 ,210 ,2147483648 ,241 ,2147483648 ,199 ,203 ,2147483648 ,2147483648 ,226 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,198 ,197 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {177 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,177 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,177 },
+ {186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {194 ,2147483648 ,2147483648 ,2147483648 ,194 ,194 ,194 ,2147483648 ,2147483648 ,194 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,194 ,2147483648 ,194 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,194 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,194 ,194 ,194 ,194 ,194 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,194 ,194 ,194 ,2147483648 ,194 ,194 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,194 ,2147483648 ,194 ,194 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,194 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,194 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,194 ,194 ,2147483648 ,194 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,194 },
+ {2147483648 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,23 ,19 ,2147483648 ,23 ,21 ,23 ,23 ,2147483648 ,17 ,23 ,23 ,20 ,23 ,26 ,23 ,2147483648 ,2147483648 ,2147483648 ,27 ,25 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,22 ,23 ,24 ,18 ,23 ,23 ,23 ,2147483648 ,23 ,21 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,21 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,21 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,21 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,2147483648 ,147 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 },
+ {275 ,2147483648 ,2147483648 ,2147483648 ,275 ,275 ,275 ,2147483648 ,2147483648 ,275 ,275 ,275 ,2147483648 ,2147483648 ,2147483648 ,275 ,275 ,2147483648 ,275 ,2147483648 ,275 ,275 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,275 ,2147483648 ,275 ,2147483648 ,2147483648 ,275 ,275 ,275 ,2147483648 ,275 ,2147483648 ,2147483648 ,275 ,275 ,275 ,275 ,275 ,275 ,2147483648 ,275 ,275 ,2147483648 ,2147483648 ,275 ,275 ,275 ,2147483648 ,275 ,275 ,275 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,275 ,275 ,2147483648 ,275 ,275 ,275 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,275 ,275 ,275 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,275 ,275 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,275 ,275 ,275 ,275 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,275 ,275 ,2147483648 ,275 ,2147483648 ,275 ,275 ,2147483648 ,2147483648 ,275 },
+ {2147483648 ,72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,65 ,69 ,2147483648 ,71 ,64 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 },
+ {2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,59 ,2147483648 ,59 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,47 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 },
+ {270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,269 ,270 ,270 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,270 },
+ {2147483648 ,2147483648 ,0 ,1 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2 ,0 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
};
const char* KeywordList[]= {
"print",
@@ -1109,6 +1113,7 @@ const char* KeywordList[]= {
"printf",
"pause",
"flush",
+"lbr_flush",
"event_trace_step",
"event_trace_step_in",
"event_trace_step_out",
@@ -1328,6 +1333,7 @@ const char* TwoOpFunc4[] = {
const char* ZeroOpFunc1[] = {
"@PAUSE",
"@FLUSH",
+"@LBR_FLUSH",
"@EVENT_TRACE_STEP",
"@EVENT_TRACE_STEP_IN",
"@EVENT_TRACE_STEP_OUT",
@@ -1392,6 +1398,7 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@PRINTF", FUNC_PRINTF},
{"@PAUSE", FUNC_PAUSE},
{"@FLUSH", FUNC_FLUSH},
+{"@LBR_FLUSH", FUNC_LBR_FLUSH},
{"@EVENT_TRACE_STEP", FUNC_EVENT_TRACE_STEP},
{"@EVENT_TRACE_STEP_IN", FUNC_EVENT_TRACE_STEP_IN},
{"@EVENT_TRACE_STEP_OUT", FUNC_EVENT_TRACE_STEP_OUT},
@@ -1999,119 +2006,119 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
};
const char* LalrNoneTerminalMap[NONETERMINAL_COUNT]=
{
+"B3",
+"BE",
+"E10",
+"B2",
+"EXP",
+"ARRAY2",
+"B1",
+"STRING",
+"ARRAY3",
"CMP",
"StringNumber",
"E12",
-"B2",
-"B1",
-"WstringNumber",
-"E13",
-"B4",
"VA3",
-"E10",
-"ARRAY2",
-"S",
-"ARRAY4",
-"E3",
-"WSTRING",
-"B3",
-"EXP",
-"E5",
-"ARRAY3",
-"B5",
-"E4",
"B6",
+"E3",
+"E13",
+"WSTRING",
+"E5",
+"ARRAY1",
+"ARRAY4",
+"B5",
+"B4",
+"E4",
+"WstringNumber",
"VA2",
-"STRING",
-"BE",
-"ARRAY1"
+"S"
};
const char* LalrTerminalMap[TERMINAL_COUNT]=
{
-"not",
-"eq_pa",
-"_binary",
-"_local_id",
-"!=",
-"low",
-"dq",
-"_register",
-"dw",
-"]",
-">>",
-"interlocked_compare_exchange",
-"wcscmp",
-"eq",
-"dq_pa",
-"~",
-"_hex",
-"==",
-"_string",
-"(",
-")",
-"db_pa",
-"strncmp",
-"strlen",
-"/",
-"_octal",
"_decimal",
-"lbr_dump",
-"interlocked_increment",
-"eb_pa",
-"_global_id",
-"<<",
-"interlocked_exchange",
-"wcslen",
-">=",
-"<=",
-"dd_pa",
-"db",
-"disassemble_len",
-"ed",
-"check_address",
-",",
-"_function_parameter_id",
-"wcsncmp",
-"low_pa",
-"$",
-"neg",
-"physical_to_virtual",
-"ed_pa",
-"^",
-"strcmp",
-"eb",
-"%",
-"dw_pa",
-"&",
-"<",
-"*",
-"disassemble_len64",
-"-",
-"poi",
-"hi_pa",
-"lbr_save",
-"[",
-"_pseudo_register",
-"||",
"+",
-">",
-"_wstring",
-"&&",
+"interlocked_exchange",
"reference",
-"memcmp",
-"interlocked_decrement",
-"|",
-"dd",
-"hi",
+"check_address",
+"_local_id",
"interlocked_exchange_add",
+"|",
+"lbr_dump",
+"physical_to_virtual",
+"disassemble_len",
+"hi_pa",
+"_pseudo_register",
+"_wstring",
+">>",
+"(",
+">=",
+"db",
+"==",
+"dq",
+",",
+"wcsncmp",
+"strlen",
+"_hex",
+"db_pa",
+"_string",
+"!=",
+"hi",
+"neg",
+"interlocked_decrement",
+"interlocked_compare_exchange",
+"eb_pa",
+"&",
+"eq",
"_function_id",
+"eb",
+"ed_pa",
"virtual_to_physical",
+"low_pa",
+"_global_id",
+"disassemble_len64",
+"dw",
+"dd",
+"not",
+"interlocked_increment",
+"_binary",
+"eq_pa",
+"disassemble_len32",
+"_function_parameter_id",
+"~",
+"strcmp",
+"_register",
+"wcscmp",
+"%",
+">",
+"lbr_save",
+"/",
+"strncmp",
+"memcmp",
+"]",
+")",
+"||",
+"_octal",
+"<=",
+"ed",
+"-",
+"*",
+"[",
+"dd_pa",
+"&&",
+"^",
"poi_pa",
-"disassemble_len32"
+"dq_pa",
+"low",
+"wcslen",
+"<",
+"<<",
+"poi",
+"$",
+"dw_pa"
};
const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{
- {9 ,2147483648 ,15 ,4 ,3 ,2147483648 ,16 ,6 ,2147483648 ,14 ,18 ,1 ,2147483648 ,11 ,2147483648 ,5 ,10 ,13 ,2147483648 ,7 ,12 ,8 ,2147483648 ,2147483648 ,2 ,17 },
+ {5 ,2 ,14 ,4 ,10 ,18 ,3 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,8 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,7 ,6 ,12 ,2147483648 ,2147483648 ,1 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2129,10 +2136,11 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2147,32 +2155,32 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {9 ,2147483648 ,15 ,4 ,3 ,2147483648 ,16 ,6 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,5 ,10 ,13 ,2147483648 ,7 ,12 ,8 ,2147483648 ,2147483648 ,126 ,17 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {5 ,134 ,14 ,4 ,10 ,18 ,3 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,8 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,7 ,6 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2182,83 +2190,82 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {9 ,2147483648 ,15 ,148 ,2147483648 ,2147483648 ,16 ,6 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,5 ,10 ,13 ,2147483648 ,7 ,12 ,8 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {9 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,6 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,149 ,10 ,13 ,2147483648 ,7 ,12 ,8 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {9 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,150 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,10 ,13 ,2147483648 ,7 ,12 ,8 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {9 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,10 ,13 ,2147483648 ,151 ,12 ,8 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {9 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,10 ,13 ,2147483648 ,2147483648 ,12 ,152 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,153 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,154 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,155 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,156 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,157 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,158 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,163 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,164 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,165 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,166 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,167 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,170 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,173 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,171 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
- {2147483648 ,175 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,171 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,176 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,179 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,178 ,2147483648 ,177 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,181 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,171 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,182 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,183 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,184 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,185 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,187 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,186 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,188 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,189 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,190 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,192 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,178 ,2147483648 ,191 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,193 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,194 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {5 ,2147483648 ,14 ,148 ,10 ,18 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,8 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,7 ,6 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {149 ,2147483648 ,14 ,2147483648 ,10 ,18 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,8 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,7 ,6 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,10 ,18 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,8 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,7 ,150 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,10 ,18 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,8 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,151 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,10 ,18 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,152 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,153 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,154 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,155 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,156 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,157 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,158 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,161 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,162 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,166 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,167 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,170 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,171 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,172 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,173 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,195 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,196 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,197 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,174 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,175 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,176 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,177 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,178 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,180 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,182 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,183 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,184 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,185 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,198 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,200 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,178 ,2147483648 ,199 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,201 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,202 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,203 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,204 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,186 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,187 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,188 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,206 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,207 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,189 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,190 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,178 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,191 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,192 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,193 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,194 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,195 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,196 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,198 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,199 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,208 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,209 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,200 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,201 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,202 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,203 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,210 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,211 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,212 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,213 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,214 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,215 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,216 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,217 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,218 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,219 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,204 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,205 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,206 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,207 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,220 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,221 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,222 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,223 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,209 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,195 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,210 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,211 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,212 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,178 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,213 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,214 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,195 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,215 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,216 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,217 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,218 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,219 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,220 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,221 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,222 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,223 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2277,9 +2284,9 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2336,57 +2343,57 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,275 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,275 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,276 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,171 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
- {2147483648 ,277 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,171 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,278 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,279 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,178 ,2147483648 ,199 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,280 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,171 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,172 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,281 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,282 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,283 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,276 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,277 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,178 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,278 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,284 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,285 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,178 ,2147483648 ,199 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,286 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,178 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,279 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,280 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,287 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,288 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,281 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,289 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,282 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,214 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,195 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,283 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,284 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,290 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,178 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,285 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,214 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,195 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,286 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,287 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,288 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,289 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,290 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2403,19 +2410,19 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,307 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,307 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,308 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,308 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,309 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,309 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,14 ,2147483648 ,310 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,14 ,18 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,310 ,13 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2429,321 +2436,321 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
};
const int LalrActionTable[LALR_STATE_COUNT][LALR_TERMINAL_COUNT]=
{
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,84 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,90 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,91 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,95 ,2147483648 ,-27 ,-27 ,94 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,2147483648 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,2147483648 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,2147483648 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,2147483648 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,2147483648 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,-97 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,180 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,180 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,180 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,205 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,91 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,91 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,95 ,2147483648 ,-25 ,-25 ,94 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,95 ,2147483648 ,-26 ,-26 ,94 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,-13 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,2147483648 ,-13 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,90 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,89 ,2147483648 ,-21 ,2147483648 },
+ {2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 },
+ {2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,-27 ,2147483648 ,93 ,2147483648 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,94 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 },
+ {2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 },
+ {2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,2147483648 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,2147483648 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,2147483648 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,-108 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 },
+ {2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 },
+ {23 ,2147483648 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,2147483648 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,2147483648 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,2147483648 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,2147483648 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,2147483648 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,2147483648 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,2147483648 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,2147483648 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,2147483648 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,2147483648 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,2147483648 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,-97 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,-111 ,98 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,197 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,197 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,197 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 },
+ {2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 },
+ {2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 },
+ {2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,-25 ,2147483648 ,93 ,2147483648 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,94 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 },
+ {2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,-26 ,2147483648 ,93 ,2147483648 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,94 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 },
+ {2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 },
+ {2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 },
+ {2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,-111 ,98 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 },
+ {2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,180 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,174 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,180 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 },
+ {2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 },
+ {2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 },
+ {2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 },
+ {2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 },
+ {2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 },
+ {2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 },
+ {2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 },
+ {2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 },
+ {2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 },
+ {2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 },
+ {2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 },
+ {2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 },
+ {2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 },
+ {2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 },
+ {2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 },
+ {2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 },
+ {2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 },
+ {2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 },
+ {2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 },
+ {2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 },
+ {2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 },
+ {2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 },
+ {2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,197 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,197 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 },
+ {2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,299 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,300 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,301 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,299 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,300 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,301 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,302 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,30 ,76 ,28 ,2147483648 ,72 ,69 ,24 ,37 ,2147483648 ,2147483648 ,56 ,23 ,61 ,47 ,71 ,68 ,2147483648 ,2147483648 ,49 ,2147483648 ,50 ,25 ,31 ,2147483648 ,55 ,19 ,73 ,33 ,27 ,66 ,2147483648 ,45 ,35 ,2147483648 ,2147483648 ,43 ,39 ,75 ,29 ,67 ,2147483648 ,62 ,44 ,34 ,2147483648 ,58 ,65 ,36 ,2147483648 ,21 ,48 ,2147483648 ,46 ,38 ,2147483648 ,42 ,63 ,57 ,77 ,26 ,40 ,2147483648 ,51 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,52 ,20 ,41 ,2147483648 ,22 ,32 ,70 ,74 ,64 ,54 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,311 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,312 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,313 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,314 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 },
+ {2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 },
+ {2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 },
+ {2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 },
+ {2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 },
+ {2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
+ {2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 },
+ {2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 },
+ {2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 },
+ {2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,311 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,312 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,313 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,314 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 },
+ {2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 },
+ {2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 },
+ {2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 }
};
const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{
diff --git a/hyperdbg/script-engine/header/parse-table.h b/hyperdbg/script-engine/header/parse-table.h
index 66a2ecfe..9e7024b8 100644
--- a/hyperdbg/script-engine/header/parse-table.h
+++ b/hyperdbg/script-engine/header/parse-table.h
@@ -1,19 +1,19 @@
#pragma once
#ifndef PARSE_TABLE_H
#define PARSE_TABLE_H
-#define RULES_COUNT 276
-#define TERMINAL_COUNT 124
+#define RULES_COUNT 277
+#define TERMINAL_COUNT 125
#define NONETERMINAL_COUNT 63
#define START_VARIABLE "S"
#define MAX_RHS_LEN 15
-#define KEYWORD_LIST_LENGTH 113
+#define KEYWORD_LIST_LENGTH 114
#define OPERATORS_ONE_OPERAND_LIST_LENGTH 3
#define OPERATORS_TWO_OPERAND_LIST_LENGTH 16
#define REGISTER_MAP_LIST_LENGTH 120
#define PSEUDO_REGISTER_MAP_LIST_LENGTH 16
#define SCRIPT_VARIABLE_TYPE_LIST_LENGTH 10
#define ASSIGNMENT_OPERATOR_LIST_LENGTH 10
-#define SEMANTIC_RULES_MAP_LIST_LENGTH 158
+#define SEMANTIC_RULES_MAP_LIST_LENGTH 159
#define THREEOPFUNC1_LENGTH 1
#define THREEOPFUNC2_LENGTH 3
#define TWOOPFUNC1_LENGTH 8
@@ -26,7 +26,7 @@
#define THREEOPFUNC4_LENGTH 1
#define ONEOPFUNC4_LENGTH 1
#define TWOOPFUNC4_LENGTH 1
-#define ZEROOPFUNC1_LENGTH 7
+#define ZEROOPFUNC1_LENGTH 8
#define ZEROOPFUNC2_LENGTH 4
#define VARARGFUNC1_LENGTH 1
extern const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT];
diff --git a/hyperdbg/script-engine/python/Grammar.txt b/hyperdbg/script-engine/python/Grammar.txt
index f9c47fbd..6658f4a8 100644
--- a/hyperdbg/script-engine/python/Grammar.txt
+++ b/hyperdbg/script-engine/python/Grammar.txt
@@ -35,7 +35,7 @@
# TwoOpFunc4 the two inputs are numbers or wstrings and returns a number.
.TwoOpFunc4->wcscmp
-.ZeroOpFunc1->pause flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in
+.ZeroOpFunc1->pause flush lbr_flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in
# ZeroOpFunc2 no input and returns a number
.ZeroOpFunc2->rdtsc rdtscp lbr_save lbr_dump
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index 431be3df..98af433f 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -2022,7 +2022,7 @@ BOOLEAN
ScriptEngineFunctionLbrSave()
{
#ifdef SCRIPT_ENGINE_USER_MODE
- ShowMessages("err, it's not possible to call lbr_start function in the user-mode\n");
+ ShowMessages("err, it's not possible to call lbr_save function in the user-mode\n");
return FALSE;
#endif // SCRIPT_ENGINE_USER_MODE
@@ -2037,7 +2037,7 @@ ScriptEngineFunctionLbrSave()
}
/**
- * @brief Implementation of lbr_stop function
+ * @brief Implementation of lbr_dump function
*
* @return BOOLEAN
*/
@@ -2045,7 +2045,7 @@ BOOLEAN
ScriptEngineFunctionLbrDump()
{
#ifdef SCRIPT_ENGINE_USER_MODE
- ShowMessages("err, it's not possible to call lbr_stop function in the user-mode\n");
+ ShowMessages("err, it's not possible to call lbr_dump function in the user-mode\n");
return FALSE;
#endif // SCRIPT_ENGINE_USER_MODE
@@ -2058,3 +2058,25 @@ ScriptEngineFunctionLbrDump()
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
+
+/**
+ * @brief Implementation of lbr_flush function
+ *
+ * @return VOID
+ */
+VOID
+ScriptEngineFunctionLbrFlush()
+{
+#ifdef SCRIPT_ENGINE_USER_MODE
+ ShowMessages("err, it's not possible to call lbr_flush function in the user-mode\n");
+#endif // SCRIPT_ENGINE_USER_MODE
+
+#ifdef SCRIPT_ENGINE_KERNEL_MODE
+
+ //
+ // Depending if we are in VMX-root then a VMCALL is issued by default instead, otherwise the VMCALL is ignored
+ //
+ HyperTraceLbrFlush(NULL, VmFuncVmxGetCurrentExecutionMode());
+
+#endif // SCRIPT_ENGINE_KERNEL_MODE
+}
diff --git a/hyperdbg/script-eval/code/ScriptEngineEval.c b/hyperdbg/script-eval/code/ScriptEngineEval.c
index 77280968..95113ed2 100644
--- a/hyperdbg/script-eval/code/ScriptEngineEval.c
+++ b/hyperdbg/script-eval/code/ScriptEngineEval.c
@@ -758,6 +758,12 @@ ScriptEngineExecute(PGUEST_REGS GuestRegs,
SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
break;
+ case FUNC_LBR_FLUSH:
+
+ ScriptEngineFunctionLbrFlush();
+
+ break;
+
case FUNC_FLUSH:
ScriptEngineFunctionFlush();
diff --git a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
index b340c615..286c1dbd 100644
--- a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
+++ b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
@@ -263,6 +263,9 @@ ScriptEngineFunctionEventTraceInstrumentationStep();
VOID
ScriptEngineFunctionEventTraceStepIn();
+VOID
+ScriptEngineFunctionLbrFlush();
+
BOOLEAN
ScriptEngineFunctionLbrSave();
From 84f0fa0ed422d5b35a4101a3fa38d70bf4178b04 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 26 Apr 2026 12:37:08 +0200
Subject: [PATCH 139/323] check for the VMX state independently from function
arguments
---
.../hwdbg/script/script_definitions.scala | 2 +-
.../hyperkd/code/debugger/kernel-level/Kd.c | 4 +-
hyperdbg/hyperkd/code/driver/Ioctl.c | 4 +-
hyperdbg/hyperkd/code/driver/Loader.c | 7 +-
hyperdbg/hyperkd/header/driver/Loader.h | 2 +-
hyperdbg/hypertrace/code/api/LbrApi.c | 55 +++-------
hyperdbg/hypertrace/code/api/PtApi.c | 20 +---
hyperdbg/hypertrace/code/api/TraceApi.c | 15 ++-
.../hypertrace/code/broadcast/DpcRoutines.c | 4 +-
hyperdbg/hypertrace/code/lbr/Lbr.c | 103 ++++++++++++------
hyperdbg/hypertrace/header/api/LbrApi.h | 5 +-
.../header/globals/GlobalVariables.h | 2 +-
hyperdbg/hypertrace/header/lbr/Lbr.h | 6 +-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 20 ++--
hyperdbg/include/SDK/modules/HyperTrace.h | 7 ++
hyperdbg/script-eval/code/Functions.c | 6 +-
16 files changed, 135 insertions(+), 127 deletions(-)
diff --git a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
index 558ea50c..f76514d9 100644
--- a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
+++ b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
@@ -45,6 +45,6 @@ object ScriptConstantTypes {
object ScriptEvalFunc {
object ScriptOperators extends ChiselEnum {
- val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncLbr_save, sFuncLbr_dump, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
+ val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncLbr_flush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncLbr_save, sFuncLbr_dump, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
}
}
\ No newline at end of file
diff --git a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
index c1118da9..e20841c3 100644
--- a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
+++ b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
@@ -2910,7 +2910,7 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
//
// Perform the HyperTrace LBR operations (it's in vmx-root)
//
- HyperTraceLbrPerformOperation(HyperTraceLbrOperationPacket, TRUE);
+ HyperTraceLbrPerformOperation(HyperTraceLbrOperationPacket);
//
// Send the result of the HyperTrace LBR back to the debuggee
@@ -2929,7 +2929,7 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
//
// Perform the HyperTrace PT operations (it's in vmx-root)
//
- HyperTracePtPerformOperation(HyperTracePtOperationPacket, TRUE);
+ HyperTracePtPerformOperation(HyperTracePtOperationPacket);
//
// Send the result of the HyperTrace PT back to the debuggee
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index dbbb0d32..1bbb0e43 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -1287,7 +1287,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Perform the HyperTrace LBR operation
//
- HyperTraceLbrPerformOperation(HyperTraceLbrOperationRequest, TRUE);
+ HyperTraceLbrPerformOperation(HyperTraceLbrOperationRequest);
Irp->IoStatus.Information = SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS;
Status = STATUS_SUCCESS;
@@ -1330,7 +1330,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Perform the HyperTrace PT operation
//
- HyperTracePtPerformOperation(HyperTracePtOperationRequest, TRUE);
+ HyperTracePtPerformOperation(HyperTracePtOperationRequest);
Irp->IoStatus.Information = SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS;
Status = STATUS_SUCCESS;
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index bc11cc52..e622f3b8 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -13,12 +13,12 @@
/**
* @brief Initialize the hyper trace module
*
- * @param InitForHypervisorEnvironment Whether the initialization is being done for hypervisor environment or not
+ * @param RunningOnHypervisorEnvironment Whether the initialization is being done for hypervisor environment or not
*
* @return BOOLEAN
*/
BOOLEAN
-LoaderInitHyperTrace(BOOLEAN InitForHypervisorEnvironment)
+LoaderInitHyperTrace(BOOLEAN RunningOnHypervisorEnvironment)
{
HYPERTRACE_CALLBACKS HyperTraceCallbacks = {0};
@@ -38,6 +38,7 @@ LoaderInitHyperTrace(BOOLEAN InitForHypervisorEnvironment)
//
// Fill the callbacks for using hyperhv in hypertrace
//
+ HyperTraceCallbacks.VmFuncVmxGetCurrentExecutionMode = VmFuncVmxGetCurrentExecutionMode;
HyperTraceCallbacks.VmFuncGetDebugctl = VmFuncGetDebugctl;
HyperTraceCallbacks.VmFuncGetDebugctlVmcallOnTargetCore = VmFuncGetDebugctlVmcallOnTargetCore;
HyperTraceCallbacks.VmFuncSetDebugctl = VmFuncSetDebugctl;
@@ -63,7 +64,7 @@ LoaderInitHyperTrace(BOOLEAN InitForHypervisorEnvironment)
//
// Initialize hypertrace module
//
- if (HyperTraceInitCallback(&HyperTraceCallbacks, InitForHypervisorEnvironment))
+ if (HyperTraceInitCallback(&HyperTraceCallbacks, RunningOnHypervisorEnvironment))
{
LogDebugInfo("HyperDbg's hypertrace loaded successfully");
return TRUE;
diff --git a/hyperdbg/hyperkd/header/driver/Loader.h b/hyperdbg/hyperkd/header/driver/Loader.h
index ee1f9d64..30d215b0 100644
--- a/hyperdbg/hyperkd/header/driver/Loader.h
+++ b/hyperdbg/hyperkd/header/driver/Loader.h
@@ -20,7 +20,7 @@ BOOLEAN
LoaderInitVmmAndDebugger();
BOOLEAN
-LoaderInitHyperTrace(BOOLEAN InitForHypervisorEnvironment);
+LoaderInitHyperTrace(BOOLEAN RunningOnHypervisorEnvironment);
VOID
LoaderUninitializeLogTracer();
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 372f3d31..83728a66 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -14,15 +14,12 @@
/**
* @brief Example of performing LBR trace
*
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
- *
* @return BOOLEAN
*/
VOID
-HyperTraceLbrExamplePerformTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+HyperTraceLbrExamplePerformTrace()
{
- if (LbrStart(ApplyFromVmxRootMode, ApplyByVmcall))
+ if (LbrStart())
{
for (volatile int i = 0; i < 50; i++)
{
@@ -40,7 +37,7 @@ HyperTraceLbrExamplePerformTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVm
LogInfo("Dumping LBR Buffer...\n");
- LbrStop(ApplyFromVmxRootMode, ApplyByVmcall);
+ LbrStop();
LbrDump(); // This will print the collected LBR branches to the log
}
}
@@ -64,16 +61,12 @@ HyperTraceLbrQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId)
* @brief Enable LBR tracing for HyperTrace
*
* @param HyperTraceOperationRequest
- * @param ApplyFromVmxRootMode
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
{
- UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
-
//
// Check if LBR is already enabled or not
//
@@ -95,7 +88,7 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
//
// Check VMCS support for LBR if the initialization is being done for hypervisor environment
//
- if (g_InitForHypervisorEnvironment && !g_Callbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls())
+ if (g_RunningOnHypervisorEnvironment && !g_Callbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls())
{
HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_DEBUGCTL_NOT_SUPPORTED_ON_VMCS;
return FALSE;
@@ -123,16 +116,12 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
* @brief Disable LBR tracing for HyperTrace
*
* @param HyperTraceOperationRequest
- * @param ApplyFromVmxRootMode
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrDisable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceLbrDisable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
{
- UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
-
//
// Check if LBR is already disabled or not
//
@@ -171,16 +160,12 @@ HyperTraceLbrDisable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReque
* @brief Flush LBR tracing for HyperTrace
*
* @param HyperTraceOperationRequest
- * @param ApplyFromVmxRootMode
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
{
- UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
-
//
// Check if LBR is already disabled or not
//
@@ -214,16 +199,12 @@ HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest
* @brief Save LBR tracing for HyperTrace
*
* @param HyperTraceOperationRequest
- * @param ApplyFromVmxRootMode
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
{
- UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
-
//
// Check if LBR is already disabled or not
//
@@ -259,16 +240,12 @@ HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
* @brief Dump LBR tracing for HyperTrace
*
* @param HyperTraceOperationRequest
- * @param ApplyFromVmxRootMode
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
{
- UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
-
//
// Check if LBR is already disabled or not
//
@@ -304,13 +281,11 @@ HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
* @brief Perform actions related to HyperTrace LBR
*
* @param LbrOperationRequest
- * @param ApplyFromVmxRootMode
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationRequest)
{
BOOLEAN Status = TRUE;
@@ -332,7 +307,7 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
LogInfo("HyperTrace: Enabling LBR tracing...\n");
- HyperTraceLbrEnable(LbrOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceLbrEnable(LbrOperationRequest);
break;
@@ -340,7 +315,7 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
LogInfo("HyperTrace: Disabling LBR tracing...\n");
- HyperTraceLbrDisable(LbrOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceLbrDisable(LbrOperationRequest);
break;
@@ -348,7 +323,7 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
LogInfo("HyperTrace: Saving LBR tracing...\n");
- HyperTraceLbrSave(LbrOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceLbrSave(LbrOperationRequest);
break;
@@ -356,7 +331,7 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
LogInfo("HyperTrace: Showing LBR tracing...\n");
- HyperTraceLbrDump(LbrOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceLbrDump(LbrOperationRequest);
break;
@@ -364,7 +339,7 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
LogInfo("HyperTrace: Flushing LBR tracing...\n");
- HyperTraceLbrFlush(LbrOperationRequest, ApplyFromVmxRootMode);
+ HyperTraceLbrFlush(LbrOperationRequest);
break;
diff --git a/hyperdbg/hypertrace/code/api/PtApi.c b/hyperdbg/hypertrace/code/api/PtApi.c
index 1aa4f20e..3daf409e 100644
--- a/hyperdbg/hypertrace/code/api/PtApi.c
+++ b/hyperdbg/hypertrace/code/api/PtApi.c
@@ -24,16 +24,12 @@ HyperTracePtExample()
* @brief Enable PT tracing for HyperTrace
*
* @param PtOperationRequest
- * @param ApplyFromVmxRootMode
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTracePtEnable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTracePtEnable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest)
{
- UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
-
//
// Check if PT is already enabled or not
//
@@ -69,16 +65,12 @@ HyperTracePtEnable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest,
* @brief Disable PT tracing for HyperTrace
*
* @param PtOperationRequest
- * @param ApplyFromVmxRootMode
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTracePtDisable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTracePtDisable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest)
{
- UNREFERENCED_PARAMETER(ApplyFromVmxRootMode);
-
//
// Check if LBR is already disabled or not
//
@@ -112,13 +104,11 @@ HyperTracePtDisable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest,
* @brief Perform actions related to HyperTrace PT
*
* @param PtOperationRequest
- * @param ApplyFromVmxRootMode
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTracePtPerformOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest,
- BOOLEAN ApplyFromVmxRootMode)
+HyperTracePtPerformOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest)
{
BOOLEAN Status = TRUE;
@@ -140,7 +130,7 @@ HyperTracePtPerformOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationReques
LogInfo("HyperTrace: Enabling LBR tracing...\n");
- HyperTracePtEnable(PtOperationRequest, ApplyFromVmxRootMode);
+ HyperTracePtEnable(PtOperationRequest);
break;
@@ -148,7 +138,7 @@ HyperTracePtPerformOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationReques
LogInfo("HyperTrace: Disabling PT tracing...\n");
- HyperTracePtDisable(PtOperationRequest, ApplyFromVmxRootMode);
+ HyperTracePtDisable(PtOperationRequest);
break;
diff --git a/hyperdbg/hypertrace/code/api/TraceApi.c b/hyperdbg/hypertrace/code/api/TraceApi.c
index a2daf735..950a5532 100644
--- a/hyperdbg/hypertrace/code/api/TraceApi.c
+++ b/hyperdbg/hypertrace/code/api/TraceApi.c
@@ -15,14 +15,14 @@
* @details This only for callback initialization, not for LBR, PT, etc. initialization
*
* @param HypertraceCallbacks
- * @param InitForHypervisorEnvironment Whether the initialization is being done for hypervisor environment or not,
+ * @param RunningOnHypervisorEnvironment Whether the initialization is being done for hypervisor environment or not,
* it can be used to skip some of the initialization steps if it is not for hypervisor environment and behave differently based on that
*
* @return BOOLEAN
*/
BOOLEAN
HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
- BOOLEAN InitForHypervisorEnvironment)
+ BOOLEAN RunningOnHypervisorEnvironment)
{
UINT32 ProcessorsCount = 0;
@@ -58,7 +58,7 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
//
// Set the flag to indicate whether the initialization is being done for hypervisor environment or not
//
- g_InitForHypervisorEnvironment = InitForHypervisorEnvironment;
+ g_RunningOnHypervisorEnvironment = RunningOnHypervisorEnvironment;
//
// It is initialized, but LBR is disabled at this stage
@@ -91,7 +91,7 @@ HyperTraceUnInit()
//
if (g_LastBranchRecordEnabled)
{
- HyperTraceLbrDisable(NULL, FALSE);
+ HyperTraceLbrDisable(NULL);
}
//
@@ -108,9 +108,14 @@ HyperTraceUnInit()
//
if (g_ProcessorTraceEnabled)
{
- HyperTracePtDisable(NULL, FALSE);
+ HyperTracePtDisable(NULL);
}
+ //
+ // Reset the environment flag to default value
+ //
+ g_RunningOnHypervisorEnvironment = FALSE;
+
//
// Set callbacks to not initialized
//
diff --git a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
index 13625384..9a81ed86 100644
--- a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
@@ -30,7 +30,7 @@ DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
// Check if the initialization is being done for hypervisor environment or not
// If it is, then we need to perform some additional steps to enable LBR in VMX
//
- if (g_InitForHypervisorEnvironment)
+ if (g_RunningOnHypervisorEnvironment)
{
//
// Perform VMX-root mode specific operations to enable load and save
@@ -82,7 +82,7 @@ DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, P
// Check if the initialization is being done for hypervisor environment or not
// If it is, then we need to perform some additional steps to enable LBR in VMX
//
- if (g_InitForHypervisorEnvironment)
+ if (g_RunningOnHypervisorEnvironment)
{
//
// Perform VMX-root mode specific operations to disable load and save
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 4003aff6..c33d5f19 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -114,42 +114,54 @@ LbrCheck()
/**
* @brief Flush LBR MSRs by disabling LBR and clearing all LBR entries
*
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
- *
* @return VOID
*/
VOID
-LbrFlush(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+LbrFlush()
{
ULONG i;
ULONGLONG DbgCtlMsr;
+ BOOLEAN IsOnVmxRootMode;
//
// Disable LBR
//
LogInfo("Flush LBR on cpu core: %d\n", KeGetCurrentProcessorNumberEx(NULL));
- if (ApplyFromVmxRootMode)
+ if (g_RunningOnHypervisorEnvironment)
{
- if (ApplyByVmcall)
+ IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
+
+ if (IsOnVmxRootMode)
{
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
+ //
+ // It is on VMX-root mode, run it directly to get the IA32_DEBUGCTL MSR value in VMCS
+ //
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
}
else
{
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+ //
+ // It is not on VMX-root mode, so we need to perform a VMCALL to set the IA32_DEBUGCTL MSR value on the target core
+ //
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
}
DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
- if (ApplyByVmcall)
+ if (IsOnVmxRootMode)
{
- g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
+ //
+ // It is on VMX-root mode, run it directly to set the IA32_DEBUGCTL MSR value in VMCS
+ //
+ g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
}
else
{
- g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
+ //
+ // It is not on VMX-root mode, so we need to perform a VMCALL to set the IA32_DEBUGCTL MSR value on the target core
+ //
+ g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
}
}
else
@@ -175,14 +187,13 @@ LbrFlush(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
/**
* @brief Start collecting LBR branches
*
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
- *
* @return BOOLEAN
*/
BOOLEAN
-LbrStart(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+LbrStart()
{
+ BOOLEAN IsOnVmxRootMode;
+
if (LbrCapacity == 0)
{
LogInfo("LBR: Aborting, CPU model not supported.\n");
@@ -206,27 +217,41 @@ LbrStart(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
xwrmsr(MSR_LBR_NHM_TO + i, 0);
}
- if (ApplyFromVmxRootMode)
+ if (g_RunningOnHypervisorEnvironment)
{
- if (ApplyByVmcall)
+ IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
+
+ if (IsOnVmxRootMode)
{
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
+ //
+ // It is on VMX-root mode, run it directly to get the IA32_DEBUGCTL MSR value in VMCS
+ //
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
}
else
{
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+ //
+ // It is not on VMX-root mode, so we need to perform a VMCALL to get the IA32_DEBUGCTL MSR value on the target core
+ //
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
}
DbgCtlMsr |= IA32_DEBUGCTL_LBR_FLAG; // Bit 0 = 1
DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
- if (ApplyByVmcall)
+ if (IsOnVmxRootMode)
{
- g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
+ //
+ // It is on VMX-root mode, run it directly to set the IA32_DEBUGCTL MSR value in VMCS
+ //
+ g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
}
else
{
- g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
+ //
+ // It is not on VMX-root mode, so we need to perform a VMCALL to set the IA32_DEBUGCTL MSR value on the target core
+ //
+ g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
}
}
else
@@ -285,36 +310,48 @@ LbrSave()
/**
* @brief Stop collecting LBR branches
*
- * @param ApplyFromVmxRootMode
- * @param ApplyByVmcall
- *
* @return VOID
*/
VOID
-LbrStop(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall)
+LbrStop()
{
ULONGLONG DbgCtlMsr;
+ BOOLEAN IsOnVmxRootMode;
- if (ApplyFromVmxRootMode)
+ if (g_RunningOnHypervisorEnvironment)
{
- if (ApplyByVmcall)
+ IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
+
+ if (IsOnVmxRootMode)
{
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
+ //
+ // It is on VMX-root mode, run it directly to get the IA32_DEBUGCTL MSR value in VMCS
+ //
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
}
else
{
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+ //
+ // It is not on VMX-root mode, so we need to perform a VMCALL to get the IA32_DEBUGCTL MSR value on the target core
+ //
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
}
DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
- if (ApplyByVmcall)
+ if (IsOnVmxRootMode)
{
- g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
+ //
+ // It is on VMX-root mode, run it directly to set the IA32_DEBUGCTL MSR value in VMCS
+ //
+ g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
}
else
{
- g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
+ //
+ // It is not on VMX-root mode, so we need to perform a VMCALL to set the IA32_DEBUGCTL MSR value on the target core
+ //
+ g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
}
}
else
diff --git a/hyperdbg/hypertrace/header/api/LbrApi.h b/hyperdbg/hypertrace/header/api/LbrApi.h
index cd258392..7569fe2e 100644
--- a/hyperdbg/hypertrace/header/api/LbrApi.h
+++ b/hyperdbg/hypertrace/header/api/LbrApi.h
@@ -15,8 +15,7 @@
//////////////////////////////////////////////////
VOID
-HyperTraceLbrExamplePerformTrace(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+HyperTraceLbrExamplePerformTrace();
BOOLEAN
-HyperTraceLbrDisable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode);
+HyperTraceLbrDisable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
diff --git a/hyperdbg/hypertrace/header/globals/GlobalVariables.h b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
index edc82ef4..53a8f06f 100644
--- a/hyperdbg/hypertrace/header/globals/GlobalVariables.h
+++ b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
@@ -32,7 +32,7 @@ BOOLEAN g_HyperTraceCallbacksInitialized;
* @brief The flag indicating whether the initialization is being done for hypervisor environment or not
*
*/
-BOOLEAN g_InitForHypervisorEnvironment;
+BOOLEAN g_RunningOnHypervisorEnvironment;
/**
* @brief The flag indicating whether the hypertrace LBR tracing is initialized or not
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index 30180064..790b6837 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -86,13 +86,13 @@ BOOLEAN
LbrCheck();
BOOLEAN
-LbrStart(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+LbrStart();
VOID
-LbrStop(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+LbrStop();
VOID
-LbrFlush(BOOLEAN ApplyFromVmxRootMode, BOOLEAN ApplyByVmcall);
+LbrFlush();
VOID
LbrSave();
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index d3f77538..6c08d31c 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -24,7 +24,7 @@
// Initialize the hypertrace module with the provided callbacks
//
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks, BOOLEAN InitForHypervisorEnvironment);
+HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks, BOOLEAN RunningOnHypervisorEnvironment);
//
// Uninitialize the HyperTrace module
@@ -37,16 +37,13 @@ HyperTraceUnInit();
//////////////////////////////////////////////////
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode);
+HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode);
+HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
- BOOLEAN ApplyFromVmxRootMode);
+HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId);
@@ -55,20 +52,17 @@ HyperTraceLbrQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId);
// Perform operations related to HyperTrace LBR based on the request type and parameters
//
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationRequest,
- BOOLEAN ApplyFromVmxRootMode);
+HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationRequest);
//////////////////////////////////////////////////
// PT Functions //
//////////////////////////////////////////////////
BOOLEAN
-HyperTracePtDisable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest,
- BOOLEAN ApplyFromVmxRootMode);
+HyperTracePtDisable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
//
// Perform operations related to HyperTrace PT based on the request type and parameters
//
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTracePtPerformOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest,
- BOOLEAN ApplyFromVmxRootMode);
+HyperTracePtPerformOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
diff --git a/hyperdbg/include/SDK/modules/HyperTrace.h b/hyperdbg/include/SDK/modules/HyperTrace.h
index 04ef55c0..288088ec 100644
--- a/hyperdbg/include/SDK/modules/HyperTrace.h
+++ b/hyperdbg/include/SDK/modules/HyperTrace.h
@@ -100,6 +100,12 @@ typedef VOID (*VM_FUNC_SET_SAVE_DEBUG_CONTROLS)(UINT32 CoreId, BOOLEAN Set);
*/
typedef VOID (*VM_FUNC_SET_SAVE_DEBUG_CONTROLS_VMCALL_ON_TARGET_CORE)(BOOLEAN Set);
+/**
+ * @brief A function that checks whether the current execution mode is VMX-root mode or not
+ *
+ */
+typedef BOOLEAN (*VM_FUNC_VMX_GET_CURRENT_EXECUTION_MODE)();
+
/**
* @brief A function that checks the validity and safety of the target address
*
@@ -145,6 +151,7 @@ typedef struct _HYPERTRACE_CALLBACKS
//
// *** Hypervisor (Hyperhv) callbacks ***
//
+ VM_FUNC_VMX_GET_CURRENT_EXECUTION_MODE VmFuncVmxGetCurrentExecutionMode;
VM_FUNC_GET_DEBUGCTL VmFuncGetDebugctl;
VM_FUNC_GET_DEBUGCTL_VMCALL_ON_TARGET_CORE VmFuncGetDebugctlVmcallOnTargetCore;
VM_FUNC_SET_DEBUGCTL VmFuncSetDebugctl;
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index 98af433f..cd25fe9a 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -2031,7 +2031,7 @@ ScriptEngineFunctionLbrSave()
//
// Depending if we are in VMX-root then a VMCALL is issued by default instead, otherwise the VMCALL is ignored
//
- return HyperTraceLbrSave(NULL, VmFuncVmxGetCurrentExecutionMode());
+ return HyperTraceLbrSave(NULL);
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
@@ -2054,7 +2054,7 @@ ScriptEngineFunctionLbrDump()
//
// Depending if we are in VMX-root then a VMCALL is issued by default instead, otherwise the VMCALL is ignored
//
- return HyperTraceLbrDump(NULL, VmFuncVmxGetCurrentExecutionMode());
+ return HyperTraceLbrDump(NULL);
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
@@ -2076,7 +2076,7 @@ ScriptEngineFunctionLbrFlush()
//
// Depending if we are in VMX-root then a VMCALL is issued by default instead, otherwise the VMCALL is ignored
//
- HyperTraceLbrFlush(NULL, VmFuncVmxGetCurrentExecutionMode());
+ HyperTraceLbrFlush(NULL);
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
From 93ac084d4bb117c4270e838237bd0fbe7c833097 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 26 Apr 2026 21:02:38 +0200
Subject: [PATCH 140/323] show branch misprediction and cycle count
---
hyperdbg/hypertrace/code/lbr/Lbr.c | 17 ++++++----
hyperdbg/hypertrace/header/lbr/Lbr.h | 50 +++++++++++++++++++++++++---
2 files changed, 55 insertions(+), 12 deletions(-)
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index c33d5f19..7a8b53f1 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -304,6 +304,7 @@ LbrSave()
{
xrdmsr(MSR_LBR_NHM_FROM + i, &State->BranchEntry[i].From);
xrdmsr(MSR_LBR_NHM_TO + i, &State->BranchEntry[i].To);
+ xrdmsr(MSR_LASTBRANCH_INFO_0 + i, &State->LastBranchInfo[i].AsUInt);
}
}
@@ -389,18 +390,20 @@ LbrDump()
//
State = &g_LbrStateList[CurrentCore];
- LogInfo("LBR Chronological Trace\n");
+ LogInfo("LBR Chronological Trace");
for (ULONG i = 1; i <= LbrCapacity; i++)
{
CurrentIdx = (ULONG)(State->Tos + i) % (ULONG)LbrCapacity;
- // if (State->BranchEntry[CurrentIdx].From == 0)
- // continue;
+ if (State->BranchEntry[CurrentIdx].From == 0)
+ continue;
- LogInfo("[%2u] FROM: 0x%llx TO: 0x%llx\n",
- CurrentIdx,
- State->BranchEntry[CurrentIdx].From,
- State->BranchEntry[CurrentIdx].To);
+ Log("[%2u] Branch Mispredicted: %s, Cycle Count (Decimal): %03d - From: %016llx To: %016llx\n",
+ CurrentIdx,
+ State->LastBranchInfo[CurrentIdx].Mispred ? "true " : "false",
+ State->LastBranchInfo[CurrentIdx].CycleCount,
+ State->BranchEntry[CurrentIdx].From,
+ State->BranchEntry[CurrentIdx].To);
}
}
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index 790b6837..e5a66c5f 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -14,11 +14,12 @@
// Constants //
//////////////////////////////////////////////////
-#define MSR_LBR_SELECT 0x000001C8
-#define MSR_LBR_TOS 0x000001C9
-#define MSR_LBR_NHM_FROM 0x00000680
-#define MSR_LBR_NHM_TO 0x000006C0
-#define LBR_SELECT 0x00000000
+#define MSR_LBR_SELECT 0x000001C8
+#define MSR_LBR_TOS 0x000001C9
+#define MSR_LBR_NHM_FROM 0x00000680
+#define MSR_LBR_NHM_TO 0x000006C0
+#define MSR_LASTBRANCH_INFO_0 0x00000DC0
+#define LBR_SELECT 0x00000000
/**
* @brief Maximum LBR capacity that is supported by processors
@@ -41,6 +42,44 @@ typedef struct _LBR_BRANCH_ENTRY
} LBR_BRANCH_ENTRY, PLBR_BRANCH_ENTRY;
+/**
+ * MSR_LBR_INFO_x - Last Branch Record Info Register
+ *
+ */
+typedef union
+{
+ struct
+ {
+ /** Bits 15:0 - Elapsed core clocks since last update to the LBR stack (saturating) */
+ UINT64 CycleCount : 16;
+
+ /** Bits 60:16 - Reserved (R/W) */
+ UINT64 Reserved : 45;
+
+ /**
+ * Bit 61 - TSX Abort indicator.
+ * When set:
+ * LBR_FROM = EIP at the time of the TSX Abort
+ * LBR_TO = EIP of the start of HLE region OR EIP of the RTM Abort Handler
+ */
+ UINT64 TsxAbort : 1;
+
+ /** Bit 62 - When set, indicates the entry occurred in a TSX region */
+ UINT64 InTsx : 1;
+
+ /**
+ * Bit 63 - Branch misprediction flag.
+ * When set, the target of the branch was mispredicted and/or the
+ * direction (taken/non-taken) was mispredicted.
+ * When clear, the target branch was predicted.
+ */
+ UINT64 Mispred : 1;
+ };
+
+ UINT64 AsUInt;
+
+} MSR_LBR_INFO, *PMSR_LBR_INFO;
+
/**
* @brief The structure to hold the LBR stack for a single processor core, including the branch entries and the TOS index
*
@@ -48,6 +87,7 @@ typedef struct _LBR_BRANCH_ENTRY
typedef struct _LBR_STACK_ENTRY
{
LBR_BRANCH_ENTRY BranchEntry[MAXIMUM_LBR_CAPACITY];
+ MSR_LBR_INFO LastBranchInfo[MAXIMUM_LBR_CAPACITY];
UINT32 Tos;
} LBR_STACK_ENTRY, PLBR_STACK_ENTRY;
From f5c45c7ebb0afb3e095d9f41960b44caf88c14e9 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 27 Apr 2026 00:50:41 +0200
Subject: [PATCH 141/323] add filtering options to LBR
---
hyperdbg/hypertrace/code/api/LbrApi.c | 48 ++++++-
.../hypertrace/code/broadcast/Broadcast.c | 14 ++
.../hypertrace/code/broadcast/DpcRoutines.c | 39 ++++-
hyperdbg/hypertrace/code/lbr/Lbr.c | 28 +++-
.../hypertrace/header/broadcast/Broadcast.h | 3 +
.../hypertrace/header/broadcast/DpcRoutines.h | 3 +
hyperdbg/hypertrace/header/lbr/Lbr.h | 103 +++++++++++---
.../include/SDK/headers/RequestStructures.h | 2 +
.../commands/extension-commands/lbr.cpp | 134 +++++++++++++++++-
9 files changed, 345 insertions(+), 29 deletions(-)
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 83728a66..5218f3a6 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -19,7 +19,7 @@
VOID
HyperTraceLbrExamplePerformTrace()
{
- if (LbrStart())
+ if (LbrStart(LBR_SELECT))
{
for (volatile int i = 0; i < 50; i++)
{
@@ -277,6 +277,44 @@ HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
return TRUE;
}
+/**
+ * @brief Update LBR filter options for HyperTrace
+ *
+ * @param HyperTraceOperationRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceLbrUpdateFilterOptions(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
+{
+ //
+ // Check if LBR is already disabled or not
+ //
+ if (!g_LastBranchRecordEnabled)
+ {
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_DISABLED;
+ }
+ return FALSE;
+ }
+
+ //
+ // Update the LBR filter options based on the request
+ //
+ BroadcastFilterLbrOptionsOnAllCores((UINT64)HyperTraceOperationRequest->LbrFilterOptions);
+
+ //
+ // The operation was successful
+ //
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
+
+ return TRUE;
+}
+
/**
* @brief Perform actions related to HyperTrace LBR
*
@@ -343,6 +381,14 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
break;
+ case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FILTER:
+
+ LogInfo("HyperTrace: Updating LBR filter options...\n");
+
+ HyperTraceLbrUpdateFilterOptions(LbrOperationRequest);
+
+ break;
+
default:
Status = FALSE;
LbrOperationRequest->KernelStatus = DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE;
diff --git a/hyperdbg/hypertrace/code/broadcast/Broadcast.c b/hyperdbg/hypertrace/code/broadcast/Broadcast.c
index 76fb6088..12dc62cd 100644
--- a/hyperdbg/hypertrace/code/broadcast/Broadcast.c
+++ b/hyperdbg/hypertrace/code/broadcast/Broadcast.c
@@ -52,3 +52,17 @@ BroadcastFlushLbrOnAllCores()
//
KeGenericCallDpc(DpcRoutineFlushLbr, NULL);
}
+
+/**
+ * @brief Routines to filter LBR option on all cores
+ *
+ * @return VOID
+ */
+VOID
+BroadcastFilterLbrOptionsOnAllCores(UINT64 LbrFilterOptions)
+{
+ //
+ // Broadcast to all cores
+ //
+ KeGenericCallDpc(DpcRoutineFilterLbrOptions, (PVOID)(UINT_PTR)LbrFilterOptions);
+}
diff --git a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
index 9a81ed86..9a4b6f63 100644
--- a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
@@ -42,8 +42,9 @@ DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
//
// Enable LBR on all cores from VMX-root mode by VMCALL
+ // By default, all filter options are disabled, which means all branch types will be captured
//
- LbrStart(TRUE, TRUE);
+ LbrStart(LBR_SELECT);
//
// Wait for all DPCs to synchronize at this point
@@ -76,7 +77,7 @@ DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, P
//
// Disable LBR on all cores from VMX-root mode by VMCALL
//
- LbrStop(TRUE, TRUE);
+ LbrStop();
//
// Check if the initialization is being done for hypervisor environment or not
@@ -123,7 +124,39 @@ DpcRoutineFlushLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVO
//
// Flush LBR on all cores
//
- LbrFlush(TRUE, TRUE);
+ LbrFlush();
+
+ //
+ // Wait for all DPCs to synchronize at this point
+ //
+ KeSignalCallDpcSynchronize(SystemArgument2);
+
+ //
+ // Mark the DPC as being complete
+ //
+ KeSignalCallDpcDone(SystemArgument1);
+
+ return TRUE;
+}
+
+/**
+ * @brief Broadcast updating LBR filter options
+ *
+ * @param Dpc
+ * @param DeferredContext
+ * @param SystemArgument1
+ * @param SystemArgument2
+ * @return BOOLEAN
+ */
+BOOLEAN
+DpcRoutineFilterLbrOptions(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ UNREFERENCED_PARAMETER(Dpc);
+
+ //
+ // Flush LBR on all cores
+ //
+ LbrFilter((UINT64)DeferredContext);
//
// Wait for all DPCs to synchronize at this point
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 7a8b53f1..4f77ba0b 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -187,10 +187,12 @@ LbrFlush()
/**
* @brief Start collecting LBR branches
*
+ * @param FilterOptions A bitmask of filter options to apply to the LBR branches (e.g., filtering by branch type, privilege level, etc.)
+ *
* @return BOOLEAN
*/
BOOLEAN
-LbrStart()
+LbrStart(UINT64 FilterOptions)
{
BOOLEAN IsOnVmxRootMode;
@@ -205,7 +207,7 @@ LbrStart()
//
// Force the selection mask
//
- xwrmsr(MSR_LBR_SELECT, LBR_SELECT);
+ xwrmsr(MSR_LBR_SELECT, FilterOptions); // Default to capture all branch types; this can be modified to apply filters as needed
//
// Clear hardware state
@@ -368,6 +370,28 @@ LbrStop()
LbrSave();
}
+/**
+ * @brief Filter LBR branches based on the provided options
+ * @param FilterOptions A bitmask of filter options to apply to the LBR branches
+ *
+ * @return VOID
+ */
+VOID
+LbrFilter(UINT64 FilterOptions)
+{
+ LogInfo("Updating LBR filter options: 0x%llx\n", FilterOptions);
+
+ //
+ // First, we flush the LBR to clear out any existing entries that may not meet the new filter criteria
+ //
+ LbrFlush();
+
+ //
+ // Then we apply the new filter options and re-enable LBR with the updated filter settings
+ //
+ LbrStart(FilterOptions);
+}
+
/**
* @brief Dump collected LBR branches
*
diff --git a/hyperdbg/hypertrace/header/broadcast/Broadcast.h b/hyperdbg/hypertrace/header/broadcast/Broadcast.h
index b2e05a3d..f4a8615d 100644
--- a/hyperdbg/hypertrace/header/broadcast/Broadcast.h
+++ b/hyperdbg/hypertrace/header/broadcast/Broadcast.h
@@ -24,3 +24,6 @@ BroadcastDisableLbrOnAllCores();
VOID
BroadcastFlushLbrOnAllCores();
+
+VOID
+BroadcastFilterLbrOptionsOnAllCores(UINT64 LbrFilterOptions);
diff --git a/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h b/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
index a002192b..f4da097a 100644
--- a/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
+++ b/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
@@ -24,3 +24,6 @@ DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, P
BOOLEAN
DpcRoutineFlushLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+
+BOOLEAN
+DpcRoutineFilterLbrOptions(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index e5a66c5f..b774201e 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -21,6 +21,45 @@
#define MSR_LASTBRANCH_INFO_0 0x00000DC0
#define LBR_SELECT 0x00000000
+//
+// This MSR could be used as an alternative to MSR_LBR_SELECT and IA32_DEBUGCTL for enabling and configuring LBR
+// For using that in hypervisor Load Guest IA32_LBR_CTL Entry Control and Clear IA32_LBR_CTL Exit Control should
+// be configured, plus host could control it over Guest IA32_LBR_CTL on VMCS
+//
+#define IA32_LBR_CTL 0x000014CE
+
+/*
+ * Intel LBR_SELECT bits
+ *
+ * Hardware branch filter (not available on all CPUs)
+ */
+#define LBR_KERNEL_BIT 0 /* do not capture at ring0 */
+#define LBR_USER_BIT 1 /* do not capture at ring > 0 */
+#define LBR_JCC_BIT 2 /* do not capture conditional branches */
+#define LBR_REL_CALL_BIT 3 /* do not capture relative calls */
+#define LBR_IND_CALL_BIT 4 /* do not capture indirect calls */
+#define LBR_RETURN_BIT 5 /* do not capture near returns */
+#define LBR_IND_JMP_BIT 6 /* do not capture indirect jumps */
+#define LBR_REL_JMP_BIT 7 /* do not capture relative jumps */
+#define LBR_FAR_BIT 8 /* do not capture far branches */
+#define LBR_CALL_STACK_BIT 9 /* enable call stack: not available on all CPUs */
+
+/*
+ * We mask it out before writing it to
+ * the actual MSR. But it helps the constraint code to understand
+ * that this is a separate configuration.
+ */
+#define LBR_KERNEL (1 << LBR_KERNEL_BIT)
+#define LBR_USER (1 << LBR_USER_BIT)
+#define LBR_JCC (1 << LBR_JCC_BIT)
+#define LBR_REL_CALL (1 << LBR_REL_CALL_BIT)
+#define LBR_IND_CALL (1 << LBR_IND_CALL_BIT)
+#define LBR_RETURN (1 << LBR_RETURN_BIT)
+#define LBR_IND_JMP (1 << LBR_IND_JMP_BIT)
+#define LBR_REL_JMP (1 << LBR_REL_JMP_BIT)
+#define LBR_FAR (1 << LBR_FAR_BIT)
+#define LBR_CALL_STACK (1 << LBR_CALL_STACK_BIT)
+
/**
* @brief Maximum LBR capacity that is supported by processors
*
@@ -28,20 +67,9 @@
#define MAXIMUM_LBR_CAPACITY 0x20 // 32 entries, which is the maximum supported by modern Intel CPUs
//////////////////////////////////////////////////
-// Structures //
+// MSR Structures //
//////////////////////////////////////////////////
-/**
- * @brief The structure to hold a single LBR entry (from and to addresses)
- *
- */
-typedef struct _LBR_BRANCH_ENTRY
-{
- ULONGLONG From;
- ULONGLONG To;
-
-} LBR_BRANCH_ENTRY, PLBR_BRANCH_ENTRY;
-
/**
* MSR_LBR_INFO_x - Last Branch Record Info Register
*
@@ -80,6 +108,48 @@ typedef union
} MSR_LBR_INFO, *PMSR_LBR_INFO;
+/**
+ * @brief The structure to hold the IA32_LBR_CTL MSR, which is used to enable and configure the LBR feature
+ * @details MSR Address: 0x14CEH (Hex) / 5326 (Dec)
+ */
+typedef union _IA32_LBR_CTL_REGISTER
+{
+ ULONG64 AsUInt;
+
+ struct
+ {
+ ULONG64 LBREn : 1; // [0] When set, enables LBR recording
+ ULONG64 OS : 1; // [1] When set, allows LBR recording when CPL == 0
+ ULONG64 USR : 1; // [2] When set, allows LBR recording when CPL != 0
+ ULONG64 CallStack : 1; // [3] When set, records branches in call-stack mode (See Section 7.1.2.4)
+ ULONG64 Reserved0 : 12; // [15:4] Reserved (must be zero)
+ ULONG64 JCC : 1; // [16] When set, records taken conditional branches (See Section 7.1.2.3)
+ ULONG64 NearRelJmp : 1; // [17] When set, records near relative JMPs (See Section 7.1.2.3)
+ ULONG64 NearIndJmp : 1; // [18] When set, records near indirect JMPs (See Section 7.1.2.3)
+ ULONG64 NearRelCall : 1; // [19] When set, records near relative CALLs (See Section 7.1.2.3)
+ ULONG64 NearIndCall : 1; // [20] When set, records near indirect CALLs (See Section 7.1.2.3)
+ ULONG64 NearRet : 1; // [21] When set, records near RETs (See Section 7.1.2.3)
+ ULONG64 OtherBranch : 1; // [22] When set, records other branches (See Section 7.1.2.3)
+ ULONG64 Reserved1 : 41; // [63:23] Reserved (must be zero)
+ } Bits;
+
+} IA32_LBR_CTL_REGISTER, *PIA32_LBR_CTL_REGISTER;
+
+//////////////////////////////////////////////////
+// Structures //
+//////////////////////////////////////////////////
+
+/**
+ * @brief The structure to hold a single LBR entry (from and to addresses)
+ *
+ */
+typedef struct _LBR_BRANCH_ENTRY
+{
+ ULONGLONG From;
+ ULONGLONG To;
+
+} LBR_BRANCH_ENTRY, PLBR_BRANCH_ENTRY;
+
/**
* @brief The structure to hold the LBR stack for a single processor core, including the branch entries and the TOS index
*
@@ -126,7 +196,10 @@ BOOLEAN
LbrCheck();
BOOLEAN
-LbrStart();
+LbrStart(UINT64 FilterOptions);
+
+VOID
+LbrFilter(UINT64 FilterOptions);
VOID
LbrStop();
@@ -139,7 +212,3 @@ LbrSave();
VOID
LbrDump();
-
-extern ULONGLONG LbrCapacity;
-extern LIST_ENTRY LbrStateHead;
-extern KSPIN_LOCK LbrStateLock;
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 30a630bd..8db4ac97 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1275,6 +1275,7 @@ typedef enum _HYPERTRACE_LBR_OPERATION_REQUEST_TYPE
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE,
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP,
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FLUSH,
+ HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FILTER,
} HYPERTRACE_LBR_OPERATION_REQUEST_TYPE;
@@ -1285,6 +1286,7 @@ typedef enum _HYPERTRACE_LBR_OPERATION_REQUEST_TYPE
typedef struct _HYPERTRACE_LBR_OPERATION_PACKETS
{
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE LbrOperationType;
+ UINT32 LbrFilterOptions;
UINT32 KernelStatus;
} HYPERTRACE_LBR_OPERATION_PACKETS, *PHYPERTRACE_LBR_OPERATION_PACKETS;
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index 28df6ca7..61e92d99 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -16,6 +16,38 @@
//
extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
+/*
+ * Intel LBR_SELECT bits
+ *
+ * Hardware branch filter (not available on all CPUs)
+ */
+#define LBR_KERNEL_BIT 0 /* do not capture at ring0 */
+#define LBR_USER_BIT 1 /* do not capture at ring > 0 */
+#define LBR_JCC_BIT 2 /* do not capture conditional branches */
+#define LBR_REL_CALL_BIT 3 /* do not capture relative calls */
+#define LBR_IND_CALL_BIT 4 /* do not capture indirect calls */
+#define LBR_RETURN_BIT 5 /* do not capture near returns */
+#define LBR_IND_JMP_BIT 6 /* do not capture indirect jumps */
+#define LBR_REL_JMP_BIT 7 /* do not capture relative jumps */
+#define LBR_FAR_BIT 8 /* do not capture far branches */
+#define LBR_CALL_STACK_BIT 9 /* enable call stack: not available on all CPUs */
+
+/*
+ * We mask it out before writing it to
+ * the actual MSR. But it helps the constraint code to understand
+ * that this is a separate configuration.
+ */
+#define LBR_KERNEL (1 << LBR_KERNEL_BIT)
+#define LBR_USER (1 << LBR_USER_BIT)
+#define LBR_JCC (1 << LBR_JCC_BIT)
+#define LBR_REL_CALL (1 << LBR_REL_CALL_BIT)
+#define LBR_IND_CALL (1 << LBR_IND_CALL_BIT)
+#define LBR_RETURN (1 << LBR_RETURN_BIT)
+#define LBR_IND_JMP (1 << LBR_IND_JMP_BIT)
+#define LBR_REL_JMP (1 << LBR_REL_JMP_BIT)
+#define LBR_FAR (1 << LBR_FAR_BIT)
+#define LBR_CALL_STACK (1 << LBR_CALL_STACK_BIT)
+
/**
* @brief help of the !lbr command
*
@@ -27,6 +59,7 @@ CommandLbrHelp()
ShowMessages("!lbr : enables and disables Last Branch Record (LBR).\n");
ShowMessages("syntax : \t!lbr [Function (string)]\n");
+ ShowMessages("syntax : \t!lbr [filter FilterOptions (string)]\n");
ShowMessages("\n");
ShowMessages("\t\te.g : !lbr enable\n");
@@ -34,6 +67,25 @@ CommandLbrHelp()
ShowMessages("\t\te.g : !lbr save\n");
ShowMessages("\t\te.g : !lbr dump\n");
ShowMessages("\t\te.g : !lbr flush\n");
+
+ ShowMessages("\n");
+ ShowMessages("\t\te.g : !lbr filter\n");
+ ShowMessages("\t\te.g : !lbr filter kernel jcc ind_jmp rel_jmp far\n");
+ ShowMessages("\t\te.g : !lbr filter kernel jcc return ind_jmp rel_jmp far\n");
+ ShowMessages("\t\te.g : !lbr filter kernel jcc ind_jmp rel_jmp\n");
+ ShowMessages("\t\te.g : !lbr filter user rel_call ind_call return far\n");
+
+ ShowMessages("\nlist of filter options: \n");
+ ShowMessages("\t kernel: do not capture at ring0\n");
+ ShowMessages("\t user: do not capture at ring > 0\n");
+ ShowMessages("\t jcc: do not capture conditional branches\n");
+ ShowMessages("\t rel_call: do not capture relative calls\n");
+ ShowMessages("\t ind_call: do not capture indirect calls\n");
+ ShowMessages("\t return: do not capture near returns\n");
+ ShowMessages("\t ind_jmp: do not capture indirect jumps\n");
+ ShowMessages("\t rel_jmp: do not capture relative jumps\n");
+ ShowMessages("\t far: do not capture far branches\n");
+ ShowMessages("\t (no option): capture everything (default option)\n");
}
/**
@@ -125,7 +177,7 @@ CommandLbr(vector CommandTokens, string Command)
{
HYPERTRACE_LBR_OPERATION_PACKETS LbrRequest = {0};
- if (CommandTokens.size() != 2)
+ if (CommandTokens.size() == 1)
{
ShowMessages("incorrect use of the '%s'\n\n",
GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
@@ -134,26 +186,88 @@ CommandLbr(vector CommandTokens, string Command)
return;
}
- if (CompareLowerCaseStrings(CommandTokens.at(1), "enable"))
+ //
+ // Parse the LBR operation type
+ //
+ if (CompareLowerCaseStrings(CommandTokens.at(1), "enable") && CommandTokens.size() == 2)
{
LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE;
}
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "disable"))
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "disable") && CommandTokens.size() == 2)
{
LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE;
}
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "save"))
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "save") && CommandTokens.size() == 2)
{
LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE;
}
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "dump"))
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "dump") && CommandTokens.size() == 2)
{
LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP;
}
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "flush"))
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "flush") && CommandTokens.size() == 2)
{
LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FLUSH;
}
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "filter"))
+ {
+ LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FILTER;
+ LbrRequest.LbrFilterOptions = 0; // filter without any option means capture everything
+
+ //
+ // Parse filter options
+ //
+ for (size_t i = 2; i < CommandTokens.size(); i++)
+ {
+ if (CompareLowerCaseStrings(CommandTokens.at(i), "kernel"))
+ {
+ LbrRequest.LbrFilterOptions |= LBR_KERNEL;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "user"))
+ {
+ LbrRequest.LbrFilterOptions |= LBR_USER;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "jcc"))
+ {
+ LbrRequest.LbrFilterOptions |= LBR_JCC;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "rel_call"))
+ {
+ LbrRequest.LbrFilterOptions |= LBR_REL_CALL;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "ind_call"))
+ {
+ LbrRequest.LbrFilterOptions |= LBR_IND_CALL;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "return"))
+ {
+ LbrRequest.LbrFilterOptions |= LBR_RETURN;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "ind_jmp"))
+ {
+ LbrRequest.LbrFilterOptions |= LBR_IND_JMP;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "rel_jmp"))
+ {
+ LbrRequest.LbrFilterOptions |= LBR_REL_JMP;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "far"))
+ {
+ LbrRequest.LbrFilterOptions |= LBR_FAR;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "call_stack"))
+ {
+ LbrRequest.LbrFilterOptions |= LBR_CALL_STACK;
+ }
+ else
+ {
+ ShowMessages("unknown filter option '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(i)).c_str());
+ CommandLbrHelp();
+ return;
+ }
+ }
+ }
else
{
ShowMessages("incorrect use of the '%s'\n\n",
@@ -187,6 +301,14 @@ CommandLbr(vector CommandTokens, string Command)
{
ShowMessages("LBR branches are flush\n");
}
+ else if (LbrRequest.LbrOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FILTER)
+ {
+ ShowMessages("LBR filter options are updated successfully\n");
+ }
+ else
+ {
+ ShowMessages("unknown LBR operation type\n");
+ }
}
else
{
From af50093b9bd78fe746a6b1f1546096d63bdbb188 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 27 Apr 2026 03:16:41 +0200
Subject: [PATCH 142/323] apply LBR filters from VMX-root mode
---
hyperdbg/hyperdbg.sln | 1 +
hyperdbg/hyperhv/code/interface/Export.c | 24 ++++++
hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c | 12 +++
hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 13 ++++
hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c | 9 +++
.../hyperhv/header/vmm/vmx/CrossVmcalls.h | 3 +
hyperdbg/hyperhv/header/vmm/vmx/Hv.h | 10 +++
hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h | 6 ++
hyperdbg/hyperkd/code/driver/Loader.c | 2 +
hyperdbg/hypertrace/code/lbr/Lbr.c | 76 +++++++++++++++++--
hyperdbg/hypertrace/header/lbr/Lbr.h | 39 ----------
hyperdbg/include/SDK/HyperDbgSdk.h | 5 ++
hyperdbg/include/SDK/headers/LbrDefinitions.h | 59 ++++++++++++++
.../SDK/imports/kernel/HyperDbgVmmImports.h | 6 ++
hyperdbg/include/SDK/modules/HyperTrace.h | 14 ++++
.../commands/extension-commands/lbr.cpp | 32 --------
16 files changed, 232 insertions(+), 79 deletions(-)
create mode 100644 hyperdbg/include/SDK/headers/LbrDefinitions.h
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 2f62484b..15315ef9 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -60,6 +60,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "headers", "headers", "{D67D
include\SDK\Headers\Events.h = include\SDK\Headers\Events.h
include\SDK\Headers\HardwareDebugger.h = include\SDK\Headers\HardwareDebugger.h
include\SDK\Headers\Ioctls.h = include\SDK\Headers\Ioctls.h
+ include\SDK\headers\LbrDefinitions.h = include\SDK\headers\LbrDefinitions.h
include\SDK\headers\Pcie.h = include\SDK\headers\Pcie.h
include\SDK\Headers\RequestStructures.h = include\SDK\Headers\RequestStructures.h
include\SDK\Headers\ScriptEngineCommonDefinitions.h = include\SDK\Headers\ScriptEngineCommonDefinitions.h
diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c
index 49a135d0..649764d3 100644
--- a/hyperdbg/hyperhv/code/interface/Export.c
+++ b/hyperdbg/hyperhv/code/interface/Export.c
@@ -452,6 +452,30 @@ VmFuncSetDebugctlVmcallOnTargetCore(UINT64 Value)
CrossVmcallSetDebugctlVmcallOnTargetCore(Value);
}
+/**
+ * @brief Set the guest state of MSR_LBR_SELECT
+ * @param FilterOptions
+ *
+ * @return VOID
+ */
+VOID
+VmFuncSetLbrSelect(UINT64 FilterOptions)
+{
+ HvSetLbrSelect(FilterOptions);
+}
+
+/**
+ * @brief Set the guest state of MSR_LBR_SELECT on the target core from VMCS using VMCALL
+ * @param FilterOptions
+ *
+ * @return VOID
+ */
+VOID
+VmFuncSetLbrSelectVmcallOnTargetCore(UINT64 FilterOptions)
+{
+ CrossVmcallSetLbrSelectVmcallOnTargetCore(FilterOptions);
+}
+
/**
* @brief Set LOAD DEBUG CONTROLS on VM-entry controls on the target core from VMCS using VMCALL
*
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c b/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
index 561736d5..9201ca31 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
@@ -37,6 +37,18 @@ CrossVmcallSetDebugctlVmcallOnTargetCore(UINT64 Value)
AsmVmxVmcall(VMCALL_SET_VMCS_DEBUGCTL, Value, NULL64_ZERO, NULL64_ZERO);
}
+/**
+ * @brief Set the guest state of MSR_LBR_SELECT on the target core from VMCS using VMCALL
+ * @param FilterOptions
+ *
+ * @return VOID
+ */
+VOID
+CrossVmcallSetLbrSelectVmcallOnTargetCore(UINT64 FilterOptions)
+{
+ AsmVmxVmcall(VMCALL_SET_MSR_LBR_SELECT, FilterOptions, NULL64_ZERO, NULL64_ZERO);
+}
+
/**
* @brief Set LOAD DEBUG CONTROLS on Vm-entry controls on the target core from VMCS using VMCALL
*
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
index 852a99e9..4699da72 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
@@ -1504,6 +1504,19 @@ HvSetDebugctl(UINT64 Value)
VmxVmwrite32(VMCS_GUEST_DEBUGCTL_HIGH, Value >> 32);
}
+/**
+ * @brief Set LBR selector
+ * @details If VMM is active, this should be done in vmx-root, otherwise, it doesn't work
+ * @param FilterOptions The value to write on MSR_LBR_SELECT
+ *
+ * @return VOID
+ */
+VOID
+HvSetLbrSelect(UINT64 FilterOptions)
+{
+ __writemsr(MSR_LBR_SELECT, FilterOptions);
+}
+
/**
* @brief Check if CPU support save and load debug controls on exit and load entries
*
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
index 4fe32ed9..97d8a788 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
@@ -555,6 +555,15 @@ VmxVmcallHandler(VIRTUAL_MACHINE_STATE * VCpu,
break;
}
+ case VMCALL_SET_MSR_LBR_SELECT:
+ {
+ //
+ // Perform setting MSR_LBR_SELECT
+ //
+ HvSetLbrSelect(OptionalParam1);
+ VmcallStatus = STATUS_SUCCESS;
+ break;
+ }
default:
{
LogError("Err, unsupported VMCALL");
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h b/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h
index 64b9d3d0..359e9897 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h
@@ -21,6 +21,9 @@ CrossVmcallGetDebugctlVmcallOnTargetCore();
VOID
CrossVmcallSetDebugctlVmcallOnTargetCore(UINT64 Value);
+VOID
+CrossVmcallSetLbrSelectVmcallOnTargetCore(UINT64 FilterOptions);
+
VOID
CrossVmcallSetLoadDebugControlsVmcallOnTargetCore(BOOLEAN Set);
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
index 95fa4413..4b23ff43 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
@@ -478,6 +478,16 @@ HvGetAndStoreDebugctl(UINT64 * StoreDebugctl);
VOID
HvSetDebugctl(UINT64 Value);
+/**
+ * @brief Set LBR selector
+ * @details If VMM is active, this should be done in vmx-root, otherwise, it doesn't work
+ * @param FilterOptions The value to write on MSR_LBR_SELECT
+ *
+ * @return VOID
+ */
+VOID
+HvSetLbrSelect(UINT64 FilterOptions);
+
/**
* @brief Check if CPU support save and load debug controls on exit and load entries
*
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h b/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
index b7ce32c9..acec4776 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
@@ -333,6 +333,12 @@
*/
#define VMCALL_SET_VMCS_DEBUGCTL 0x00000033
+/**
+ * @brief VMCALL to set MSR_LBR_SELECT using WRMSR
+ *
+ */
+#define VMCALL_SET_MSR_LBR_SELECT 0x00000034
+
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index e622f3b8..bd120c06 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -48,6 +48,8 @@ LoaderInitHyperTrace(BOOLEAN RunningOnHypervisorEnvironment)
HyperTraceCallbacks.VmFuncSetLoadDebugControlsVmcallOnTargetCore = VmFuncSetLoadDebugControlsVmcallOnTargetCore;
HyperTraceCallbacks.VmFuncSetSaveDebugControls = VmFuncSetSaveDebugControls;
HyperTraceCallbacks.VmFuncSetSaveDebugControlsVmcallOnTargetCore = VmFuncSetSaveDebugControlsVmcallOnTargetCore;
+ HyperTraceCallbacks.VmFuncSetLbrSelect = VmFuncSetLbrSelect;
+ HyperTraceCallbacks.VmFuncSetLbrSelectVmcallOnTargetCore = VmFuncSetLbrSelectVmcallOnTargetCore;
//
// Memory callbacks
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 4f77ba0b..036aec6a 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -172,9 +172,43 @@ LbrFlush()
}
//
- // Flush LBR registers
+ // *** Flush LBR registers ***
+ //
+
+ //
+ // Set LBR filter (MSR_LBR_SELECT) to 0 to capture all branch types (reset)
+ //
+ if (g_RunningOnHypervisorEnvironment)
+ {
+ IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
+
+ //
+ // If we don't set it on VMX-root mode, the LBR MSRs won't work based on our tests
+ // even though it is just MSR (and not a VMCS field)
+ //
+ if (IsOnVmxRootMode)
+ {
+ //
+ // It is on VMX-root mode, run it directly to set the MSR_LBR_SELECT MSR value
+ //
+ g_Callbacks.VmFuncSetLbrSelect(0);
+ }
+ else
+ {
+ //
+ // It is not on VMX-root mode, so we need to perform a VMCALL to set the MSR_LBR_SELECT MSR value on the target core
+ //
+ g_Callbacks.VmFuncSetLbrSelectVmcallOnTargetCore(0);
+ }
+ }
+ else
+ {
+ xwrmsr(MSR_LBR_SELECT, 0);
+ }
+
+ //
+ // Clear TOS and all LBR entries
//
- xwrmsr(MSR_LBR_SELECT, 0);
xwrmsr(MSR_LBR_TOS, 0);
for (i = 0; i < LbrCapacity; i++)
@@ -194,7 +228,8 @@ LbrFlush()
BOOLEAN
LbrStart(UINT64 FilterOptions)
{
- BOOLEAN IsOnVmxRootMode;
+ BOOLEAN IsOnVmxRootMode;
+ ULONGLONG DbgCtlMsr;
if (LbrCapacity == 0)
{
@@ -202,17 +237,42 @@ LbrStart(UINT64 FilterOptions)
return FALSE;
}
- ULONGLONG DbgCtlMsr;
+ //
+ // Set LBR filter (MSR_LBR_SELECT) to selection mask
+ //
+ if (g_RunningOnHypervisorEnvironment)
+ {
+ IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
- //
- // Force the selection mask
- //
- xwrmsr(MSR_LBR_SELECT, FilterOptions); // Default to capture all branch types; this can be modified to apply filters as needed
+ //
+ // If we don't set it on VMX-root mode, the LBR MSRs won't work based on our tests
+ // even though it is just MSR (and not a VMCS field)
+ //
+ if (IsOnVmxRootMode)
+ {
+ //
+ // It is on VMX-root mode, run it directly to set the MSR_LBR_SELECT MSR value
+ //
+ g_Callbacks.VmFuncSetLbrSelect(FilterOptions);
+ }
+ else
+ {
+ //
+ // It is not on VMX-root mode, so we need to perform a VMCALL to set the MSR_LBR_SELECT MSR value on the target core
+ //
+ g_Callbacks.VmFuncSetLbrSelectVmcallOnTargetCore(FilterOptions);
+ }
+ }
+ else
+ {
+ xwrmsr(MSR_LBR_SELECT, FilterOptions);
+ }
//
// Clear hardware state
//
xwrmsr(MSR_LBR_TOS, 0);
+
for (ULONG i = 0; i < (ULONG)LbrCapacity; i++)
{
xwrmsr(MSR_LBR_NHM_FROM + i, 0);
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index b774201e..d4d23e1e 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -14,7 +14,6 @@
// Constants //
//////////////////////////////////////////////////
-#define MSR_LBR_SELECT 0x000001C8
#define MSR_LBR_TOS 0x000001C9
#define MSR_LBR_NHM_FROM 0x00000680
#define MSR_LBR_NHM_TO 0x000006C0
@@ -28,44 +27,6 @@
//
#define IA32_LBR_CTL 0x000014CE
-/*
- * Intel LBR_SELECT bits
- *
- * Hardware branch filter (not available on all CPUs)
- */
-#define LBR_KERNEL_BIT 0 /* do not capture at ring0 */
-#define LBR_USER_BIT 1 /* do not capture at ring > 0 */
-#define LBR_JCC_BIT 2 /* do not capture conditional branches */
-#define LBR_REL_CALL_BIT 3 /* do not capture relative calls */
-#define LBR_IND_CALL_BIT 4 /* do not capture indirect calls */
-#define LBR_RETURN_BIT 5 /* do not capture near returns */
-#define LBR_IND_JMP_BIT 6 /* do not capture indirect jumps */
-#define LBR_REL_JMP_BIT 7 /* do not capture relative jumps */
-#define LBR_FAR_BIT 8 /* do not capture far branches */
-#define LBR_CALL_STACK_BIT 9 /* enable call stack: not available on all CPUs */
-
-/*
- * We mask it out before writing it to
- * the actual MSR. But it helps the constraint code to understand
- * that this is a separate configuration.
- */
-#define LBR_KERNEL (1 << LBR_KERNEL_BIT)
-#define LBR_USER (1 << LBR_USER_BIT)
-#define LBR_JCC (1 << LBR_JCC_BIT)
-#define LBR_REL_CALL (1 << LBR_REL_CALL_BIT)
-#define LBR_IND_CALL (1 << LBR_IND_CALL_BIT)
-#define LBR_RETURN (1 << LBR_RETURN_BIT)
-#define LBR_IND_JMP (1 << LBR_IND_JMP_BIT)
-#define LBR_REL_JMP (1 << LBR_REL_JMP_BIT)
-#define LBR_FAR (1 << LBR_FAR_BIT)
-#define LBR_CALL_STACK (1 << LBR_CALL_STACK_BIT)
-
-/**
- * @brief Maximum LBR capacity that is supported by processors
- *
- */
-#define MAXIMUM_LBR_CAPACITY 0x20 // 32 entries, which is the maximum supported by modern Intel CPUs
-
//////////////////////////////////////////////////
// MSR Structures //
//////////////////////////////////////////////////
diff --git a/hyperdbg/include/SDK/HyperDbgSdk.h b/hyperdbg/include/SDK/HyperDbgSdk.h
index 23583067..71bafe53 100644
--- a/hyperdbg/include/SDK/HyperDbgSdk.h
+++ b/hyperdbg/include/SDK/HyperDbgSdk.h
@@ -16,6 +16,11 @@
//
#include "SDK/headers/Pcie.h"
+//
+// Last Branch Records
+//
+#include "SDK/headers/LbrDefinitions.h"
+
//
// Asserts
//
diff --git a/hyperdbg/include/SDK/headers/LbrDefinitions.h b/hyperdbg/include/SDK/headers/LbrDefinitions.h
new file mode 100644
index 00000000..d8114cf0
--- /dev/null
+++ b/hyperdbg/include/SDK/headers/LbrDefinitions.h
@@ -0,0 +1,59 @@
+/**
+ * @file LbrDefinitions.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Last Branch Record (LBR) related data structures
+ * @details
+ * @version 0.19
+ * @date 2026-04-27
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Constants //
+//////////////////////////////////////////////////
+
+/**
+ * @brief MSR address of LBR_SELECT, which is used to configure the LBR filtering options
+ */
+#define MSR_LBR_SELECT 0x000001C8
+
+/*
+ * Intel LBR_SELECT bits
+ *
+ * Hardware branch filter (not available on all CPUs)
+ */
+#define LBR_KERNEL_BIT 0 /* do not capture at ring0 */
+#define LBR_USER_BIT 1 /* do not capture at ring > 0 */
+#define LBR_JCC_BIT 2 /* do not capture conditional branches */
+#define LBR_REL_CALL_BIT 3 /* do not capture relative calls */
+#define LBR_IND_CALL_BIT 4 /* do not capture indirect calls */
+#define LBR_RETURN_BIT 5 /* do not capture near returns */
+#define LBR_IND_JMP_BIT 6 /* do not capture indirect jumps */
+#define LBR_REL_JMP_BIT 7 /* do not capture relative jumps */
+#define LBR_FAR_BIT 8 /* do not capture far branches */
+#define LBR_CALL_STACK_BIT 9 /* enable call stack: not available on all CPUs */
+
+/*
+ * We mask it out before writing it to
+ * the actual MSR. But it helps the constraint code to understand
+ * that this is a separate configuration.
+ */
+#define LBR_KERNEL (1 << LBR_KERNEL_BIT)
+#define LBR_USER (1 << LBR_USER_BIT)
+#define LBR_JCC (1 << LBR_JCC_BIT)
+#define LBR_REL_CALL (1 << LBR_REL_CALL_BIT)
+#define LBR_IND_CALL (1 << LBR_IND_CALL_BIT)
+#define LBR_RETURN (1 << LBR_RETURN_BIT)
+#define LBR_IND_JMP (1 << LBR_IND_JMP_BIT)
+#define LBR_REL_JMP (1 << LBR_REL_JMP_BIT)
+#define LBR_FAR (1 << LBR_FAR_BIT)
+#define LBR_CALL_STACK (1 << LBR_CALL_STACK_BIT)
+
+/**
+ * @brief Maximum LBR capacity that is supported by processors
+ *
+ */
+#define MAXIMUM_LBR_CAPACITY 0x20 // 32 entries, which is the maximum supported by modern Intel CPUs
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
index 5cf0aa63..80cd6521 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
@@ -110,6 +110,12 @@ VmFuncSetDebugctl(UINT64 Value);
IMPORT_EXPORT_VMM VOID
VmFuncSetDebugctlVmcallOnTargetCore(UINT64 Value);
+IMPORT_EXPORT_VMM VOID
+VmFuncSetLbrSelect(UINT64 FilterOptions);
+
+IMPORT_EXPORT_VMM VOID
+VmFuncSetLbrSelectVmcallOnTargetCore(UINT64 FilterOptions);
+
IMPORT_EXPORT_VMM VOID
VmFuncSetLoadDebugControlsVmcallOnTargetCore(BOOLEAN Set);
diff --git a/hyperdbg/include/SDK/modules/HyperTrace.h b/hyperdbg/include/SDK/modules/HyperTrace.h
index 288088ec..29aea9f1 100644
--- a/hyperdbg/include/SDK/modules/HyperTrace.h
+++ b/hyperdbg/include/SDK/modules/HyperTrace.h
@@ -70,6 +70,18 @@ typedef VOID (*VM_FUNC_SET_DEBUGCTL)(UINT64 Value);
*/
typedef VOID (*VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE)(UINT64 Value);
+/**
+ * @brief A function that set MSR_LBR_SELECT
+ *
+ */
+typedef VOID (*VM_FUNC_SET_LBR_SELECT)(UINT64 FilterOptions);
+
+/**
+ * @brief A function that set MSR_LBR_SELECT on the target core using VMCALL
+ *
+ */
+typedef VOID (*VM_FUNC_SET_LBR_SELECT_VMCALL_ON_TARGET_CORE)(UINT64 FilterOptions);
+
/**
* @brief A function that checks whether IA32_DEBUGCTL can be used in load and save of exit and entry controls
*
@@ -161,6 +173,8 @@ typedef struct _HYPERTRACE_CALLBACKS
VM_FUNC_SET_LOAD_DEBUG_CONTROLS_VMCALL_ON_TARGET_CORE VmFuncSetLoadDebugControlsVmcallOnTargetCore;
VM_FUNC_SET_SAVE_DEBUG_CONTROLS VmFuncSetSaveDebugControls;
VM_FUNC_SET_SAVE_DEBUG_CONTROLS_VMCALL_ON_TARGET_CORE VmFuncSetSaveDebugControlsVmcallOnTargetCore;
+ VM_FUNC_SET_LBR_SELECT VmFuncSetLbrSelect;
+ VM_FUNC_SET_LBR_SELECT_VMCALL_ON_TARGET_CORE VmFuncSetLbrSelectVmcallOnTargetCore;
//
// *** HYPERTRACE callbacks ***
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index 61e92d99..d187706c 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -16,38 +16,6 @@
//
extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
-/*
- * Intel LBR_SELECT bits
- *
- * Hardware branch filter (not available on all CPUs)
- */
-#define LBR_KERNEL_BIT 0 /* do not capture at ring0 */
-#define LBR_USER_BIT 1 /* do not capture at ring > 0 */
-#define LBR_JCC_BIT 2 /* do not capture conditional branches */
-#define LBR_REL_CALL_BIT 3 /* do not capture relative calls */
-#define LBR_IND_CALL_BIT 4 /* do not capture indirect calls */
-#define LBR_RETURN_BIT 5 /* do not capture near returns */
-#define LBR_IND_JMP_BIT 6 /* do not capture indirect jumps */
-#define LBR_REL_JMP_BIT 7 /* do not capture relative jumps */
-#define LBR_FAR_BIT 8 /* do not capture far branches */
-#define LBR_CALL_STACK_BIT 9 /* enable call stack: not available on all CPUs */
-
-/*
- * We mask it out before writing it to
- * the actual MSR. But it helps the constraint code to understand
- * that this is a separate configuration.
- */
-#define LBR_KERNEL (1 << LBR_KERNEL_BIT)
-#define LBR_USER (1 << LBR_USER_BIT)
-#define LBR_JCC (1 << LBR_JCC_BIT)
-#define LBR_REL_CALL (1 << LBR_REL_CALL_BIT)
-#define LBR_IND_CALL (1 << LBR_IND_CALL_BIT)
-#define LBR_RETURN (1 << LBR_RETURN_BIT)
-#define LBR_IND_JMP (1 << LBR_IND_JMP_BIT)
-#define LBR_REL_JMP (1 << LBR_REL_JMP_BIT)
-#define LBR_FAR (1 << LBR_FAR_BIT)
-#define LBR_CALL_STACK (1 << LBR_CALL_STACK_BIT)
-
/**
* @brief help of the !lbr command
*
From 7c6ca98358dafbde9457f2164e431f741890869e Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 27 Apr 2026 16:17:46 +0200
Subject: [PATCH 143/323] change git ignore for linux kernel modules
---
hyperdbg/include/platform/kernel/.gitignore | 95 +++++++++++++++++++
.../platform/kernel/{code => header}/pch.h | 0
hyperdbg/libhyperdbg/pch.h | 1 -
hyperdbg/linux/.gitignore | 95 +++++++++++++++++++
hyperdbg/linux/mock/README.md | 13 ++-
5 files changed, 198 insertions(+), 6 deletions(-)
create mode 100644 hyperdbg/include/platform/kernel/.gitignore
rename hyperdbg/include/platform/kernel/{code => header}/pch.h (100%)
create mode 100644 hyperdbg/linux/.gitignore
diff --git a/hyperdbg/include/platform/kernel/.gitignore b/hyperdbg/include/platform/kernel/.gitignore
new file mode 100644
index 00000000..289431e5
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/.gitignore
@@ -0,0 +1,95 @@
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the ".gitignore" file
+# in that subdirectory instead.
+#
+# NOTE! Please use 'git ls-files -i --exclude-standard'
+# command after changing this file, to see if there are
+# any tracked files which get ignored after the change.
+#
+# Normal rules
+#
+.*
+*.o
+*.o.*
+*.a
+*.s
+*.ko
+*.so
+*.so.dbg
+*.mod.c
+*.i
+*.lst
+*.symtypes
+*.order
+modules.builtin
+*.elf
+*.bin
+*.gz
+*.bz2
+*.lzma
+*.xz
+*.lzo
+*.patch
+*.gcno
+*.mod
+
+#
+# Top-level generic files
+#
+/tags
+/TAGS
+/linux
+/vmlinux
+/vmlinuz
+/System.map
+/Module.markers
+Module.symvers
+
+#
+# Debian directory (make deb-pkg)
+#
+/debian/
+
+#
+# git files that we don't want to ignore even it they are dot-files
+#
+!.gitignore
+!.mailmap
+
+#
+# Generated include files
+#
+include/config
+include/linux/version.h
+include/generated
+arch/*/include/generated
+
+# stgit generated dirs
+patches-*
+
+# quilt's files
+patches
+series
+
+# cscope files
+cscope.*
+ncscope.*
+
+# gnu global files
+GPATH
+GRTAGS
+GSYMS
+GTAGS
+
+*.orig
+*~
+\#*#
+
+#
+# Leavings from module signing
+#
+extra_certificates
+signing_key.priv
+signing_key.x509
+x509.genkey
diff --git a/hyperdbg/include/platform/kernel/code/pch.h b/hyperdbg/include/platform/kernel/header/pch.h
similarity index 100%
rename from hyperdbg/include/platform/kernel/code/pch.h
rename to hyperdbg/include/platform/kernel/header/pch.h
diff --git a/hyperdbg/libhyperdbg/pch.h b/hyperdbg/libhyperdbg/pch.h
index db3e26f9..73d36ae5 100644
--- a/hyperdbg/libhyperdbg/pch.h
+++ b/hyperdbg/libhyperdbg/pch.h
@@ -72,7 +72,6 @@ typedef const wchar_t *LPCWCHAR, *PCWCHAR;
#include
#include
#include
-#include
#include
#include
#include
diff --git a/hyperdbg/linux/.gitignore b/hyperdbg/linux/.gitignore
new file mode 100644
index 00000000..289431e5
--- /dev/null
+++ b/hyperdbg/linux/.gitignore
@@ -0,0 +1,95 @@
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the ".gitignore" file
+# in that subdirectory instead.
+#
+# NOTE! Please use 'git ls-files -i --exclude-standard'
+# command after changing this file, to see if there are
+# any tracked files which get ignored after the change.
+#
+# Normal rules
+#
+.*
+*.o
+*.o.*
+*.a
+*.s
+*.ko
+*.so
+*.so.dbg
+*.mod.c
+*.i
+*.lst
+*.symtypes
+*.order
+modules.builtin
+*.elf
+*.bin
+*.gz
+*.bz2
+*.lzma
+*.xz
+*.lzo
+*.patch
+*.gcno
+*.mod
+
+#
+# Top-level generic files
+#
+/tags
+/TAGS
+/linux
+/vmlinux
+/vmlinuz
+/System.map
+/Module.markers
+Module.symvers
+
+#
+# Debian directory (make deb-pkg)
+#
+/debian/
+
+#
+# git files that we don't want to ignore even it they are dot-files
+#
+!.gitignore
+!.mailmap
+
+#
+# Generated include files
+#
+include/config
+include/linux/version.h
+include/generated
+arch/*/include/generated
+
+# stgit generated dirs
+patches-*
+
+# quilt's files
+patches
+series
+
+# cscope files
+cscope.*
+ncscope.*
+
+# gnu global files
+GPATH
+GRTAGS
+GSYMS
+GTAGS
+
+*.orig
+*~
+\#*#
+
+#
+# Leavings from module signing
+#
+extra_certificates
+signing_key.priv
+signing_key.x509
+x509.genkey
diff --git a/hyperdbg/linux/mock/README.md b/hyperdbg/linux/mock/README.md
index a9a09e50..37864ebf 100644
--- a/hyperdbg/linux/mock/README.md
+++ b/hyperdbg/linux/mock/README.md
@@ -42,17 +42,20 @@ hyperdbg/
---
## Build the Module
-```bash
-cd hyperdbg/linux/mock```
+```bash
+cd hyperdbg/linux/mock
+```
+
then build module:
-```bash
+```bash
make
-```
+```
+
If successful, this will generate:
```bash
HyperDbg.ko
-```
+```
---
# Load the Module
From 71fedff180fb15796e23327d7e151d1fe202e551 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 27 Apr 2026 16:53:36 +0200
Subject: [PATCH 144/323] add basic structure of intrinsics functions
---
hyperdbg/hyperdbg.sln | 2 +
.../include/platform/kernel/code/Intrinsics.c | 14 +++
.../platform/kernel/code/PlatformMem.c | 107 ++++++++----------
.../platform/kernel/header/Intrinsics.h | 17 +++
.../platform/kernel/header/PlatformMem.h | 102 +++++++----------
.../platform/kernel/header/PlatformTypes.h | 73 +++++++-----
6 files changed, 169 insertions(+), 146 deletions(-)
create mode 100644 hyperdbg/include/platform/kernel/code/Intrinsics.c
create mode 100644 hyperdbg/include/platform/kernel/header/Intrinsics.h
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 15315ef9..249d8a53 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -148,12 +148,14 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "kernel", "kernel", "{D0E5A2
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{6498728B-D9B0-4CAB-A9E3-ACE5BC371010}"
ProjectSection(SolutionItems) = preProject
+ include\platform\kernel\code\Intrinsics.c = include\platform\kernel\code\Intrinsics.c
include\platform\kernel\code\PlatformMem.c = include\platform\kernel\code\PlatformMem.c
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{AA41FFF1-A730-433E-8D26-13DA5B653825}"
ProjectSection(SolutionItems) = preProject
include\platform\kernel\header\Environment.h = include\platform\kernel\header\Environment.h
+ include\platform\kernel\header\Intrinsics.h = include\platform\kernel\header\Intrinsics.h
include\platform\kernel\header\PlatformMem.h = include\platform\kernel\header\PlatformMem.h
include\platform\kernel\header\PlatformModuleInfo.h = include\platform\kernel\header\PlatformModuleInfo.h
include\platform\kernel\header\PlatformTypes.h = include\platform\kernel\header\PlatformTypes.h
diff --git a/hyperdbg/include/platform/kernel/code/Intrinsics.c b/hyperdbg/include/platform/kernel/code/Intrinsics.c
new file mode 100644
index 00000000..7237049b
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/Intrinsics.c
@@ -0,0 +1,14 @@
+/**
+ * @file Intrinsics.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for intrinsic functions
+ * @details
+ * @version 0.19
+ * @date 2026-04-27
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+
+#include "pch.h"
+#include "../header/PlatformMem.h"
diff --git a/hyperdbg/include/platform/kernel/code/PlatformMem.c b/hyperdbg/include/platform/kernel/code/PlatformMem.c
index 5441bcbc..d47561ee 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformMem.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformMem.c
@@ -12,11 +12,6 @@
*
*/
-/**
- * @file PlatformMem.c
- * @brief Implementation of cross APIs for different platforms for memory allocation
- */
-
#include "pch.h"
#include "../header/PlatformMem.h"
@@ -24,27 +19,23 @@
/// ... New Unified API ...
/////////////////////////////////////////////////
-
/**
* @brief Allocates a block of memory in the kernel pool.
* @details On Windows: Allocates from NonPagedPool and zeroes it.
* On Linux: Uses kzalloc (GFP_KERNEL) which zeroes memory.
*
* @param Size The number of bytes to allocate.
- * @return PLAT_PTR Pointer to the allocated memory, or NULL on failure.
+ * @return PVOID Pointer to the allocated memory, or NULL on failure.
*/
-PLAT_PTR
+PVOID
PlatformAllocateMemory(
- PLAT_SIZE Size
-)
+ PLAT_SIZE Size)
{
#ifdef _WIN32
- PLAT_PTR Result = ExAllocatePool2(
+ PVOID Result = ExAllocatePool2(
POOL_FLAG_NON_PAGED, // non-paged pool
Size,
- POOLTAG
- );
-
+ POOLTAG);
if (Result != NULL)
RtlSecureZeroMemory(Result, Size);
@@ -52,11 +43,14 @@ PlatformAllocateMemory(
return Result;
#else
// Linux Kernel: kzalloc allocates zeroed memory
- PLAT_PTR ptr = kzalloc(Size, GFP_KERNEL);
+ PVOID ptr = kzalloc(Size, GFP_KERNEL);
- if (ptr) {
+ if (ptr)
+ {
printk(KERN_INFO "MemAllocKernel: Allocated %zu bytes at %px\n", Size, ptr);
- } else {
+ }
+ else
+ {
printk(KERN_ERR "MemAllocKernel: failed to allocate %zu bytes\n", Size);
}
@@ -68,12 +62,12 @@ PlatformAllocateMemory(
* @brief Frees a previously allocated memory block.
* @param Memory Pointer to the memory block. Handles NULL safely.
*/
-void
+VOID
PlatformFreeMemory(
- PLAT_PTR Memory
-)
+ PVOID Memory)
{
- if (!Memory) return;
+ if (!Memory)
+ return;
#ifdef _WIN32
ExFreePoolWithTag(Memory, POOLTAG);
@@ -92,16 +86,16 @@ PlatformFreeMemory(
*/
PLAT_STATUS
PlatformWriteMemory(
- PLAT_PTR Process,
- PLAT_PTR Address, // Destination
- PLAT_PTR Buffer, // Source
- PLAT_SIZE Size
-)
+ PVOID Process,
+ PVOID Address, // Destination
+ PVOID Buffer, // Source
+ PLAT_SIZE Size)
{
// Process argument currently unused (local copy)
(void)Process;
- if (!Address || !Buffer) return PLAT_FAIL;
+ if (!Address || !Buffer)
+ return PLAT_FAIL;
#ifdef _WIN32
RtlCopyMemory(Address, Buffer, Size);
@@ -117,14 +111,14 @@ PlatformWriteMemory(
* @param Value Value to set.
* @param Size Number of bytes.
*/
-void
+VOID
PlatformSetMemory(
- PLAT_PTR Destination,
- int Value,
- PLAT_SIZE Size
-)
+ PVOID Destination,
+ int Value,
+ PLAT_SIZE Size)
{
- if (!Destination) return;
+ if (!Destination)
+ return;
#ifdef _WIN32
RtlFillMemory(Destination, Size, Value);
@@ -133,7 +127,6 @@ PlatformSetMemory(
#endif
}
-
/////////////////////////////////////////////////
/// ... Backward Compatibility / Specific APIs ...
/////////////////////////////////////////////////
@@ -144,15 +137,15 @@ PlatformSetMemory(
* On Linux: Uses kmalloc (which is usually physically contiguous) or dma_alloc_coherent.
* For simplicity in this driver, we map to kzalloc.
* @param NumberOfBytes Size in bytes.
- * @return PLAT_PTR Pointer to memory or NULL.
+ * @return PVOID Pointer to memory or NULL.
*/
-PLAT_PTR
+PVOID
PlatformMemAllocateContiguousZeroedMemory(PLAT_SIZE NumberOfBytes)
{
#ifdef _WIN32
- PLAT_PTR Result = NULL;
- PHYSICAL_ADDRESS MaxPhysicalAddr = {0};
- MaxPhysicalAddr.QuadPart = MAXULONG64;
+ PVOID Result = NULL;
+ PHYSICAL_ADDRESS MaxPhysicalAddr = {0};
+ MaxPhysicalAddr.QuadPart = MAXULONG64;
Result = MmAllocateContiguousMemory(NumberOfBytes, MaxPhysicalAddr);
if (Result != NULL)
@@ -168,30 +161,28 @@ PlatformMemAllocateContiguousZeroedMemory(PLAT_SIZE NumberOfBytes)
/**
* @brief Allocates non-paged pool memory.
* @param NumberOfBytes Size in bytes.
- * @return PLAT_PTR Pointer to memory.
+ * @return PVOID Pointer to memory.
*/
-PLAT_PTR
+PVOID
PlatformMemAllocateNonPagedPool(PLAT_SIZE NumberOfBytes)
{
#ifdef _WIN32
return ExAllocatePool2(
POOL_FLAG_NON_PAGED,
NumberOfBytes,
- POOLTAG
- );
+ POOLTAG);
#else
// Linux kernel memory is non-paged by default (except vmalloc)
return kmalloc(NumberOfBytes, GFP_KERNEL);
#endif
}
-
/**
* @brief Allocates non-paged pool memory with quota charging.
* @param NumberOfBytes Size in bytes.
- * @return PLAT_PTR Pointer to memory.
+ * @return PVOID Pointer to memory.
*/
-PLAT_PTR
+PVOID
PlatformMemAllocateNonPagedPoolWithQuota(PLAT_SIZE NumberOfBytes)
{
#ifdef _WIN32
@@ -200,8 +191,7 @@ PlatformMemAllocateNonPagedPoolWithQuota(PLAT_SIZE NumberOfBytes)
return ExAllocatePool2(
POOL_FLAG_NON_PAGED | POOL_FLAG_USE_QUOTA,
NumberOfBytes,
- POOLTAG
- );
+ POOLTAG);
#else
// Quotas are not explicitly managed in simple Linux kernel allocations like this
return kmalloc(NumberOfBytes, GFP_KERNEL);
@@ -211,17 +201,16 @@ PlatformMemAllocateNonPagedPoolWithQuota(PLAT_SIZE NumberOfBytes)
/**
* @brief Allocates zeroed non-paged pool memory.
* @param NumberOfBytes Size in bytes.
- * @return PLAT_PTR Pointer to memory.
+ * @return PVOID Pointer to memory.
*/
-PLAT_PTR
+PVOID
PlatformMemAllocateZeroedNonPagedPool(PLAT_SIZE NumberOfBytes)
{
#ifdef _WIN32
- PLAT_PTR Result = ExAllocatePool2(
+ PVOID Result = ExAllocatePool2(
POOL_FLAG_NON_PAGED,
NumberOfBytes,
- POOLTAG
- );
+ POOLTAG);
if (Result != NULL)
RtlSecureZeroMemory(Result, NumberOfBytes);
return Result;
@@ -230,16 +219,16 @@ PlatformMemAllocateZeroedNonPagedPool(PLAT_SIZE NumberOfBytes)
#endif
}
-
/**
* @brief Frees a memory pool.
* @param BufferAddress Pointer to the memory to free.
- * @return PLAT_PTR (Void pointer in original API, usually ignored).
+ * @return PVOID (Void pointer in original API, usually ignored).
*/
-PLAT_PTR
-PlatformMemFreePool(PLAT_PTR BufferAddress)
+PVOID
+PlatformMemFreePool(PVOID BufferAddress)
{
- if (!BufferAddress) return NULL;
+ if (!BufferAddress)
+ return NULL;
#ifdef _WIN32
ExFreePoolWithTag(BufferAddress, POOLTAG);
@@ -247,4 +236,4 @@ PlatformMemFreePool(PLAT_PTR BufferAddress)
kfree(BufferAddress);
#endif
return NULL;
-}
\ No newline at end of file
+}
diff --git a/hyperdbg/include/platform/kernel/header/Intrinsics.h b/hyperdbg/include/platform/kernel/header/Intrinsics.h
new file mode 100644
index 00000000..66eaebe5
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/Intrinsics.h
@@ -0,0 +1,17 @@
+/**
+ * @file Intrinsics.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Cross platform APIs for intrinsic functions
+ * @details
+ * @version 0.19
+ * @date 2026-04-27
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+#include "PlatformTypes.h"
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
diff --git a/hyperdbg/include/platform/kernel/header/PlatformMem.h b/hyperdbg/include/platform/kernel/header/PlatformMem.h
index 3c06ef7b..d062b5d7 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformMem.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformMem.h
@@ -15,85 +15,71 @@
#include "PlatformTypes.h"
//////////////////////////////////////////////////
-// Functions //
+// Functions //
//////////////////////////////////////////////////
-PLAT_STATUS PlatformReadMemory(
- PLAT_PTR Process,
- PLAT_PTR Address,
- PLAT_PTR Buffer,
- PLAT_SIZE Size
-);
+PLAT_STATUS
+PlatformReadMemory(
+ PVOID Process,
+ PVOID Address,
+ PVOID Buffer,
+ PLAT_SIZE Size);
-PLAT_STATUS PlatformWriteMemory(
- PLAT_PTR Process,
- PLAT_PTR Address,
- PLAT_PTR Buffer,
- PLAT_SIZE Size
-);
+PLAT_STATUS
+PlatformWriteMemory(
+ PVOID Process,
+ PVOID Address,
+ PVOID Buffer,
+ PLAT_SIZE Size);
-PLAT_PTR PlatformAllocMemory(
- PLAT_SIZE Size
-);
+PVOID
+PlatformAllocMemory(
+ PLAT_SIZE Size);
-void PlatformFreeMemory(
- PLAT_PTR Memory
-);
+VOID
+PlatformFreeMemory(
+ PVOID Memory);
-
-
-PLAT_PTR
+PVOID
PlatformMemAllocateContiguousZeroedMemory(
- PLAT_SIZE NumberOfBytes
-);
+ PLAT_SIZE NumberOfBytes);
-
-
-PLAT_PTR
+PVOID
PlatformMemAllocateNonPagedPool(
- PLAT_SIZE NumberOfBytes
-);
+ PLAT_SIZE NumberOfBytes);
-
-
-PLAT_PTR
+PVOID
PlatformMemAllocateNonPagedPoolWithQuota(
- PLAT_SIZE NumberOfBytes
-);
+ PLAT_SIZE NumberOfBytes);
-
-PLAT_PTR
+PVOID
PlatformMemAllocateZeroedNonPagedPool(
- PLAT_SIZE NumberOfBytes
-);
+ PLAT_SIZE NumberOfBytes);
-
-PLAT_PTR
+PVOID
PlatformMemFreePool(
- PLAT_PTR BufferAddress
-);
-
+ PVOID BufferAddress);
//////////////////////////////////////////////////
// Backward-compatible / legacy functions //
//////////////////////////////////////////////////
-PLAT_PTR PlatformMemAllocateContiguousZeroedMemory(
- PLAT_SIZE NumberOfBytes
-);
+PVOID
+PlatformMemAllocateContiguousZeroedMemory(
+ PLAT_SIZE NumberOfBytes);
-PLAT_PTR PlatformMemAllocateNonPagedPool(
- PLAT_SIZE NumberOfBytes
-);
+PVOID
+PlatformMemAllocateNonPagedPool(
+ PLAT_SIZE NumberOfBytes);
-PLAT_PTR PlatformMemAllocateNonPagedPoolWithQuota(
- PLAT_SIZE NumberOfBytes
-);
+PVOID
+PlatformMemAllocateNonPagedPoolWithQuota(
+ PLAT_SIZE NumberOfBytes);
-PLAT_PTR PlatformMemAllocateZeroedNonPagedPool(
- PLAT_SIZE NumberOfBytes
-);
+PVOID
+PlatformMemAllocateZeroedNonPagedPool(
+ PLAT_SIZE NumberOfBytes);
-PLAT_PTR PlatformMemFreePool(
- PLAT_PTR BufferAddress
-);
\ No newline at end of file
+PVOID
+PlatformMemFreePool(
+ PVOID BufferAddress);
diff --git a/hyperdbg/include/platform/kernel/header/PlatformTypes.h b/hyperdbg/include/platform/kernel/header/PlatformTypes.h
index 845d4b80..122404c1 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformTypes.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformTypes.h
@@ -13,46 +13,61 @@
//////////////////////////////////////////////////
#ifdef _WIN32
- #include
- #include "pch.h"
- // Define a Pool Tag for memory allocation (Required by ExAllocatePoolWithTag)
- #ifndef POOLTAG
- #define POOLTAG 'gmEM'
- #endif
+# include
+# include "pch.h"
+// Define a Pool Tag for memory allocation (Required by ExAllocatePoolWithTag)
+# ifndef POOLTAG
+# define 0x48444247 // [H]yper[DBG] (HDBG)
+# endif
- typedef PVOID PLAT_PTR;
- typedef ULONG PLAT_U32;
- typedef ULONGLONG PLAT_U64;
- typedef SIZE_T PLAT_SIZE;
- typedef NTSTATUS PLAT_STATUS;
+typedef PVOID PLAT_PTR;
+typedef ULONG PLAT_U32;
+typedef ULONGLONG PLAT_U64;
+typedef SIZE_T PLAT_SIZE;
+typedef NTSTATUS PLAT_STATUS;
- #define PLAT_SUCCESS STATUS_SUCCESS
- #define PLAT_FAIL STATUS_UNSUCCESSFUL
+# define PLAT_SUCCESS STATUS_SUCCESS
+# define PLAT_FAIL STATUS_UNSUCCESSFUL
-#else // Linux Kernel
- #include
- #include
- #include
- #include
+#else // Linux Kernel
+# include
+# include
+# include
+# include
- typedef void* PLAT_PTR;
- typedef u32 PLAT_U32;
- typedef u64 PLAT_U64;
- typedef size_t PLAT_SIZE;
- typedef long PLAT_STATUS;
+typedef void VOID;
+typedef void * PVOID;
+typedef u32 UINT32;
+typedef u32 PLAT_U32;
+typedef u64 UINT64;
+typedef size_t PLAT_SIZE;
+typedef long PLAT_STATUS;
- #define PLAT_SUCCESS 0
- #define PLAT_FAIL -1
+// typedef signed char INT8, *PINT8;
+// typedef signed short INT16, *PINT16;
+// typedef signed int INT32, *PINT32;
+// typedef signed __int64 INT64, *PINT64;
+// typedef unsigned char UINT8, *PUINT8;
+// typedef unsigned short UINT16, *PUINT16;
+// typedef unsigned int UINT32, *PUINT32;
+// typedef unsigned __int64 UINT64, *PUINT64;
+
+# define PLAT_SUCCESS 0
+# define PLAT_FAIL -1
#endif
//////////////////////////////////////////////////
// Prototypes //
//////////////////////////////////////////////////
-PLAT_PTR PlatformAllocateMemory(PLAT_SIZE Size);
+PVOID
+PlatformAllocateMemory(PLAT_SIZE Size);
-void PlatformFreeMemory(PLAT_PTR Memory);
+VOID
+PlatformFreeMemory(PVOID Memory);
-PLAT_STATUS PlatformWriteMemory(PLAT_PTR Process, PLAT_PTR Address, PLAT_PTR Buffer, PLAT_SIZE Size);
+PLAT_STATUS
+PlatformWriteMemory(PVOID Process, PVOID Address, PVOID Buffer, PLAT_SIZE Size);
-void PlatformSetMemory(PLAT_PTR Destination, int Value, PLAT_SIZE Size);
\ No newline at end of file
+VOID
+PlatformSetMemory(PVOID Destination, int Value, PLAT_SIZE Size);
From d3cfd7b5d9135cb3b7fb8f7aeafc9fd5d8e64076 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 27 Apr 2026 21:22:43 +0200
Subject: [PATCH 145/323] create different headers for basic types in Linux
---
hyperdbg/hyperdbg.sln | 9 +++
.../platform/general/header/GeneralTypes.h | 58 +++++++++++++++++++
.../platform/kernel/code/PlatformMem.c | 28 ++++-----
.../platform/kernel/header/PlatformMem.h | 52 +++++++----------
.../platform/kernel/header/PlatformTypes.h | 32 ++--------
hyperdbg/include/platform/kernel/header/pch.h | 1 -
hyperdbg/linux/mock/mock.c | 20 +++----
hyperdbg/linux/mock/pch.h | 34 +++++++++++
8 files changed, 151 insertions(+), 83 deletions(-)
create mode 100644 hyperdbg/include/platform/general/header/GeneralTypes.h
delete mode 100644 hyperdbg/include/platform/kernel/header/pch.h
create mode 100644 hyperdbg/linux/mock/pch.h
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 249d8a53..155bad65 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -239,6 +239,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "config", "config", "{035508
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hypertrace", "hypertrace\hypertrace.vcxproj", "{9FA45E25-DAEB-4C2D-806C-7908A180195D}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "general", "general", "{17652C16-00A0-40D4-A227-697E595DE053}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{9E1A2FAF-696A-4CA7-8C2E-F6B80107A143}"
+ ProjectSection(SolutionItems) = preProject
+ include\platform\general\header\GeneralTypes.h = include\platform\general\header\GeneralTypes.h
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug|x64 = debug|x64
@@ -332,6 +339,8 @@ Global
{991B8FA7-F75E-4D8A-A0BD-636FE68B6AF4} = {2104BCF9-035E-45AA-B744-68A5B8FEFF13}
{02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {1997E4B6-FE49-4358-ADF1-CDDB5739508E}
{03550856-D63F-4069-87E1-8BF2F129DBE3} = {1997E4B6-FE49-4358-ADF1-CDDB5739508E}
+ {17652C16-00A0-40D4-A227-697E595DE053} = {9A711E36-8A78-4CE6-A34D-F681AF89A919}
+ {9E1A2FAF-696A-4CA7-8C2E-F6B80107A143} = {17652C16-00A0-40D4-A227-697E595DE053}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1444BEC7-11CE-4CA6-B77C-5F98AC9BFAEB}
diff --git a/hyperdbg/include/platform/general/header/GeneralTypes.h b/hyperdbg/include/platform/general/header/GeneralTypes.h
new file mode 100644
index 00000000..2a4e86da
--- /dev/null
+++ b/hyperdbg/include/platform/general/header/GeneralTypes.h
@@ -0,0 +1,58 @@
+/**
+ * @file GeneralTypes.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Cross platform general types definitions
+ * @details used both in kernel and user modes
+ * @version 0.19
+ * @date 2026-04-27
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Types //
+//////////////////////////////////////////////////
+
+#ifdef _WIN32
+
+# define PLAT_SUCCESS STATUS_SUCCESS
+# define PLAT_FAIL STATUS_UNSUCCESSFUL
+
+#else // Linux
+
+# include
+# include
+# include
+# include
+
+typedef long PLAT_STATUS;
+
+typedef void VOID;
+typedef void * PVOID;
+
+typedef size_t SIZE_T;
+
+typedef signed char INT8, *PINT8;
+typedef signed short INT16, *PINT16;
+typedef signed int INT32, *PINT32;
+typedef signed long long INT64, *PINT64;
+typedef unsigned char UINT8, *PUINT8;
+typedef unsigned short UINT16, *PUINT16;
+typedef unsigned int UINT32, *PUINT32;
+typedef unsigned long long UINT64, *PUINT64;
+
+typedef unsigned char UCHAR;
+typedef unsigned short USHORT;
+typedef unsigned long ULONG;
+
+typedef char CHAR;
+typedef short SHORT;
+typedef long LONG;
+typedef int INT;
+
+# define PLAT_SUCCESS 0
+# define PLAT_FAIL -1
+
+#endif
diff --git a/hyperdbg/include/platform/kernel/code/PlatformMem.c b/hyperdbg/include/platform/kernel/code/PlatformMem.c
index d47561ee..b385aceb 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformMem.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformMem.c
@@ -11,8 +11,10 @@
* @copyright This project is released under the GNU Public License v3.
*
*/
-
+// #ifdef _WIN32
#include "pch.h"
+// #endif
+
#include "../header/PlatformMem.h"
/////////////////////////////////////////////////
@@ -29,7 +31,7 @@
*/
PVOID
PlatformAllocateMemory(
- PLAT_SIZE Size)
+ SIZE_T Size)
{
#ifdef _WIN32
PVOID Result = ExAllocatePool2(
@@ -86,10 +88,10 @@ PlatformFreeMemory(
*/
PLAT_STATUS
PlatformWriteMemory(
- PVOID Process,
- PVOID Address, // Destination
- PVOID Buffer, // Source
- PLAT_SIZE Size)
+ PVOID Process,
+ PVOID Address, // Destination
+ PVOID Buffer, // Source
+ SIZE_T Size)
{
// Process argument currently unused (local copy)
(void)Process;
@@ -113,9 +115,9 @@ PlatformWriteMemory(
*/
VOID
PlatformSetMemory(
- PVOID Destination,
- int Value,
- PLAT_SIZE Size)
+ PVOID Destination,
+ int Value,
+ SIZE_T Size)
{
if (!Destination)
return;
@@ -140,7 +142,7 @@ PlatformSetMemory(
* @return PVOID Pointer to memory or NULL.
*/
PVOID
-PlatformMemAllocateContiguousZeroedMemory(PLAT_SIZE NumberOfBytes)
+PlatformMemAllocateContiguousZeroedMemory(SIZE_T NumberOfBytes)
{
#ifdef _WIN32
PVOID Result = NULL;
@@ -164,7 +166,7 @@ PlatformMemAllocateContiguousZeroedMemory(PLAT_SIZE NumberOfBytes)
* @return PVOID Pointer to memory.
*/
PVOID
-PlatformMemAllocateNonPagedPool(PLAT_SIZE NumberOfBytes)
+PlatformMemAllocateNonPagedPool(SIZE_T NumberOfBytes)
{
#ifdef _WIN32
return ExAllocatePool2(
@@ -183,7 +185,7 @@ PlatformMemAllocateNonPagedPool(PLAT_SIZE NumberOfBytes)
* @return PVOID Pointer to memory.
*/
PVOID
-PlatformMemAllocateNonPagedPoolWithQuota(PLAT_SIZE NumberOfBytes)
+PlatformMemAllocateNonPagedPoolWithQuota(SIZE_T NumberOfBytes)
{
#ifdef _WIN32
// POOL_FLAG_USE_QUOTA is used with ExAllocatePool2
@@ -204,7 +206,7 @@ PlatformMemAllocateNonPagedPoolWithQuota(PLAT_SIZE NumberOfBytes)
* @return PVOID Pointer to memory.
*/
PVOID
-PlatformMemAllocateZeroedNonPagedPool(PLAT_SIZE NumberOfBytes)
+PlatformMemAllocateZeroedNonPagedPool(SIZE_T NumberOfBytes)
{
#ifdef _WIN32
PVOID Result = ExAllocatePool2(
diff --git a/hyperdbg/include/platform/kernel/header/PlatformMem.h b/hyperdbg/include/platform/kernel/header/PlatformMem.h
index d062b5d7..4a7edcd2 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformMem.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformMem.h
@@ -20,66 +20,54 @@
PLAT_STATUS
PlatformReadMemory(
- PVOID Process,
- PVOID Address,
- PVOID Buffer,
- PLAT_SIZE Size);
+ PVOID Process,
+ PVOID Address,
+ PVOID Buffer,
+ SIZE_T Size);
PLAT_STATUS
PlatformWriteMemory(
- PVOID Process,
- PVOID Address,
- PVOID Buffer,
- PLAT_SIZE Size);
+ PVOID Process,
+ PVOID Address,
+ PVOID Buffer,
+ SIZE_T Size);
PVOID
-PlatformAllocMemory(
- PLAT_SIZE Size);
+PlatformAllocMemory(SIZE_T Size);
VOID
-PlatformFreeMemory(
- PVOID Memory);
+PlatformFreeMemory(PVOID Memory);
PVOID
-PlatformMemAllocateContiguousZeroedMemory(
- PLAT_SIZE NumberOfBytes);
+PlatformMemAllocateContiguousZeroedMemory(SIZE_T NumberOfBytes);
PVOID
-PlatformMemAllocateNonPagedPool(
- PLAT_SIZE NumberOfBytes);
+PlatformMemAllocateNonPagedPool(SIZE_T NumberOfBytes);
PVOID
-PlatformMemAllocateNonPagedPoolWithQuota(
- PLAT_SIZE NumberOfBytes);
+PlatformMemAllocateNonPagedPoolWithQuota(SIZE_T NumberOfBytes);
PVOID
-PlatformMemAllocateZeroedNonPagedPool(
- PLAT_SIZE NumberOfBytes);
+PlatformMemAllocateZeroedNonPagedPool(SIZE_T NumberOfBytes);
PVOID
-PlatformMemFreePool(
- PVOID BufferAddress);
+PlatformMemFreePool(PVOID BufferAddress);
//////////////////////////////////////////////////
// Backward-compatible / legacy functions //
//////////////////////////////////////////////////
PVOID
-PlatformMemAllocateContiguousZeroedMemory(
- PLAT_SIZE NumberOfBytes);
+PlatformMemAllocateContiguousZeroedMemory(SIZE_T NumberOfBytes);
PVOID
-PlatformMemAllocateNonPagedPool(
- PLAT_SIZE NumberOfBytes);
+PlatformMemAllocateNonPagedPool(SIZE_T NumberOfBytes);
PVOID
-PlatformMemAllocateNonPagedPoolWithQuota(
- PLAT_SIZE NumberOfBytes);
+PlatformMemAllocateNonPagedPoolWithQuota(SIZE_T NumberOfBytes);
PVOID
-PlatformMemAllocateZeroedNonPagedPool(
- PLAT_SIZE NumberOfBytes);
+PlatformMemAllocateZeroedNonPagedPool(SIZE_T NumberOfBytes);
PVOID
-PlatformMemFreePool(
- PVOID BufferAddress);
+PlatformMemFreePool(PVOID BufferAddress);
diff --git a/hyperdbg/include/platform/kernel/header/PlatformTypes.h b/hyperdbg/include/platform/kernel/header/PlatformTypes.h
index 122404c1..2d22ccf9 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformTypes.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformTypes.h
@@ -23,37 +23,15 @@
typedef PVOID PLAT_PTR;
typedef ULONG PLAT_U32;
typedef ULONGLONG PLAT_U64;
-typedef SIZE_T PLAT_SIZE;
+typedef SIZE_T SIZE_T;
typedef NTSTATUS PLAT_STATUS;
# define PLAT_SUCCESS STATUS_SUCCESS
# define PLAT_FAIL STATUS_UNSUCCESSFUL
#else // Linux Kernel
-# include
-# include
-# include
-# include
+# include "../../general/header/GeneralTypes.h"
-typedef void VOID;
-typedef void * PVOID;
-typedef u32 UINT32;
-typedef u32 PLAT_U32;
-typedef u64 UINT64;
-typedef size_t PLAT_SIZE;
-typedef long PLAT_STATUS;
-
-// typedef signed char INT8, *PINT8;
-// typedef signed short INT16, *PINT16;
-// typedef signed int INT32, *PINT32;
-// typedef signed __int64 INT64, *PINT64;
-// typedef unsigned char UINT8, *PUINT8;
-// typedef unsigned short UINT16, *PUINT16;
-// typedef unsigned int UINT32, *PUINT32;
-// typedef unsigned __int64 UINT64, *PUINT64;
-
-# define PLAT_SUCCESS 0
-# define PLAT_FAIL -1
#endif
//////////////////////////////////////////////////
@@ -61,13 +39,13 @@ typedef long PLAT_STATUS;
//////////////////////////////////////////////////
PVOID
-PlatformAllocateMemory(PLAT_SIZE Size);
+PlatformAllocateMemory(SIZE_T Size);
VOID
PlatformFreeMemory(PVOID Memory);
PLAT_STATUS
-PlatformWriteMemory(PVOID Process, PVOID Address, PVOID Buffer, PLAT_SIZE Size);
+PlatformWriteMemory(PVOID Process, PVOID Address, PVOID Buffer, SIZE_T Size);
VOID
-PlatformSetMemory(PVOID Destination, int Value, PLAT_SIZE Size);
+PlatformSetMemory(PVOID Destination, int Value, SIZE_T Size);
diff --git a/hyperdbg/include/platform/kernel/header/pch.h b/hyperdbg/include/platform/kernel/header/pch.h
deleted file mode 100644
index b49f0338..00000000
--- a/hyperdbg/include/platform/kernel/header/pch.h
+++ /dev/null
@@ -1 +0,0 @@
-// Empty pch.h for Linux
diff --git a/hyperdbg/linux/mock/mock.c b/hyperdbg/linux/mock/mock.c
index baf486ec..d4dd6fc8 100644
--- a/hyperdbg/linux/mock/mock.c
+++ b/hyperdbg/linux/mock/mock.c
@@ -9,23 +9,20 @@
*
* @copyright This project is released under the GNU Public License v3.
*/
-
-#include
-#include
-#include "../../include/platform/kernel/header/PlatformMem.h"
+#include "pch.h"
/**
* @brief Global pointer to the allocated test buffer.
* @details Stores the address returned by PlatformAllocateMemory so it can be
* freed when the module unloads.
*/
-static PLAT_PTR g_AllocatedBuffer = NULL;
+static PVOID g_AllocatedBuffer = NULL;
/**
* @brief Size of the buffer to allocate during tests.
* @note Default size is 4096 bytes (1 page).
*/
-static PLAT_SIZE g_BufferSize = 4096;
+static SIZE_T g_BufferSize = 4096;
/**
* @brief Module initialization entry point.
@@ -40,7 +37,8 @@ static PLAT_SIZE g_BufferSize = 4096;
* - 0: Initialization successful.
* - -ENOMEM: Memory allocation failed.
*/
-static int __init mock_init(void)
+static int __init
+mock_init(void)
{
char source_data[] = "This is a test string from Linux kernel module";
@@ -55,7 +53,7 @@ static int __init mock_init(void)
// We pass NULL for 'Process' as the current implementation targets local kernel memory.
PlatformWriteMemory(NULL, g_AllocatedBuffer, source_data, sizeof(source_data));
- printk(KERN_INFO "Copied data: %s\n", (char*)g_AllocatedBuffer);
+ printk(KERN_INFO "Copied data: %s\n", (char *)g_AllocatedBuffer);
// 3. Zeroing (Set Memory)
PlatformSetMemory(g_AllocatedBuffer, 0, g_BufferSize);
@@ -73,12 +71,14 @@ static int __init mock_init(void)
*
* @return void
*/
-static void __exit mock_exit(void)
+static void __exit
+mock_exit(void)
{
printk(KERN_INFO "Mock module unloading\n");
// 4. Freeing
- if (g_AllocatedBuffer) {
+ if (g_AllocatedBuffer)
+ {
PlatformFreeMemory(g_AllocatedBuffer);
g_AllocatedBuffer = NULL; // Good practice to nullify after free
}
diff --git a/hyperdbg/linux/mock/pch.h b/hyperdbg/linux/mock/pch.h
new file mode 100644
index 00000000..b4b0a3ae
--- /dev/null
+++ b/hyperdbg/linux/mock/pch.h
@@ -0,0 +1,34 @@
+/**
+ * @file pch.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Pre-compiled headers for Linux mock
+ * @details
+ * @version 0.19
+ * @date 2026-04-27
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+
+//
+// Scope definitions
+//
+#define HYPERDBG_KERNEL_MODE
+#define HYPERDBG_LINUX
+
+//
+// General Linux driver headers
+//
+#include
+// #include
+
+//
+// General type headers
+//
+#include "../../include/platform/general/header/GeneralTypes.h"
+
+//
+// Platform headers
+//
+#include "../../include/platform/kernel/header/PlatformTypes.h"
+#include "../../include/platform/kernel/header/PlatformMem.h"
From f1f0e50e08b51b06c193ba00f3c91df7d8ffed9c Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 27 Apr 2026 23:23:01 +0200
Subject: [PATCH 146/323] create empty pch hearder for linux compiler
---
hyperdbg/hyperdbg.sln | 10 ++++++++++
.../include/platform/kernel/code/PlatformMem.c | 2 --
.../include/platform/kernel/header/PlatformMem.h | 12 ++++++++++++
.../include/platform/kernel/header/PlatformTypes.h | 14 +-------------
hyperdbg/include/platform/kernel/header/pch.h | 5 +++++
hyperdbg/linux/mock/pch.h | 2 +-
6 files changed, 29 insertions(+), 16 deletions(-)
create mode 100644 hyperdbg/include/platform/kernel/header/pch.h
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 155bad65..47760aba 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -156,6 +156,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{AA41FF
ProjectSection(SolutionItems) = preProject
include\platform\kernel\header\Environment.h = include\platform\kernel\header\Environment.h
include\platform\kernel\header\Intrinsics.h = include\platform\kernel\header\Intrinsics.h
+ include\platform\kernel\header\pch.h = include\platform\kernel\header\pch.h
include\platform\kernel\header\PlatformMem.h = include\platform\kernel\header\PlatformMem.h
include\platform\kernel\header\PlatformModuleInfo.h = include\platform\kernel\header\PlatformModuleInfo.h
include\platform\kernel\header\PlatformTypes.h = include\platform\kernel\header\PlatformTypes.h
@@ -246,6 +247,14 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{9E1A2F
include\platform\general\header\GeneralTypes.h = include\platform\general\header\GeneralTypes.h
EndProjectSection
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "linux", "linux", "{63D4BB7A-C404-4A35-A302-20034DD8BA77}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "mock", "mock", "{770B65D6-5307-478C-A9EB-3E4A64B67225}"
+ ProjectSection(SolutionItems) = preProject
+ linux\mock\mock.c = linux\mock\mock.c
+ linux\mock\pch.h = linux\mock\pch.h
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug|x64 = debug|x64
@@ -341,6 +350,7 @@ Global
{03550856-D63F-4069-87E1-8BF2F129DBE3} = {1997E4B6-FE49-4358-ADF1-CDDB5739508E}
{17652C16-00A0-40D4-A227-697E595DE053} = {9A711E36-8A78-4CE6-A34D-F681AF89A919}
{9E1A2FAF-696A-4CA7-8C2E-F6B80107A143} = {17652C16-00A0-40D4-A227-697E595DE053}
+ {770B65D6-5307-478C-A9EB-3E4A64B67225} = {63D4BB7A-C404-4A35-A302-20034DD8BA77}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1444BEC7-11CE-4CA6-B77C-5F98AC9BFAEB}
diff --git a/hyperdbg/include/platform/kernel/code/PlatformMem.c b/hyperdbg/include/platform/kernel/code/PlatformMem.c
index b385aceb..83488fe0 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformMem.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformMem.c
@@ -11,9 +11,7 @@
* @copyright This project is released under the GNU Public License v3.
*
*/
-// #ifdef _WIN32
#include "pch.h"
-// #endif
#include "../header/PlatformMem.h"
diff --git a/hyperdbg/include/platform/kernel/header/PlatformMem.h b/hyperdbg/include/platform/kernel/header/PlatformMem.h
index 4a7edcd2..b5502f30 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformMem.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformMem.h
@@ -18,6 +18,18 @@
// Functions //
//////////////////////////////////////////////////
+PVOID
+PlatformAllocateMemory(SIZE_T Size);
+
+VOID
+PlatformFreeMemory(PVOID Memory);
+
+PLAT_STATUS
+PlatformWriteMemory(PVOID Process, PVOID Address, PVOID Buffer, SIZE_T Size);
+
+VOID
+PlatformSetMemory(PVOID Destination, int Value, SIZE_T Size);
+
PLAT_STATUS
PlatformReadMemory(
PVOID Process,
diff --git a/hyperdbg/include/platform/kernel/header/PlatformTypes.h b/hyperdbg/include/platform/kernel/header/PlatformTypes.h
index 2d22ccf9..d3fa625e 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformTypes.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformTypes.h
@@ -1,5 +1,5 @@
/**
- * @file PlatformMem.h
+ * @file PlatformTypes.h
* @author Alireza Moradi (Alish)
* @brief Cross platform types definitions
*
@@ -37,15 +37,3 @@ typedef NTSTATUS PLAT_STATUS;
//////////////////////////////////////////////////
// Prototypes //
//////////////////////////////////////////////////
-
-PVOID
-PlatformAllocateMemory(SIZE_T Size);
-
-VOID
-PlatformFreeMemory(PVOID Memory);
-
-PLAT_STATUS
-PlatformWriteMemory(PVOID Process, PVOID Address, PVOID Buffer, SIZE_T Size);
-
-VOID
-PlatformSetMemory(PVOID Destination, int Value, SIZE_T Size);
diff --git a/hyperdbg/include/platform/kernel/header/pch.h b/hyperdbg/include/platform/kernel/header/pch.h
new file mode 100644
index 00000000..8d636576
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/pch.h
@@ -0,0 +1,5 @@
+//
+// DO NOT DELETE OR INCLUE THIS FILE
+//
+// It is used to tell the Linux compiler that the header "pch.h" is empty while it is used within Windows MSVC compiler
+//
diff --git a/hyperdbg/linux/mock/pch.h b/hyperdbg/linux/mock/pch.h
index b4b0a3ae..101c426f 100644
--- a/hyperdbg/linux/mock/pch.h
+++ b/hyperdbg/linux/mock/pch.h
@@ -30,5 +30,5 @@
//
// Platform headers
//
-#include "../../include/platform/kernel/header/PlatformTypes.h"
+#include "../../include/platform/general/header/GeneralTypes.h"
#include "../../include/platform/kernel/header/PlatformMem.h"
From dc085fbe2ad339bb31bdf85da5a380e947471895 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 27 Apr 2026 23:55:04 +0200
Subject: [PATCH 147/323] remove PlatformTypes and merge it to GeneralTypes
---
hyperdbg/hyperdbg.sln | 1 -
hyperdbg/hyperevade/header/pch.h | 1 +
hyperdbg/hyperhv/pch.h | 1 +
hyperdbg/hyperkd/header/pch.h | 1 +
hyperdbg/hyperlog/header/pch.h | 1 +
hyperdbg/hypertrace/header/pch.h | 1 +
.../platform/general/header/GeneralTypes.h | 2 +
.../platform/kernel/header/PlatformMem.h | 3 +-
.../platform/kernel/header/PlatformTypes.h | 39 -------------------
9 files changed, 9 insertions(+), 41 deletions(-)
delete mode 100644 hyperdbg/include/platform/kernel/header/PlatformTypes.h
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 47760aba..ebf6650e 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -159,7 +159,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{AA41FF
include\platform\kernel\header\pch.h = include\platform\kernel\header\pch.h
include\platform\kernel\header\PlatformMem.h = include\platform\kernel\header\PlatformMem.h
include\platform\kernel\header\PlatformModuleInfo.h = include\platform\kernel\header\PlatformModuleInfo.h
- include\platform\kernel\header\PlatformTypes.h = include\platform\kernel\header\PlatformTypes.h
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{4BF590C3-1032-4DD2-BF87-BB9E5781977C}"
diff --git a/hyperdbg/hyperevade/header/pch.h b/hyperdbg/hyperevade/header/pch.h
index c03d3f2b..5bf2f394 100644
--- a/hyperdbg/hyperevade/header/pch.h
+++ b/hyperdbg/hyperevade/header/pch.h
@@ -74,6 +74,7 @@
//
// Platform independent headers
//
+#include "platform/general/header/GeneralTypes.h"
#include "platform/kernel/header/PlatformMem.h"
//
diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h
index 04f45fca..beaea488 100644
--- a/hyperdbg/hyperhv/pch.h
+++ b/hyperdbg/hyperhv/pch.h
@@ -60,6 +60,7 @@
//
// Platform independent headers
//
+#include "platform/general/header/GeneralTypes.h"
#include "platform/kernel/header/PlatformMem.h"
//
diff --git a/hyperdbg/hyperkd/header/pch.h b/hyperdbg/hyperkd/header/pch.h
index 8c7fbe73..878ed84e 100644
--- a/hyperdbg/hyperkd/header/pch.h
+++ b/hyperdbg/hyperkd/header/pch.h
@@ -84,6 +84,7 @@
//
// Platform independent headers
//
+#include "platform/general/header/GeneralTypes.h"
#include "platform/kernel/header/PlatformMem.h"
//
diff --git a/hyperdbg/hyperlog/header/pch.h b/hyperdbg/hyperlog/header/pch.h
index d9053cff..d7d70044 100644
--- a/hyperdbg/hyperlog/header/pch.h
+++ b/hyperdbg/hyperlog/header/pch.h
@@ -48,4 +48,5 @@
//
// Platform independent headers
//
+#include "platform/general/header/GeneralTypes.h"
#include "platform/kernel/header/PlatformMem.h"
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index b92ac10b..52ffe3b7 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -55,6 +55,7 @@
//
// Platform independent headers
//
+#include "platform/general/header/GeneralTypes.h"
#include "platform/kernel/header/PlatformMem.h"
//
diff --git a/hyperdbg/include/platform/general/header/GeneralTypes.h b/hyperdbg/include/platform/general/header/GeneralTypes.h
index 2a4e86da..305ae8a9 100644
--- a/hyperdbg/include/platform/general/header/GeneralTypes.h
+++ b/hyperdbg/include/platform/general/header/GeneralTypes.h
@@ -17,6 +17,8 @@
#ifdef _WIN32
+typedef NTSTATUS PLAT_STATUS;
+
# define PLAT_SUCCESS STATUS_SUCCESS
# define PLAT_FAIL STATUS_UNSUCCESSFUL
diff --git a/hyperdbg/include/platform/kernel/header/PlatformMem.h b/hyperdbg/include/platform/kernel/header/PlatformMem.h
index b5502f30..9d16b207 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformMem.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformMem.h
@@ -12,7 +12,8 @@
*
*/
#pragma once
-#include "PlatformTypes.h"
+
+#include "../../general/header/GeneralTypes.h"
//////////////////////////////////////////////////
// Functions //
diff --git a/hyperdbg/include/platform/kernel/header/PlatformTypes.h b/hyperdbg/include/platform/kernel/header/PlatformTypes.h
deleted file mode 100644
index d3fa625e..00000000
--- a/hyperdbg/include/platform/kernel/header/PlatformTypes.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * @file PlatformTypes.h
- * @author Alireza Moradi (Alish)
- * @brief Cross platform types definitions
- *
- * @copyright This project is released under the GNU Public License v3.
- *
- */
-#pragma once
-
-//////////////////////////////////////////////////
-// Definitions //
-//////////////////////////////////////////////////
-
-#ifdef _WIN32
-# include
-# include "pch.h"
-// Define a Pool Tag for memory allocation (Required by ExAllocatePoolWithTag)
-# ifndef POOLTAG
-# define 0x48444247 // [H]yper[DBG] (HDBG)
-# endif
-
-typedef PVOID PLAT_PTR;
-typedef ULONG PLAT_U32;
-typedef ULONGLONG PLAT_U64;
-typedef SIZE_T SIZE_T;
-typedef NTSTATUS PLAT_STATUS;
-
-# define PLAT_SUCCESS STATUS_SUCCESS
-# define PLAT_FAIL STATUS_UNSUCCESSFUL
-
-#else // Linux Kernel
-# include "../../general/header/GeneralTypes.h"
-
-#endif
-
-//////////////////////////////////////////////////
-// Prototypes //
-//////////////////////////////////////////////////
From b35e0dd43c354f959ee1cc36cdb025cfaa94473a Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 28 Apr 2026 01:24:43 +0200
Subject: [PATCH 148/323] clearing the headers for Windows and Linux
---
.../user/hyperdbg_app/code/hyperdbg-app.cpp | 2 +-
examples/user/hyperdbg_app/header/pch.h | 2 +-
.../user/hyperdbg_app/hyperdbg_app.vcxproj | 1 -
.../hyperdbg_app/hyperdbg_app.vcxproj.filters | 3 -
hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp | 5 --
hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj | 3 -
.../hyperdbg-cli/hyperdbg-cli.vcxproj.filters | 5 --
hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj | 1 -
.../hyperdbg-test.vcxproj.filters | 3 -
hyperdbg/hyperdbg-test/pch.h | 2 +-
hyperdbg/hyperdbg.sln | 7 ++-
hyperdbg/hyperevade/header/pch.h | 6 +-
hyperdbg/hyperevade/hyperevade.vcxproj | 1 -
.../hyperevade/hyperevade.vcxproj.filters | 3 -
hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c | 8 +--
hyperdbg/hyperhv/hyperhv.vcxproj | 1 -
hyperdbg/hyperhv/hyperhv.vcxproj.filters | 3 -
hyperdbg/hyperhv/pch.h | 6 +-
hyperdbg/hyperkd/header/pch.h | 6 +-
hyperdbg/hyperkd/hyperkd.vcxproj | 1 -
hyperdbg/hyperkd/hyperkd.vcxproj.filters | 3 -
hyperdbg/hyperlog/header/pch.h | 6 +-
hyperdbg/hyperlog/hyperlog.vcxproj | 1 -
hyperdbg/hyperlog/hyperlog.vcxproj.filters | 3 -
hyperdbg/hypertrace/header/pch.h | 6 +-
hyperdbg/hypertrace/hypertrace.vcxproj | 1 -
.../hypertrace/hypertrace.vcxproj.filters | 3 -
.../include/platform/general/code/.gitkeep | 0
.../{kernel => general}/header/Environment.h | 9 ++-
.../platform/general/header/GeneralTypes.h | 12 +---
.../include/platform/kernel/code/Intrinsics.c | 2 -
.../platform/kernel/code/PlatformMem.c | 16 ++---
.../platform/kernel/header/PlatformMem.h | 61 +++++++------------
.../kernel/header/PlatformModuleInfo.h | 12 ++--
hyperdbg/include/platform/kernel/header/pch.h | 2 +-
.../platform/user/header/Environment.h | 32 ----------
hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 2 +-
hyperdbg/libhyperdbg/libhyperdbg.vcxproj | 1 -
.../libhyperdbg/libhyperdbg.vcxproj.filters | 3 -
hyperdbg/libhyperdbg/pch.h | 6 +-
hyperdbg/linux/mock/mock.c | 2 +-
hyperdbg/linux/mock/pch.h | 7 ++-
hyperdbg/script-engine/header/pch.h | 2 +-
hyperdbg/script-engine/script-engine.vcxproj | 1 -
.../script-engine.vcxproj.filters | 3 -
hyperdbg/symbol-parser/pch.h | 2 +-
hyperdbg/symbol-parser/symbol-parser.vcxproj | 1 -
.../symbol-parser.vcxproj.filters | 3 -
48 files changed, 80 insertions(+), 191 deletions(-)
create mode 100644 hyperdbg/include/platform/general/code/.gitkeep
rename hyperdbg/include/platform/{kernel => general}/header/Environment.h (83%)
delete mode 100644 hyperdbg/include/platform/user/header/Environment.h
diff --git a/examples/user/hyperdbg_app/code/hyperdbg-app.cpp b/examples/user/hyperdbg_app/code/hyperdbg-app.cpp
index b3a19c3d..2aedaa33 100644
--- a/examples/user/hyperdbg_app/code/hyperdbg-app.cpp
+++ b/examples/user/hyperdbg_app/code/hyperdbg-app.cpp
@@ -78,7 +78,7 @@ hyperdbg_load()
}
else
{
-#ifdef ENV_WINDOWS
+#ifdef HYPERDBG_ENV_WINDOWS
printf("vmx operation is not supported by your processor "
"(if you are using an Intel processor, it might be because VBS is not disabled!)\n");
#endif
diff --git a/examples/user/hyperdbg_app/header/pch.h b/examples/user/hyperdbg_app/header/pch.h
index 79cfe414..f62bfc90 100644
--- a/examples/user/hyperdbg_app/header/pch.h
+++ b/examples/user/hyperdbg_app/header/pch.h
@@ -15,7 +15,7 @@
//
// Environment headers
//
-#include "platform/user/header/Environment.h"
+#include "platform/general/header/Environment.h"
//
// Windows SDK headers
diff --git a/examples/user/hyperdbg_app/hyperdbg_app.vcxproj b/examples/user/hyperdbg_app/hyperdbg_app.vcxproj
index 9624c627..eecf0a79 100644
--- a/examples/user/hyperdbg_app/hyperdbg_app.vcxproj
+++ b/examples/user/hyperdbg_app/hyperdbg_app.vcxproj
@@ -11,7 +11,6 @@
-
diff --git a/examples/user/hyperdbg_app/hyperdbg_app.vcxproj.filters b/examples/user/hyperdbg_app/hyperdbg_app.vcxproj.filters
index 6e0f241b..8a2081a1 100644
--- a/examples/user/hyperdbg_app/hyperdbg_app.vcxproj.filters
+++ b/examples/user/hyperdbg_app/hyperdbg_app.vcxproj.filters
@@ -15,9 +15,6 @@
header
-
- header\platform
-
diff --git a/hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp b/hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp
index 926608ce..3126863d 100644
--- a/hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp
+++ b/hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp
@@ -10,11 +10,6 @@
*
*/
-//
-// Environment headers
-//
-#include "platform/user/header/Environment.h"
-
#include
#include
#include
diff --git a/hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj b/hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj
index c7a30489..b40055ce 100644
--- a/hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj
+++ b/hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj
@@ -143,9 +143,6 @@ copy "$(SolutionDir)miscellaneous\constants\pciid\pci.ids" "$(OutDir)constants\p
-
-
-
diff --git a/hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj.filters b/hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj.filters
index a9a66de5..7f812426 100644
--- a/hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj.filters
+++ b/hyperdbg/hyperdbg-cli/hyperdbg-cli.vcxproj.filters
@@ -17,9 +17,4 @@
code
-
-
- header\platform
-
-
\ No newline at end of file
diff --git a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
index 028bec76..f057ae68 100644
--- a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
+++ b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
@@ -112,7 +112,6 @@
-
diff --git a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters
index c8ed9a82..40086654 100644
--- a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters
+++ b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters
@@ -52,9 +52,6 @@
header
-
- header\platform
-
header
diff --git a/hyperdbg/hyperdbg-test/pch.h b/hyperdbg/hyperdbg-test/pch.h
index 3d4559f0..0e38771e 100644
--- a/hyperdbg/hyperdbg-test/pch.h
+++ b/hyperdbg/hyperdbg-test/pch.h
@@ -19,7 +19,7 @@ using namespace std;
//
// Environment headers
//
-#include "platform/user/header/Environment.h"
+#include "platform/general/header/Environment.h"
//
// General Headers
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index ebf6650e..c8efc4ce 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -154,7 +154,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{6498728B-D
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{AA41FFF1-A730-433E-8D26-13DA5B653825}"
ProjectSection(SolutionItems) = preProject
- include\platform\kernel\header\Environment.h = include\platform\kernel\header\Environment.h
include\platform\kernel\header\Intrinsics.h = include\platform\kernel\header\Intrinsics.h
include\platform\kernel\header\pch.h = include\platform\kernel\header\pch.h
include\platform\kernel\header\PlatformMem.h = include\platform\kernel\header\PlatformMem.h
@@ -165,7 +164,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{4BF590C3-1
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{DBE32379-8D5A-4454-A1B6-ACC407881898}"
ProjectSection(SolutionItems) = preProject
- include\platform\user\header\Environment.h = include\platform\user\header\Environment.h
+ include\platform\user\header\Windows.h = include\platform\user\header\Windows.h
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "user", "user", "{3C04357D-93B5-4472-94BB-8D22A1EB16DB}"
@@ -243,6 +242,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "general", "general", "{1765
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{9E1A2FAF-696A-4CA7-8C2E-F6B80107A143}"
ProjectSection(SolutionItems) = preProject
+ include\platform\general\header\Environment.h = include\platform\general\header\Environment.h
include\platform\general\header\GeneralTypes.h = include\platform\general\header\GeneralTypes.h
EndProjectSection
EndProject
@@ -254,6 +254,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "mock", "mock", "{770B65D6-5
linux\mock\pch.h = linux\mock\pch.h
EndProjectSection
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{848FE945-4F37-4B5B-98C8-F22CA3AA7184}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug|x64 = debug|x64
@@ -350,6 +352,7 @@ Global
{17652C16-00A0-40D4-A227-697E595DE053} = {9A711E36-8A78-4CE6-A34D-F681AF89A919}
{9E1A2FAF-696A-4CA7-8C2E-F6B80107A143} = {17652C16-00A0-40D4-A227-697E595DE053}
{770B65D6-5307-478C-A9EB-3E4A64B67225} = {63D4BB7A-C404-4A35-A302-20034DD8BA77}
+ {848FE945-4F37-4B5B-98C8-F22CA3AA7184} = {17652C16-00A0-40D4-A227-697E595DE053}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1444BEC7-11CE-4CA6-B77C-5F98AC9BFAEB}
diff --git a/hyperdbg/hyperevade/header/pch.h b/hyperdbg/hyperevade/header/pch.h
index 5bf2f394..262f2333 100644
--- a/hyperdbg/hyperevade/header/pch.h
+++ b/hyperdbg/hyperevade/header/pch.h
@@ -19,9 +19,9 @@
//
// Environment headers
//
-#include "platform/kernel/header/Environment.h"
+#include "platform/general/header/Environment.h"
-#ifdef ENV_WINDOWS
+#ifdef HYPERDBG_ENV_WINDOWS
//
// The DLL is flagged by antivirus software, since it contains anti-debugging and anti-hypervisor methods
@@ -37,7 +37,7 @@
# include
# include
-#endif // ENV_WINDOWS
+#endif // HYPERDBG_ENV_WINDOWS
//
// Scope definitions
diff --git a/hyperdbg/hyperevade/hyperevade.vcxproj b/hyperdbg/hyperevade/hyperevade.vcxproj
index be8f3e7a..933b9b39 100644
--- a/hyperdbg/hyperevade/hyperevade.vcxproj
+++ b/hyperdbg/hyperevade/hyperevade.vcxproj
@@ -114,7 +114,6 @@
-
diff --git a/hyperdbg/hyperevade/hyperevade.vcxproj.filters b/hyperdbg/hyperevade/hyperevade.vcxproj.filters
index f08b0282..3201aded 100644
--- a/hyperdbg/hyperevade/hyperevade.vcxproj.filters
+++ b/hyperdbg/hyperevade/hyperevade.vcxproj.filters
@@ -77,9 +77,6 @@
header
-
- header\platform
-
header\platform
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c b/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c
index eae93908..9698462c 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c
@@ -30,13 +30,13 @@ VmxAllocateVmxonRegion(VIRTUAL_MACHINE_STATE * VCpu)
UINT64 AlignedVmxonRegion;
UINT64 AlignedVmxonRegionPhysicalAddr;
-#ifdef ENV_WINDOWS
+#ifdef HYPERDBG_ENV_WINDOWS
//
// at IRQL > DISPATCH_LEVEL memory allocation routines don't work
//
if (KeGetCurrentIrql() > DISPATCH_LEVEL)
KeRaiseIrqlToDpcLevel();
-#endif // ENV_WINDOWS
+#endif // HYPERDBG_ENV_WINDOWS
//
// Allocating a 4-KByte Contiguous Memory region
@@ -109,13 +109,13 @@ VmxAllocateVmcsRegion(VIRTUAL_MACHINE_STATE * VCpu)
UINT64 AlignedVmcsRegion;
UINT64 AlignedVmcsRegionPhysicalAddr;
-#ifdef ENV_WINDOWS
+#ifdef HYPERDBG_ENV_WINDOWS
//
// at IRQL > DISPATCH_LEVEL memory allocation routines don't work
//
if (KeGetCurrentIrql() > DISPATCH_LEVEL)
KeRaiseIrqlToDpcLevel();
-#endif // ENV_WINDOWS
+#endif // HYPERDBG_ENV_WINDOWS
//
// Allocating a 4-KByte Contiguous Memory region
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj b/hyperdbg/hyperhv/hyperhv.vcxproj
index 6cea3038..42c6ffd4 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj
@@ -238,7 +238,6 @@
-
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj.filters b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
index 1344a050..c8239395 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj.filters
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
@@ -577,9 +577,6 @@
header\interface
-
- header\platform
-
header\platform
diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h
index beaea488..55611260 100644
--- a/hyperdbg/hyperhv/pch.h
+++ b/hyperdbg/hyperhv/pch.h
@@ -27,9 +27,9 @@
//
// Environment headers
//
-#include "platform/kernel/header/Environment.h"
+#include "platform/general/header/Environment.h"
-#ifdef ENV_WINDOWS
+#ifdef HYPERDBG_ENV_WINDOWS
//
// General WDK headers
@@ -39,7 +39,7 @@
# include
# include
-#endif // ENV_WINDOWS
+#endif // HYPERDBG_ENV_WINDOWS
//
// Definition of Intel primitives (External header)
diff --git a/hyperdbg/hyperkd/header/pch.h b/hyperdbg/hyperkd/header/pch.h
index 878ed84e..56c3ba27 100644
--- a/hyperdbg/hyperkd/header/pch.h
+++ b/hyperdbg/hyperkd/header/pch.h
@@ -22,9 +22,9 @@
//
// Environment headers
//
-#include "platform/kernel/header/Environment.h"
+#include "platform/general/header/Environment.h"
-#ifdef ENV_WINDOWS
+#ifdef HYPERDBG_ENV_WINDOWS
//
// General WDK headers
@@ -33,7 +33,7 @@
# include
# include
-#endif // ENV_WINDOWS
+#endif // HYPERDBG_ENV_WINDOWS
//
// Definition of Intel primitives (External header)
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj b/hyperdbg/hyperkd/hyperkd.vcxproj
index 90b7e325..287a139b 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj
@@ -154,7 +154,6 @@
-
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj.filters b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
index db51aa3a..4e2eeb7d 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj.filters
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
@@ -395,9 +395,6 @@
header\debugger\meta-events
-
- header\platform
-
header\platform
diff --git a/hyperdbg/hyperlog/header/pch.h b/hyperdbg/hyperlog/header/pch.h
index d7d70044..ea05698e 100644
--- a/hyperdbg/hyperlog/header/pch.h
+++ b/hyperdbg/hyperlog/header/pch.h
@@ -19,9 +19,9 @@
//
// Environment headers
//
-#include "platform/kernel/header/Environment.h"
+#include "platform/general/header/Environment.h"
-#ifdef ENV_WINDOWS
+#ifdef HYPERDBG_ENV_WINDOWS
//
// Windows defined functions
@@ -30,7 +30,7 @@
# include
# include
-#endif // ENV_WINDOWS
+#endif // HYPERDBG_ENV_WINDOWS
//
// Scope definitions
diff --git a/hyperdbg/hyperlog/hyperlog.vcxproj b/hyperdbg/hyperlog/hyperlog.vcxproj
index 24c1e098..189b0dd0 100644
--- a/hyperdbg/hyperlog/hyperlog.vcxproj
+++ b/hyperdbg/hyperlog/hyperlog.vcxproj
@@ -110,7 +110,6 @@
-
diff --git a/hyperdbg/hyperlog/hyperlog.vcxproj.filters b/hyperdbg/hyperlog/hyperlog.vcxproj.filters
index 4bd91367..0dba5ff5 100644
--- a/hyperdbg/hyperlog/hyperlog.vcxproj.filters
+++ b/hyperdbg/hyperlog/hyperlog.vcxproj.filters
@@ -52,9 +52,6 @@
header
-
- header\platform
-
header\platform
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 52ffe3b7..22739483 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -18,9 +18,9 @@
//
// Environment headers
//
-#include "platform/kernel/header/Environment.h"
+#include "platform/general/header/Environment.h"
-#ifdef ENV_WINDOWS
+#ifdef HYPERDBG_ENV_WINDOWS
//
// Windows defined functions
@@ -29,7 +29,7 @@
# include
# include
-#endif // ENV_WINDOWS
+#endif // HYPERDBG_ENV_WINDOWS
//
// Scope definitions
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index 6d1c6ffe..be929623 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -113,7 +113,6 @@
-
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
index 7454fc1b..e78b386d 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj.filters
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -91,9 +91,6 @@
header
-
- header\platform
-
header\platform
diff --git a/hyperdbg/include/platform/general/code/.gitkeep b/hyperdbg/include/platform/general/code/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/hyperdbg/include/platform/kernel/header/Environment.h b/hyperdbg/include/platform/general/header/Environment.h
similarity index 83%
rename from hyperdbg/include/platform/kernel/header/Environment.h
rename to hyperdbg/include/platform/general/header/Environment.h
index fe306852..6b1cc80a 100644
--- a/hyperdbg/include/platform/kernel/header/Environment.h
+++ b/hyperdbg/include/platform/general/header/Environment.h
@@ -18,15 +18,14 @@
//
// Check for platform
//
-
#if defined(_WIN32) || defined(_WIN64)
-# define ENV_WINDOWS
+# define HYPERDBG_ENV_WINDOWS
#elif defined(__linux__)
-# error "This code cannot compile on Linux yet"
-# define ENV_LINUX
+// # error "This code cannot compile on Linux yet"
+# define HYPERDBG_ENV_LINUX
#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
# error "This code cannot compile on BSD yet"
-# define ENV_BSD
+# define HYPERDBG_ENV_BSD
#else
# error "This code cannot compile on non-Windows, non-Linux, and non-BSD platforms"
#endif
diff --git a/hyperdbg/include/platform/general/header/GeneralTypes.h b/hyperdbg/include/platform/general/header/GeneralTypes.h
index 305ae8a9..8e94ca97 100644
--- a/hyperdbg/include/platform/general/header/GeneralTypes.h
+++ b/hyperdbg/include/platform/general/header/GeneralTypes.h
@@ -15,19 +15,11 @@
// Types //
//////////////////////////////////////////////////
-#ifdef _WIN32
+#ifdef _WIN32 // Windows
-typedef NTSTATUS PLAT_STATUS;
+#elif defined(__linux__) // Linux
-# define PLAT_SUCCESS STATUS_SUCCESS
-# define PLAT_FAIL STATUS_UNSUCCESSFUL
-
-#else // Linux
-
-# include
# include
-# include
-# include
typedef long PLAT_STATUS;
diff --git a/hyperdbg/include/platform/kernel/code/Intrinsics.c b/hyperdbg/include/platform/kernel/code/Intrinsics.c
index 7237049b..fd35b5dc 100644
--- a/hyperdbg/include/platform/kernel/code/Intrinsics.c
+++ b/hyperdbg/include/platform/kernel/code/Intrinsics.c
@@ -9,6 +9,4 @@
* @copyright This project is released under the GNU Public License v3.
*
*/
-
#include "pch.h"
-#include "../header/PlatformMem.h"
diff --git a/hyperdbg/include/platform/kernel/code/PlatformMem.c b/hyperdbg/include/platform/kernel/code/PlatformMem.c
index 83488fe0..e3f75db8 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformMem.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformMem.c
@@ -13,7 +13,9 @@
*/
#include "pch.h"
-#include "../header/PlatformMem.h"
+#if defined(__linux__)
+# include "../header/PlatformMem.h"
+#endif // defined(__linux__)
/////////////////////////////////////////////////
/// ... New Unified API ...
@@ -82,27 +84,19 @@ PlatformFreeMemory(
* @param Address Destination address.
* @param Buffer Source buffer.
* @param Size Number of bytes to copy.
- * @return PLAT_STATUS PLAT_SUCCESS or PLAT_FAIL.
+ * @return VOID
*/
-PLAT_STATUS
+VOID
PlatformWriteMemory(
- PVOID Process,
PVOID Address, // Destination
PVOID Buffer, // Source
SIZE_T Size)
{
- // Process argument currently unused (local copy)
- (void)Process;
-
- if (!Address || !Buffer)
- return PLAT_FAIL;
-
#ifdef _WIN32
RtlCopyMemory(Address, Buffer, Size);
#else
memcpy(Address, Buffer, Size);
#endif
- return PLAT_SUCCESS;
}
/**
diff --git a/hyperdbg/include/platform/kernel/header/PlatformMem.h b/hyperdbg/include/platform/kernel/header/PlatformMem.h
index 9d16b207..8c165ca1 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformMem.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformMem.h
@@ -13,62 +13,43 @@
*/
#pragma once
-#include "../../general/header/GeneralTypes.h"
+#if defined(__linux__)
+# include "../../general/header/GeneralTypes.h"
+#endif // defined(__linux__)
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
-PVOID
-PlatformAllocateMemory(SIZE_T Size);
-
VOID
PlatformFreeMemory(PVOID Memory);
-PLAT_STATUS
-PlatformWriteMemory(PVOID Process, PVOID Address, PVOID Buffer, SIZE_T Size);
+VOID
+PlatformWriteMemory(PVOID Address, PVOID Buffer, SIZE_T Size);
VOID
PlatformSetMemory(PVOID Destination, int Value, SIZE_T Size);
-PLAT_STATUS
-PlatformReadMemory(
- PVOID Process,
- PVOID Address,
- PVOID Buffer,
- SIZE_T Size);
-
-PLAT_STATUS
-PlatformWriteMemory(
- PVOID Process,
- PVOID Address,
- PVOID Buffer,
- SIZE_T Size);
-
-PVOID
-PlatformAllocMemory(SIZE_T Size);
-
VOID
PlatformFreeMemory(PVOID Memory);
PVOID
-PlatformMemAllocateContiguousZeroedMemory(SIZE_T NumberOfBytes);
-
-PVOID
-PlatformMemAllocateNonPagedPool(SIZE_T NumberOfBytes);
-
-PVOID
-PlatformMemAllocateNonPagedPoolWithQuota(SIZE_T NumberOfBytes);
-
-PVOID
-PlatformMemAllocateZeroedNonPagedPool(SIZE_T NumberOfBytes);
-
-PVOID
-PlatformMemFreePool(PVOID BufferAddress);
-
-//////////////////////////////////////////////////
-// Backward-compatible / legacy functions //
-//////////////////////////////////////////////////
+PlatformAllocateMemory(SIZE_T Size);
+
+PVOID
+PlatformMemAllocateContiguousZeroedMemory(SIZE_T NumberOfBytes);
+
+PVOID
+PlatformMemAllocateNonPagedPool(SIZE_T NumberOfBytes);
+
+PVOID
+PlatformMemAllocateNonPagedPoolWithQuota(SIZE_T NumberOfBytes);
+
+PVOID
+PlatformMemAllocateZeroedNonPagedPool(SIZE_T NumberOfBytes);
+
+PVOID
+PlatformMemFreePool(PVOID BufferAddress);
PVOID
PlatformMemAllocateContiguousZeroedMemory(SIZE_T NumberOfBytes);
diff --git a/hyperdbg/include/platform/kernel/header/PlatformModuleInfo.h b/hyperdbg/include/platform/kernel/header/PlatformModuleInfo.h
index 4d4693ef..5f83f048 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformModuleInfo.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformModuleInfo.h
@@ -1,13 +1,17 @@
// PlatformModuleInfo.h
-#ifndef MODULE_INFO_H
-#define MODULE_INFO_H
+#if defined(__linux__)
-#include
+# ifndef MODULE_INFO_H
+# define MODULE_INFO_H
+
+# include
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Alish");
MODULE_DESCRIPTION("Linux Kernel module Mock");
MODULE_VERSION("0.1");
-#endif // _MODULE_INFO_H_
+# endif // _MODULE_INFO_H_
+
+#endif // defined(__linux__)
diff --git a/hyperdbg/include/platform/kernel/header/pch.h b/hyperdbg/include/platform/kernel/header/pch.h
index 8d636576..3111fda3 100644
--- a/hyperdbg/include/platform/kernel/header/pch.h
+++ b/hyperdbg/include/platform/kernel/header/pch.h
@@ -1,5 +1,5 @@
//
-// DO NOT DELETE OR INCLUE THIS FILE
+// DO NOT DELETE OR INCLDUE THIS FILE
//
// It is used to tell the Linux compiler that the header "pch.h" is empty while it is used within Windows MSVC compiler
//
diff --git a/hyperdbg/include/platform/user/header/Environment.h b/hyperdbg/include/platform/user/header/Environment.h
deleted file mode 100644
index fe306852..00000000
--- a/hyperdbg/include/platform/user/header/Environment.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * @file Environment.h
- * @author Behrooz Abbassi (BehroozAbbassi@hyperdbg.org)
- * @brief The running environment of HyperDbg
- * @details
- * @version 0.1
- * @date 2022-01-17
- *
- * @copyright This project is released under the GNU Public License v3.
- *
- */
-#pragma once
-
-//////////////////////////////////////////////////
-// Definitions //
-//////////////////////////////////////////////////
-
-//
-// Check for platform
-//
-
-#if defined(_WIN32) || defined(_WIN64)
-# define ENV_WINDOWS
-#elif defined(__linux__)
-# error "This code cannot compile on Linux yet"
-# define ENV_LINUX
-#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
-# error "This code cannot compile on BSD yet"
-# define ENV_BSD
-#else
-# error "This code cannot compile on non-Windows, non-Linux, and non-BSD platforms"
-#endif
diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
index c41505eb..3ed91633 100644
--- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
+++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
@@ -893,7 +893,7 @@ HyperDbgLoadVmmModule()
}
else
{
-#ifdef ENV_WINDOWS
+#ifdef HYPERDBG_ENV_WINDOWS
ShowMessages("vmx operation is not supported by your processor "
"(if you are using an Intel processor, it might be because VBS is not disabled!)\n");
#endif
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
index 4f8ae89b..e2f1b9c9 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
@@ -127,7 +127,6 @@
-
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
index 2b471595..e1641543 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
@@ -149,9 +149,6 @@
header
-
- header\platform
-
header
diff --git a/hyperdbg/libhyperdbg/pch.h b/hyperdbg/libhyperdbg/pch.h
index 73d36ae5..632ea77a 100644
--- a/hyperdbg/libhyperdbg/pch.h
+++ b/hyperdbg/libhyperdbg/pch.h
@@ -14,7 +14,7 @@
//
// Environment headers
//
-#include "platform/user/header/Environment.h"
+#include "platform/general/header/Environment.h"
//
// Windows SDK headers
@@ -182,7 +182,7 @@ typedef const wchar_t *LPCWCHAR, *PCWCHAR;
// Libraries
//
-#ifdef ENV_WINDOWS
+#ifdef HYPERDBG_ENV_WINDOWS
# pragma comment(lib, "ntdll.lib")
@@ -207,4 +207,4 @@ typedef const wchar_t *LPCWCHAR, *PCWCHAR;
# pragma comment(lib, "Psapi.lib")
# pragma comment(lib, "Kernel32.lib")
-#endif // ENV_WINDOWS
+#endif // HYPERDBG_ENV_WINDOWS
diff --git a/hyperdbg/linux/mock/mock.c b/hyperdbg/linux/mock/mock.c
index d4dd6fc8..c7edf9b2 100644
--- a/hyperdbg/linux/mock/mock.c
+++ b/hyperdbg/linux/mock/mock.c
@@ -51,7 +51,7 @@ mock_init(void)
// 2. Copying (Write Memory)
// We pass NULL for 'Process' as the current implementation targets local kernel memory.
- PlatformWriteMemory(NULL, g_AllocatedBuffer, source_data, sizeof(source_data));
+ PlatformWriteMemory(g_AllocatedBuffer, source_data, sizeof(source_data));
printk(KERN_INFO "Copied data: %s\n", (char *)g_AllocatedBuffer);
diff --git a/hyperdbg/linux/mock/pch.h b/hyperdbg/linux/mock/pch.h
index 101c426f..86be3b9b 100644
--- a/hyperdbg/linux/mock/pch.h
+++ b/hyperdbg/linux/mock/pch.h
@@ -20,7 +20,11 @@
// General Linux driver headers
//
#include
-// #include
+
+//
+// Environment headers
+//
+#include "../../include/platform/general/header/Environment.h"
//
// General type headers
@@ -30,5 +34,4 @@
//
// Platform headers
//
-#include "../../include/platform/general/header/GeneralTypes.h"
#include "../../include/platform/kernel/header/PlatformMem.h"
diff --git a/hyperdbg/script-engine/header/pch.h b/hyperdbg/script-engine/header/pch.h
index 4fd8d23c..2b4f8f30 100644
--- a/hyperdbg/script-engine/header/pch.h
+++ b/hyperdbg/script-engine/header/pch.h
@@ -19,7 +19,7 @@
//
// Environment headers
//
-#include "platform/user/header/Environment.h"
+#include "platform/general/header/Environment.h"
//
// Exclude rarely-used stuff from Windows headers
diff --git a/hyperdbg/script-engine/script-engine.vcxproj b/hyperdbg/script-engine/script-engine.vcxproj
index e88ad9fe..ea3840ce 100644
--- a/hyperdbg/script-engine/script-engine.vcxproj
+++ b/hyperdbg/script-engine/script-engine.vcxproj
@@ -128,7 +128,6 @@ exit /b 0
-
diff --git a/hyperdbg/script-engine/script-engine.vcxproj.filters b/hyperdbg/script-engine/script-engine.vcxproj.filters
index fada6e95..b88fd0b9 100644
--- a/hyperdbg/script-engine/script-engine.vcxproj.filters
+++ b/hyperdbg/script-engine/script-engine.vcxproj.filters
@@ -32,9 +32,6 @@
header
-
- header\platform
-
header
diff --git a/hyperdbg/symbol-parser/pch.h b/hyperdbg/symbol-parser/pch.h
index 3f182860..53c113fb 100644
--- a/hyperdbg/symbol-parser/pch.h
+++ b/hyperdbg/symbol-parser/pch.h
@@ -21,7 +21,7 @@ using namespace std;
//
// Environment headers
//
-#include "platform/user/header/Environment.h"
+#include "platform/general/header/Environment.h"
#include
#include
diff --git a/hyperdbg/symbol-parser/symbol-parser.vcxproj b/hyperdbg/symbol-parser/symbol-parser.vcxproj
index 1732405a..d1473bfa 100644
--- a/hyperdbg/symbol-parser/symbol-parser.vcxproj
+++ b/hyperdbg/symbol-parser/symbol-parser.vcxproj
@@ -108,7 +108,6 @@
-
diff --git a/hyperdbg/symbol-parser/symbol-parser.vcxproj.filters b/hyperdbg/symbol-parser/symbol-parser.vcxproj.filters
index 6aa34925..6fe3a39f 100644
--- a/hyperdbg/symbol-parser/symbol-parser.vcxproj.filters
+++ b/hyperdbg/symbol-parser/symbol-parser.vcxproj.filters
@@ -37,8 +37,5 @@
header
-
- header\platform
-
\ No newline at end of file
From c5ba5ccd899dd0d7eb0971a430ec5f52f6f9c74e Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 28 Apr 2026 14:39:54 +0200
Subject: [PATCH 149/323] compile HyperDbg SDK for Linux
---
hyperdbg/hyperhv/code/interface/Export.c | 4 +-
hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c | 2 +-
hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 4 +-
hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c | 2 +-
hyperdbg/hyperhv/code/vmm/vmx/Vmx.c | 2 +-
hyperdbg/hyperhv/header/vmm/vmx/Hv.h | 2 +-
hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h | 2 +-
hyperdbg/hyperhv/pch.h | 1 -
hyperdbg/hyperkd/header/pch.h | 1 -
hyperdbg/hyperlog/header/pch.h | 1 -
hyperdbg/hypertrace/code/lbr/Lbr.c | 16 +-
hyperdbg/hypertrace/header/pch.h | 1 -
hyperdbg/include/SDK/headers/BasicTypes.h | 90 +++++++++---
hyperdbg/include/SDK/headers/Constants.h | 46 +++---
hyperdbg/include/SDK/headers/DataTypes.h | 20 ++-
hyperdbg/include/SDK/headers/LbrDefinitions.h | 2 +-
.../include/SDK/headers/RequestStructures.h | 138 +++++++-----------
hyperdbg/include/SDK/modules/HyperTrace.h | 4 +-
.../platform/general/header/GeneralTypes.h | 5 -
hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 2 +-
hyperdbg/linux/mock/pch.h | 5 +
21 files changed, 185 insertions(+), 165 deletions(-)
diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c
index 649764d3..64e62c51 100644
--- a/hyperdbg/hyperhv/code/interface/Export.c
+++ b/hyperdbg/hyperhv/code/interface/Export.c
@@ -453,7 +453,7 @@ VmFuncSetDebugctlVmcallOnTargetCore(UINT64 Value)
}
/**
- * @brief Set the guest state of MSR_LBR_SELECT
+ * @brief Set the guest state of MSR_LEGACY_LBR_SELECT
* @param FilterOptions
*
* @return VOID
@@ -465,7 +465,7 @@ VmFuncSetLbrSelect(UINT64 FilterOptions)
}
/**
- * @brief Set the guest state of MSR_LBR_SELECT on the target core from VMCS using VMCALL
+ * @brief Set the guest state of MSR_LEGACY_LBR_SELECT on the target core from VMCS using VMCALL
* @param FilterOptions
*
* @return VOID
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c b/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
index 9201ca31..77756fd2 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
@@ -38,7 +38,7 @@ CrossVmcallSetDebugctlVmcallOnTargetCore(UINT64 Value)
}
/**
- * @brief Set the guest state of MSR_LBR_SELECT on the target core from VMCS using VMCALL
+ * @brief Set the guest state of MSR_LEGACY_LBR_SELECT on the target core from VMCS using VMCALL
* @param FilterOptions
*
* @return VOID
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
index 4699da72..95325dd9 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
@@ -1507,14 +1507,14 @@ HvSetDebugctl(UINT64 Value)
/**
* @brief Set LBR selector
* @details If VMM is active, this should be done in vmx-root, otherwise, it doesn't work
- * @param FilterOptions The value to write on MSR_LBR_SELECT
+ * @param FilterOptions The value to write on MSR_LEGACY_LBR_SELECT
*
* @return VOID
*/
VOID
HvSetLbrSelect(UINT64 FilterOptions)
{
- __writemsr(MSR_LBR_SELECT, FilterOptions);
+ __writemsr(MSR_LEGACY_LBR_SELECT, FilterOptions);
}
/**
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
index 97d8a788..a2389482 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
@@ -558,7 +558,7 @@ VmxVmcallHandler(VIRTUAL_MACHINE_STATE * VCpu,
case VMCALL_SET_MSR_LBR_SELECT:
{
//
- // Perform setting MSR_LBR_SELECT
+ // Perform setting MSR_LEGACY_LBR_SELECT
//
HvSetLbrSelect(OptionalParam1);
VmcallStatus = STATUS_SUCCESS;
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
index 6053f9d0..1f7ed6e2 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
@@ -1203,7 +1203,7 @@ VmxVmxoff(VIRTUAL_MACHINE_STATE * VCpu)
//
// Now that VMX is OFF, we have to unset vmx-enable bit on cr4
//
- __writecr4(__readcr4() & (~X86_CR4_VMXE));
+ __writecr4(__readcr4() & (~REG_CR4_VMXE));
}
/**
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
index 4b23ff43..412659ed 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
@@ -481,7 +481,7 @@ HvSetDebugctl(UINT64 Value);
/**
* @brief Set LBR selector
* @details If VMM is active, this should be done in vmx-root, otherwise, it doesn't work
- * @param FilterOptions The value to write on MSR_LBR_SELECT
+ * @param FilterOptions The value to write on MSR_LEGACY_LBR_SELECT
*
* @return VOID
*/
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h b/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
index acec4776..7b4af5b1 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
@@ -334,7 +334,7 @@
#define VMCALL_SET_VMCS_DEBUGCTL 0x00000033
/**
- * @brief VMCALL to set MSR_LBR_SELECT using WRMSR
+ * @brief VMCALL to set MSR_LEGACY_LBR_SELECT using WRMSR
*
*/
#define VMCALL_SET_MSR_LBR_SELECT 0x00000034
diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h
index 55611260..7f939959 100644
--- a/hyperdbg/hyperhv/pch.h
+++ b/hyperdbg/hyperhv/pch.h
@@ -60,7 +60,6 @@
//
// Platform independent headers
//
-#include "platform/general/header/GeneralTypes.h"
#include "platform/kernel/header/PlatformMem.h"
//
diff --git a/hyperdbg/hyperkd/header/pch.h b/hyperdbg/hyperkd/header/pch.h
index 56c3ba27..b6b331bc 100644
--- a/hyperdbg/hyperkd/header/pch.h
+++ b/hyperdbg/hyperkd/header/pch.h
@@ -84,7 +84,6 @@
//
// Platform independent headers
//
-#include "platform/general/header/GeneralTypes.h"
#include "platform/kernel/header/PlatformMem.h"
//
diff --git a/hyperdbg/hyperlog/header/pch.h b/hyperdbg/hyperlog/header/pch.h
index ea05698e..45be603f 100644
--- a/hyperdbg/hyperlog/header/pch.h
+++ b/hyperdbg/hyperlog/header/pch.h
@@ -48,5 +48,4 @@
//
// Platform independent headers
//
-#include "platform/general/header/GeneralTypes.h"
#include "platform/kernel/header/PlatformMem.h"
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 036aec6a..0d14adf4 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -176,7 +176,7 @@ LbrFlush()
//
//
- // Set LBR filter (MSR_LBR_SELECT) to 0 to capture all branch types (reset)
+ // Set LBR filter (MSR_LEGACY_LBR_SELECT) to 0 to capture all branch types (reset)
//
if (g_RunningOnHypervisorEnvironment)
{
@@ -189,21 +189,21 @@ LbrFlush()
if (IsOnVmxRootMode)
{
//
- // It is on VMX-root mode, run it directly to set the MSR_LBR_SELECT MSR value
+ // It is on VMX-root mode, run it directly to set the MSR_LEGACY_LBR_SELECT MSR value
//
g_Callbacks.VmFuncSetLbrSelect(0);
}
else
{
//
- // It is not on VMX-root mode, so we need to perform a VMCALL to set the MSR_LBR_SELECT MSR value on the target core
+ // It is not on VMX-root mode, so we need to perform a VMCALL to set the MSR_LEGACY_LBR_SELECT MSR value on the target core
//
g_Callbacks.VmFuncSetLbrSelectVmcallOnTargetCore(0);
}
}
else
{
- xwrmsr(MSR_LBR_SELECT, 0);
+ xwrmsr(MSR_LEGACY_LBR_SELECT, 0);
}
//
@@ -238,7 +238,7 @@ LbrStart(UINT64 FilterOptions)
}
//
- // Set LBR filter (MSR_LBR_SELECT) to selection mask
+ // Set LBR filter (MSR_LEGACY_LBR_SELECT) to selection mask
//
if (g_RunningOnHypervisorEnvironment)
{
@@ -251,21 +251,21 @@ LbrStart(UINT64 FilterOptions)
if (IsOnVmxRootMode)
{
//
- // It is on VMX-root mode, run it directly to set the MSR_LBR_SELECT MSR value
+ // It is on VMX-root mode, run it directly to set the MSR_LEGACY_LBR_SELECT MSR value
//
g_Callbacks.VmFuncSetLbrSelect(FilterOptions);
}
else
{
//
- // It is not on VMX-root mode, so we need to perform a VMCALL to set the MSR_LBR_SELECT MSR value on the target core
+ // It is not on VMX-root mode, so we need to perform a VMCALL to set the MSR_LEGACY_LBR_SELECT MSR value on the target core
//
g_Callbacks.VmFuncSetLbrSelectVmcallOnTargetCore(FilterOptions);
}
}
else
{
- xwrmsr(MSR_LBR_SELECT, FilterOptions);
+ xwrmsr(MSR_LEGACY_LBR_SELECT, FilterOptions);
}
//
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 22739483..9fa1eded 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -55,7 +55,6 @@
//
// Platform independent headers
//
-#include "platform/general/header/GeneralTypes.h"
#include "platform/kernel/header/PlatformMem.h"
//
diff --git a/hyperdbg/include/SDK/headers/BasicTypes.h b/hyperdbg/include/SDK/headers/BasicTypes.h
index 95e322f8..7e5f1236 100644
--- a/hyperdbg/include/SDK/headers/BasicTypes.h
+++ b/hyperdbg/include/SDK/headers/BasicTypes.h
@@ -11,43 +11,83 @@
*/
#pragma once
-#pragma warning(disable : 4201) // Suppress nameless struct/union warning
+#ifdef _WIN32 // Windows
+
+# pragma warning(disable : 4201) // Suppress nameless struct/union warning
+
+#endif
//////////////////////////////////////////////////
// Basic Datatypes //
//////////////////////////////////////////////////
typedef unsigned long long QWORD;
-typedef unsigned __int64 UINT64, *PUINT64;
-typedef unsigned long DWORD;
typedef int BOOL;
-typedef unsigned char BYTE;
-typedef unsigned short WORD;
-typedef int INT;
-typedef unsigned int UINT;
-typedef unsigned int * PUINT;
-typedef unsigned __int64 ULONG64, *PULONG64;
-typedef unsigned __int64 DWORD64, *PDWORD64;
-typedef char CHAR;
-typedef wchar_t WCHAR;
-#define VOID void
-typedef unsigned char UCHAR;
+typedef short SHORT;
+typedef long LONG;
+
typedef unsigned short USHORT;
typedef unsigned long ULONG;
-typedef UCHAR BOOLEAN; // winnt
-typedef BOOLEAN * PBOOLEAN; // winnt
+typedef char CHAR;
+typedef unsigned char UCHAR;
+typedef UCHAR BOOLEAN;
+typedef BOOLEAN * PBOOLEAN;
+
+typedef unsigned long DWORD;
+typedef unsigned long ULONG;
+typedef unsigned char BYTE;
+typedef unsigned short USHORT;
+typedef unsigned short WORD;
+typedef int INT;
+typedef unsigned int UINT;
+typedef unsigned int * PUINT;
+
+typedef int INT;
+typedef signed char INT8, *PINT8;
+typedef signed short INT16, *PINT16;
+typedef signed int INT32, *PINT32;
+
+typedef unsigned char UINT8, *PUINT8;
+typedef unsigned short UINT16, *PUINT16;
+typedef unsigned int UINT32, *PUINT32;
+
+typedef void * PVOID;
+
+#ifdef _WIN32 // Windows
-typedef signed char INT8, *PINT8;
-typedef signed short INT16, *PINT16;
-typedef signed int INT32, *PINT32;
typedef signed __int64 INT64, *PINT64;
-typedef unsigned char UINT8, *PUINT8;
-typedef unsigned short UINT16, *PUINT16;
-typedef unsigned int UINT32, *PUINT32;
typedef unsigned __int64 UINT64, *PUINT64;
+typedef unsigned __int64 ULONG64, *PULONG64;
+typedef unsigned __int64 DWORD64, *PDWORD64;
+typedef wchar_t WCHAR;
+
+#elif defined(__linux__) // Linux
+
+# include
+
+typedef void VOID;
+
+typedef size_t SIZE_T;
+
+typedef signed long long INT64, *PINT64;
+typedef unsigned long long UINT64, *PUINT64;
+
+typedef unsigned long long ULONG64, *PULONG64;
+typedef unsigned long long DWORD64, *PDWORD64;
+
+typedef UINT16 wchar_t;
+typedef wchar_t WCHAR;
+
+typedef PVOID HANDLE;
+typedef HANDLE * PHANDLE;
+
+typedef long long time_t;
+
+#endif
+
#define NULL_ZERO 0
#define NULL64_ZERO 0ull
@@ -63,6 +103,12 @@ typedef unsigned __int64 UINT64, *PUINT64;
#define SECOND_LOWER_8_BITS 0x000000000000ff00
#define UPPER_48_BITS_AND_LOWER_8_BITS 0xffffffffffff00ff
+#if defined(__linux__) // Linux
+
+# define MAX_PATH 260
+
+#endif
+
//
// DO NOT FUCKING TOUCH THIS STRUCTURE WITHOUT COORDINATION WITH SINA
//
diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h
index a32b1151..94a4252f 100644
--- a/hyperdbg/include/SDK/headers/Constants.h
+++ b/hyperdbg/include/SDK/headers/Constants.h
@@ -611,34 +611,34 @@ typedef enum _SEGMENT_REGISTERS
/**
* @brief Intel CPU flags in CR0
*/
-#define X86_CR0_PE 0x00000001 /* Enable Protected Mode (RW) */
-#define X86_CR0_MP 0x00000002 /* Monitor Coprocessor (RW) */
-#define X86_CR0_EM 0x00000004 /* Require FPU Emulation (RO) */
-#define X86_CR0_TS 0x00000008 /* Task Switched (RW) */
-#define X86_CR0_ET 0x00000010 /* Extension type (RO) */
-#define X86_CR0_NE 0x00000020 /* Numeric Error Reporting (RW) */
-#define X86_CR0_WP 0x00010000 /* Supervisor Write Protect (RW) */
-#define X86_CR0_AM 0x00040000 /* Alignment Checking (RW) */
-#define X86_CR0_NW 0x20000000 /* Not Write-Through (RW) */
-#define X86_CR0_CD 0x40000000 /* Cache Disable (RW) */
-#define X86_CR0_PG 0x80000000 /* Paging */
+#define REG_CR0_PE 0x00000001 /* Enable Protected Mode (RW) */
+#define REG_CR0_MP 0x00000002 /* Monitor Coprocessor (RW) */
+#define REG_CR0_EM 0x00000004 /* Require FPU Emulation (RO) */
+#define REG_CR0_TS 0x00000008 /* Task Switched (RW) */
+#define REG_CR0_ET 0x00000010 /* Extension type (RO) */
+#define REG_CR0_NE 0x00000020 /* Numeric Error Reporting (RW) */
+#define REG_CR0_WP 0x00010000 /* Supervisor Write Protect (RW) */
+#define REG_CR0_AM 0x00040000 /* Alignment Checking (RW) */
+#define REG_CR0_NW 0x20000000 /* Not Write-Through (RW) */
+#define REG_CR0_CD 0x40000000 /* Cache Disable (RW) */
+#define REG_CR0_PG 0x80000000 /* Paging */
/**
* @brief Intel CPU features in CR4
*
*/
-#define X86_CR4_VME 0x0001 /* enable vm86 extensions */
-#define X86_CR4_PVI 0x0002 /* virtual interrupts flag enable */
-#define X86_CR4_TSD 0x0004 /* disable time stamp at ipl 3 */
-#define X86_CR4_DE 0x0008 /* enable debugging extensions */
-#define X86_CR4_PSE 0x0010 /* enable page size extensions */
-#define X86_CR4_PAE 0x0020 /* enable physical address extensions */
-#define X86_CR4_MCE 0x0040 /* Machine check enable */
-#define X86_CR4_PGE 0x0080 /* enable global pages */
-#define X86_CR4_PCE 0x0100 /* enable performance counters at ipl 3 */
-#define X86_CR4_OSFXSR 0x0200 /* enable fast FPU save and restore */
-#define X86_CR4_OSXMMEXCPT 0x0400 /* enable unmasked SSE exceptions */
-#define X86_CR4_VMXE 0x2000 /* enable VMX */
+#define REG_CR4_VME 0x0001 /* enable vm86 extensions */
+#define REG_CR4_PVI 0x0002 /* virtual interrupts flag enable */
+#define REG_CR4_TSD 0x0004 /* disable time stamp at ipl 3 */
+#define REG_CR4_DE 0x0008 /* enable debugging extensions */
+#define REG_CR4_PSE 0x0010 /* enable page size extensions */
+#define REG_CR4_PAE 0x0020 /* enable physical address extensions */
+#define REG_CR4_MCE 0x0040 /* Machine check enable */
+#define REG_CR4_PGE 0x0080 /* enable global pages */
+#define REG_CR4_PCE 0x0100 /* enable performance counters at ipl 3 */
+#define REG_CR4_OSFXSR 0x0200 /* enable fast FPU save and restore */
+#define REG_CR4_OSXMMEXCPT 0x0400 /* enable unmasked SSE exceptions */
+#define REG_CR4_VMXE 0x2000 /* enable VMX */
/*
* @brief Segment register and corresponding GDT meaning in Windows
diff --git a/hyperdbg/include/SDK/headers/DataTypes.h b/hyperdbg/include/SDK/headers/DataTypes.h
index cc0df192..6f9db996 100644
--- a/hyperdbg/include/SDK/headers/DataTypes.h
+++ b/hyperdbg/include/SDK/headers/DataTypes.h
@@ -28,6 +28,24 @@ typedef enum _PAGING_LEVEL
PagingLevelPageMapLevel4
} PAGING_LEVEL;
+//////////////////////////////////////////////////
+// List Entries //
+//////////////////////////////////////////////////
+
+//
+// Doubly linked list structure. Can be used as either a list head, or
+// as link words.
+//
+#if defined(__linux__)
+
+typedef struct _LIST_ENTRY
+{
+ struct _LIST_ENTRY * Flink;
+ struct _LIST_ENTRY * Blink;
+} LIST_ENTRY, *PLIST_ENTRY;
+
+#endif // defined(__linux__)
+
//////////////////////////////////////////////////
// Pool Manager //
//////////////////////////////////////////////////
@@ -126,7 +144,7 @@ typedef int (*SendMessageWithParamCallback)(const char * Text);
* as a custom ShowMessages function (using shared buffer)
*
*/
-typedef int (*SendMessageWWithSharedBufferCallback)();
+typedef int (*SendMessageWithSharedBufferCallback)(VOID);
//////////////////////////////////////////////////
// Communications //
diff --git a/hyperdbg/include/SDK/headers/LbrDefinitions.h b/hyperdbg/include/SDK/headers/LbrDefinitions.h
index d8114cf0..6510de2d 100644
--- a/hyperdbg/include/SDK/headers/LbrDefinitions.h
+++ b/hyperdbg/include/SDK/headers/LbrDefinitions.h
@@ -18,7 +18,7 @@
/**
* @brief MSR address of LBR_SELECT, which is used to configure the LBR filtering options
*/
-#define MSR_LBR_SELECT 0x000001C8
+#define MSR_LEGACY_LBR_SELECT 0x000001C8
/*
* Intel LBR_SELECT bits
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 8db4ac97..e3a80d62 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -41,8 +41,7 @@ typedef struct _DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS
} DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS,
*PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS \
sizeof(DEBUGGER_VA2PA_AND_PA2VA_COMMANDS)
@@ -61,8 +60,8 @@ typedef struct _DEBUGGER_VA2PA_AND_PA2VA_COMMANDS
} DEBUGGER_VA2PA_AND_PA2VA_COMMANDS, *PDEBUGGER_VA2PA_AND_PA2VA_COMMANDS;
-/* ==============================================================================================
- */
+// ==============================================================================================
+
#define SIZEOF_DEBUGGER_PAGE_IN_REQUEST \
sizeof(DEBUGGER_PAGE_IN_REQUEST)
@@ -80,8 +79,7 @@ typedef struct _DEBUGGER_PAGE_IN_REQUEST
} DEBUGGER_PAGE_IN_REQUEST, *PDEBUGGER_PAGE_IN_REQUEST;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief different modes of reconstruct requests
@@ -122,8 +120,7 @@ typedef struct _REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST
} REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST, *PREVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGER_DT_COMMAND_OPTIONS \
sizeof(DEBUGGER_DT_COMMAND_OPTIONS)
@@ -144,8 +141,7 @@ typedef struct _DEBUGGER_DT_COMMAND_OPTIONS
} DEBUGGER_DT_COMMAND_OPTIONS, *PDEBUGGER_DT_COMMAND_OPTIONS;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief different types of prealloc requests
@@ -179,8 +175,7 @@ typedef struct _DEBUGGER_PREALLOC_COMMAND
} DEBUGGER_PREALLOC_COMMAND, *PDEBUGGER_PREALLOC_COMMAND;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief different types of preactivate requests
@@ -206,8 +201,7 @@ typedef struct _DEBUGGER_PREACTIVATE_COMMAND
} DEBUGGER_PREACTIVATE_COMMAND, *PDEBUGGER_PREACTIVATE_COMMAND;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGER_READ_MEMORY sizeof(DEBUGGER_READ_MEMORY)
@@ -281,8 +275,7 @@ typedef struct _DEBUGGER_READ_MEMORY
} DEBUGGER_READ_MEMORY, *PDEBUGGER_READ_MEMORY;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGER_FLUSH_LOGGING_BUFFERS \
sizeof(DEBUGGER_FLUSH_LOGGING_BUFFERS)
@@ -299,8 +292,7 @@ typedef struct _DEBUGGER_FLUSH_LOGGING_BUFFERS
} DEBUGGER_FLUSH_LOGGING_BUFFERS, *PDEBUGGER_FLUSH_LOGGING_BUFFERS;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGER_TEST_QUERY_BUFFER \
sizeof(DEBUGGER_TEST_QUERY_BUFFER)
@@ -338,8 +330,7 @@ typedef struct _DEBUGGER_DEBUGGER_TEST_QUERY_BUFFER
} DEBUGGER_DEBUGGER_TEST_QUERY_BUFFER, *PDEBUGGER_DEBUGGER_TEST_QUERY_BUFFER;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS \
sizeof(DEBUGGER_PERFORM_KERNEL_TESTS)
@@ -354,8 +345,7 @@ typedef struct _DEBUGGER_PERFORM_KERNEL_TESTS
} DEBUGGER_PERFORM_KERNEL_TESTS, *PDEBUGGER_PERFORM_KERNEL_TESTS;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL \
sizeof(DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL)
@@ -371,8 +361,7 @@ typedef struct _DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL
} DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL,
*PDEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER \
sizeof(DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER)
@@ -395,8 +384,7 @@ typedef struct _DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER
} DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER,
*PDEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER \
sizeof(DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER)
@@ -417,8 +405,7 @@ typedef struct _DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER
} DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER,
*PDEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGER_READ_AND_WRITE_ON_MSR \
sizeof(DEBUGGER_READ_AND_WRITE_ON_MSR)
@@ -449,8 +436,7 @@ typedef struct _DEBUGGER_READ_AND_WRITE_ON_MSR
} DEBUGGER_READ_AND_WRITE_ON_MSR, *PDEBUGGER_READ_AND_WRITE_ON_MSR;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGER_EDIT_MEMORY sizeof(DEBUGGER_EDIT_MEMORY)
@@ -491,8 +477,7 @@ typedef struct _DEBUGGER_EDIT_MEMORY
} DEBUGGER_EDIT_MEMORY, *PDEBUGGER_EDIT_MEMORY;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGER_SEARCH_MEMORY sizeof(DEBUGGER_SEARCH_MEMORY)
@@ -536,8 +521,7 @@ typedef struct _DEBUGGER_SEARCH_MEMORY
} DEBUGGER_SEARCH_MEMORY, *PDEBUGGER_SEARCH_MEMORY;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief Windows System call values that are intercepted by transparency mode
@@ -600,8 +584,7 @@ typedef struct _DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE
} DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE,
*PDEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGER_PREPARE_DEBUGGEE sizeof(DEBUGGER_PREPARE_DEBUGGEE)
@@ -619,8 +602,7 @@ typedef struct _DEBUGGER_PREPARE_DEBUGGEE
} DEBUGGER_PREPARE_DEBUGGEE, *PDEBUGGER_PREPARE_DEBUGGEE;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief The structure of changing core packet in HyperDbg
@@ -633,8 +615,8 @@ typedef struct _DEBUGGEE_CHANGE_CORE_PACKET
} DEBUGGEE_CHANGE_CORE_PACKET, *PDEBUGGEE_CHANGE_CORE_PACKET;
-/* ==============================================================================================
- */
+// ==============================================================================================
+
#define SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS \
sizeof(DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS)
@@ -678,8 +660,8 @@ typedef struct _DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS
} DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS,
*PDEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS;
-/* ==============================================================================================
- */
+// ==============================================================================================
+
#define SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS \
sizeof(DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS)
@@ -785,8 +767,7 @@ typedef struct _DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS
} DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS,
*PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief The structure for saving the callstack frame of one parameter
@@ -836,8 +817,8 @@ typedef struct _DEBUGGER_CALLSTACK_REQUEST
} DEBUGGER_CALLSTACK_REQUEST, *PDEBUGGER_CALLSTACK_REQUEST;
-/* ==============================================================================================
- */
+// ==============================================================================================
+
#define SIZEOF_USERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS \
sizeof(USERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS)
@@ -850,8 +831,7 @@ typedef struct _USERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS
} USERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS, *PUSERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief Used for run the script
@@ -891,8 +871,7 @@ typedef struct _DEBUGGER_EVENT_REQUEST_CUSTOM_CODE
} DEBUGGER_EVENT_REQUEST_CUSTOM_CODE, *PDEBUGGER_EVENT_REQUEST_CUSTOM_CODE;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief User-mode debugging actions
@@ -937,8 +916,7 @@ typedef struct _DEBUGGER_UD_COMMAND_PACKET
} DEBUGGER_UD_COMMAND_PACKET, *PDEBUGGER_UD_COMMAND_PACKET;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief Debugger process switch and process details
@@ -970,8 +948,7 @@ typedef struct _DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET
} DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET, *PDEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief Debugger size of DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET
@@ -1018,8 +995,7 @@ typedef struct _DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET
#define SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET \
sizeof(DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET)
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief stepping and tracking types
@@ -1060,7 +1036,7 @@ typedef struct _DEBUGGEE_STEP_PACKET
*/
#define DEBUGGER_REMOTE_TRACKING_DEFAULT_COUNT_OF_STEPPING 0xffffffff
-/* ==============================================================================================
+// ==============================================================================================
/**
* @brief Perform actions related to APIC
@@ -1194,8 +1170,7 @@ typedef struct _LAPIC_PAGE
UINT8 Reserved3F4[0x0C]; // valid only for X2APIC
} LAPIC_PAGE, *PLAPIC_PAGE;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief Maximum number of I/O APIC entries
@@ -1228,8 +1203,7 @@ typedef struct _IO_APIC_ENTRY_PACKETS
static_assert(sizeof(IO_APIC_ENTRY_PACKETS) < PacketChunkSize,
"err (static_assert), size of PacketChunkSize should be bigger than IO_APIC_ENTRY_PACKETS");
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief Perform actions related to SMIs
@@ -1261,8 +1235,7 @@ typedef struct _SMI_OPERATION_PACKETS
#define SIZEOF_SMI_OPERATION_PACKETS \
sizeof(SMI_OPERATION_PACKETS)
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief Perform actions related to HyperTrace for LBR
@@ -1298,8 +1271,7 @@ typedef struct _HYPERTRACE_LBR_OPERATION_PACKETS
#define SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS \
sizeof(HYPERTRACE_LBR_OPERATION_PACKETS)
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief Perform actions related to HyperTrace for PT
@@ -1332,8 +1304,7 @@ typedef struct _HYPERTRACE_PT_OPERATION_PACKETS
#define SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS \
sizeof(HYPERTRACE_PT_OPERATION_PACKETS)
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief Maximum number of IDT entries
@@ -1366,8 +1337,7 @@ typedef struct _INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS
static_assert(sizeof(INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS) < PacketChunkSize,
"err (static_assert), size of PacketChunkSize should be bigger than INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS");
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief The structure of .formats result packet in HyperDbg
@@ -1380,8 +1350,7 @@ typedef struct _DEBUGGEE_FORMATS_PACKET
} DEBUGGEE_FORMATS_PACKET, *PDEBUGGEE_FORMATS_PACKET;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief The structure of .sym reload packet in HyperDbg
@@ -1393,8 +1362,7 @@ typedef struct _DEBUGGEE_SYMBOL_REQUEST_PACKET
} DEBUGGEE_SYMBOL_REQUEST_PACKET, *PDEBUGGEE_SYMBOL_REQUEST_PACKET;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief The structure of bp command packet in HyperDbg
@@ -1445,8 +1413,7 @@ typedef struct _DEBUGGEE_BP_LIST_OR_MODIFY_PACKET
} DEBUGGEE_BP_LIST_OR_MODIFY_PACKET, *PDEBUGGEE_BP_LIST_OR_MODIFY_PACKET;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief Whether a jump is taken or not taken
@@ -1462,8 +1429,7 @@ typedef enum _DEBUGGER_CONDITIONAL_JUMP_STATUS
} DEBUGGER_CONDITIONAL_JUMP_STATUS;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief The structure of script packet in HyperDbg
@@ -1483,8 +1449,7 @@ typedef struct _DEBUGGEE_SCRIPT_PACKET
} DEBUGGEE_SCRIPT_PACKET, *PDEBUGGEE_SCRIPT_PACKET;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief The structure of result of search packet in HyperDbg
@@ -1497,8 +1462,7 @@ typedef struct _DEBUGGEE_RESULT_OF_SEARCH_PACKET
} DEBUGGEE_RESULT_OF_SEARCH_PACKET, *PDEBUGGEE_RESULT_OF_SEARCH_PACKET;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief Register Descriptor Structure to use in r command.
@@ -1512,8 +1476,7 @@ typedef struct _DEBUGGEE_REGISTER_READ_DESCRIPTION
} DEBUGGEE_REGISTER_READ_DESCRIPTION, *PDEBUGGEE_REGISTER_READ_DESCRIPTION;
-/* ==============================================================================================
- */
+// ==============================================================================================
/**
* @brief Register Descriptor Structure to write on registers.
@@ -1527,8 +1490,7 @@ typedef struct _DEBUGGEE_REGISTER_WRITE_DESCRIPTION
} DEBUGGEE_REGISTER_WRITE_DESCRIPTION, *PDEBUGGEE_REGISTER_WRITE_DESCRIPTION;
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET \
sizeof(DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET)
@@ -1552,8 +1514,7 @@ typedef struct _DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET
static_assert(sizeof(DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET) < PacketChunkSize,
"err (static_assert), size of PacketChunkSize should be bigger than DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET");
-/* ==============================================================================================
- */
+// ==============================================================================================
#define SIZEOF_DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET \
sizeof(DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET)
@@ -1577,5 +1538,4 @@ typedef struct _DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET
static_assert(sizeof(DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET) < PacketChunkSize,
"err (static_assert), size of PacketChunkSize should be bigger than DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET");
-/* ==============================================================================================
- */
+// ==============================================================================================
diff --git a/hyperdbg/include/SDK/modules/HyperTrace.h b/hyperdbg/include/SDK/modules/HyperTrace.h
index 29aea9f1..4fdc93c9 100644
--- a/hyperdbg/include/SDK/modules/HyperTrace.h
+++ b/hyperdbg/include/SDK/modules/HyperTrace.h
@@ -71,13 +71,13 @@ typedef VOID (*VM_FUNC_SET_DEBUGCTL)(UINT64 Value);
typedef VOID (*VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE)(UINT64 Value);
/**
- * @brief A function that set MSR_LBR_SELECT
+ * @brief A function that set MSR_LEGACY_LBR_SELECT
*
*/
typedef VOID (*VM_FUNC_SET_LBR_SELECT)(UINT64 FilterOptions);
/**
- * @brief A function that set MSR_LBR_SELECT on the target core using VMCALL
+ * @brief A function that set MSR_LEGACY_LBR_SELECT on the target core using VMCALL
*
*/
typedef VOID (*VM_FUNC_SET_LBR_SELECT_VMCALL_ON_TARGET_CORE)(UINT64 FilterOptions);
diff --git a/hyperdbg/include/platform/general/header/GeneralTypes.h b/hyperdbg/include/platform/general/header/GeneralTypes.h
index 8e94ca97..ee8fd30c 100644
--- a/hyperdbg/include/platform/general/header/GeneralTypes.h
+++ b/hyperdbg/include/platform/general/header/GeneralTypes.h
@@ -21,8 +21,6 @@
# include
-typedef long PLAT_STATUS;
-
typedef void VOID;
typedef void * PVOID;
@@ -46,7 +44,4 @@ typedef short SHORT;
typedef long LONG;
typedef int INT;
-# define PLAT_SUCCESS 0
-# define PLAT_FAIL -1
-
#endif
diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
index 3ed91633..4595a8b9 100644
--- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
+++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
@@ -157,7 +157,7 @@ ShowMessages(const char * Fmt, ...)
else
{
memcpy(g_MessageHandlerSharedBuffer, TempMessage, strlen(TempMessage) + 1);
- ((SendMessageWWithSharedBufferCallback)g_MessageHandler)();
+ ((SendMessageWithSharedBufferCallback)g_MessageHandler)();
}
}
}
diff --git a/hyperdbg/linux/mock/pch.h b/hyperdbg/linux/mock/pch.h
index 86be3b9b..6bc76d51 100644
--- a/hyperdbg/linux/mock/pch.h
+++ b/hyperdbg/linux/mock/pch.h
@@ -35,3 +35,8 @@
// Platform headers
//
#include "../../include/platform/kernel/header/PlatformMem.h"
+
+//
+// Platform headers
+//
+#include "../../include/SDK/HyperDbgSdk.h"
From d3f4e65686ea0edabbb3a9982791ad73adc2ed97 Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 28 Apr 2026 15:03:08 +0200
Subject: [PATCH 150/323] Replace general types with basic types
---
CHANGELOG.md | 3 +-
hyperdbg/hyperdbg.sln | 1 -
hyperdbg/hyperevade/header/pch.h | 1 -
.../platform/general/header/GeneralTypes.h | 47 -------------------
.../platform/kernel/header/PlatformMem.h | 3 +-
hyperdbg/linux/mock/pch.h | 15 ++----
6 files changed, 9 insertions(+), 61 deletions(-)
delete mode 100644 hyperdbg/include/platform/general/header/GeneralTypes.h
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 947d1a10..51ce02dc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,7 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
New release of the HyperDbg Debugger.
### Added
-- Hypertrace now enables/disables VM-entry/VM-exit controls for Load and Save IA32_DEBUGCTL MSR
+- HyperTrace now enables/disables VM-entry/VM-exit controls for Load and Save IA32_DEBUGCTL MSR
+- HyperDbg SDK now compiles on Linux (GCC)
### Changed
- Fix the problem of not applying the EAX index in the CPUID event extension command ([link](https://docs.hyperdbg.org/commands/extension-commands/cpuid#parameters))
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index c8efc4ce..b2d83aec 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -243,7 +243,6 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{9E1A2FAF-696A-4CA7-8C2E-F6B80107A143}"
ProjectSection(SolutionItems) = preProject
include\platform\general\header\Environment.h = include\platform\general\header\Environment.h
- include\platform\general\header\GeneralTypes.h = include\platform\general\header\GeneralTypes.h
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "linux", "linux", "{63D4BB7A-C404-4A35-A302-20034DD8BA77}"
diff --git a/hyperdbg/hyperevade/header/pch.h b/hyperdbg/hyperevade/header/pch.h
index 262f2333..f59c2acd 100644
--- a/hyperdbg/hyperevade/header/pch.h
+++ b/hyperdbg/hyperevade/header/pch.h
@@ -74,7 +74,6 @@
//
// Platform independent headers
//
-#include "platform/general/header/GeneralTypes.h"
#include "platform/kernel/header/PlatformMem.h"
//
diff --git a/hyperdbg/include/platform/general/header/GeneralTypes.h b/hyperdbg/include/platform/general/header/GeneralTypes.h
deleted file mode 100644
index ee8fd30c..00000000
--- a/hyperdbg/include/platform/general/header/GeneralTypes.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * @file GeneralTypes.h
- * @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Cross platform general types definitions
- * @details used both in kernel and user modes
- * @version 0.19
- * @date 2026-04-27
- *
- * @copyright This project is released under the GNU Public License v3.
- *
- */
-#pragma once
-
-//////////////////////////////////////////////////
-// Types //
-//////////////////////////////////////////////////
-
-#ifdef _WIN32 // Windows
-
-#elif defined(__linux__) // Linux
-
-# include
-
-typedef void VOID;
-typedef void * PVOID;
-
-typedef size_t SIZE_T;
-
-typedef signed char INT8, *PINT8;
-typedef signed short INT16, *PINT16;
-typedef signed int INT32, *PINT32;
-typedef signed long long INT64, *PINT64;
-typedef unsigned char UINT8, *PUINT8;
-typedef unsigned short UINT16, *PUINT16;
-typedef unsigned int UINT32, *PUINT32;
-typedef unsigned long long UINT64, *PUINT64;
-
-typedef unsigned char UCHAR;
-typedef unsigned short USHORT;
-typedef unsigned long ULONG;
-
-typedef char CHAR;
-typedef short SHORT;
-typedef long LONG;
-typedef int INT;
-
-#endif
diff --git a/hyperdbg/include/platform/kernel/header/PlatformMem.h b/hyperdbg/include/platform/kernel/header/PlatformMem.h
index 8c165ca1..af8d5656 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformMem.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformMem.h
@@ -14,7 +14,8 @@
#pragma once
#if defined(__linux__)
-# include "../../general/header/GeneralTypes.h"
+// # include "../../general/header/GeneralTypes.h"
+# include "../../../../include/SDK/HyperDbgSdk.h"
#endif // defined(__linux__)
//////////////////////////////////////////////////
diff --git a/hyperdbg/linux/mock/pch.h b/hyperdbg/linux/mock/pch.h
index 6bc76d51..60c83b43 100644
--- a/hyperdbg/linux/mock/pch.h
+++ b/hyperdbg/linux/mock/pch.h
@@ -21,22 +21,17 @@
//
#include
+//
+// Platform headers
+//
+#include "../../include/SDK/HyperDbgSdk.h"
+
//
// Environment headers
//
#include "../../include/platform/general/header/Environment.h"
-//
-// General type headers
-//
-#include "../../include/platform/general/header/GeneralTypes.h"
-
//
// Platform headers
//
#include "../../include/platform/kernel/header/PlatformMem.h"
-
-//
-// Platform headers
-//
-#include "../../include/SDK/HyperDbgSdk.h"
From 469f12c645e8ff8bda7b82d960b667f372c3cdae Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 28 Apr 2026 17:17:45 +0200
Subject: [PATCH 151/323] compile HyperDbg SDK for Linux (user-mode)
---
CHANGELOG.md | 3 +-
hyperdbg/hyperdbg.sln | 20 +++-
hyperdbg/hyperhv/code/interface/Export.c | 6 +-
hyperdbg/include/SDK/headers/BasicTypes.h | 15 +--
hyperdbg/include/SDK/headers/Events.h | 2 -
hyperdbg/include/SDK/headers/Symbols.h | 2 +-
.../SDK/imports/kernel/HyperDbgVmmImports.h | 6 +-
hyperdbg/include/platform/kernel/.gitignore | 95 -------------------
.../code/debugger/core/debugger.cpp | 5 -
hyperdbg/linux/mock/Makefile | 20 ----
hyperdbg/linux/mock/kernel/Makefile | 20 ++++
hyperdbg/linux/mock/{ => kernel}/README.md | 0
hyperdbg/linux/mock/{ => kernel}/mock.c | 2 +-
hyperdbg/linux/mock/{ => kernel}/pch.h | 8 +-
hyperdbg/linux/mock/user/Makefile | 18 ++++
hyperdbg/linux/mock/user/README.md | 53 +++++++++++
hyperdbg/linux/mock/user/mock.c | 19 ++++
hyperdbg/linux/mock/user/pch.h | 26 +++++
18 files changed, 174 insertions(+), 146 deletions(-)
delete mode 100644 hyperdbg/include/platform/kernel/.gitignore
delete mode 100644 hyperdbg/linux/mock/Makefile
create mode 100644 hyperdbg/linux/mock/kernel/Makefile
rename hyperdbg/linux/mock/{ => kernel}/README.md (100%)
rename hyperdbg/linux/mock/{ => kernel}/mock.c (99%)
rename hyperdbg/linux/mock/{ => kernel}/pch.h (70%)
create mode 100644 hyperdbg/linux/mock/user/Makefile
create mode 100644 hyperdbg/linux/mock/user/README.md
create mode 100644 hyperdbg/linux/mock/user/mock.c
create mode 100644 hyperdbg/linux/mock/user/pch.h
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 51ce02dc..7978296c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,7 +9,8 @@ New release of the HyperDbg Debugger.
### Added
- HyperTrace now enables/disables VM-entry/VM-exit controls for Load and Save IA32_DEBUGCTL MSR
-- HyperDbg SDK now compiles on Linux (GCC)
+- Add mock application for compiling SDK for Linux
+- HyperDbg SDK now compiles on Linux (GCC) for both user-mode and kernel-mode
### Changed
- Fix the problem of not applying the EAX index in the CPUID event extension command ([link](https://docs.hyperdbg.org/commands/extension-commands/cpuid#parameters))
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index b2d83aec..849f0b52 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -248,13 +248,23 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "linux", "linux", "{63D4BB7A-C404-4A35-A302-20034DD8BA77}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "mock", "mock", "{770B65D6-5307-478C-A9EB-3E4A64B67225}"
- ProjectSection(SolutionItems) = preProject
- linux\mock\mock.c = linux\mock\mock.c
- linux\mock\pch.h = linux\mock\pch.h
- EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{848FE945-4F37-4B5B-98C8-F22CA3AA7184}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "user", "user", "{D3722A82-0A54-4172-A0C1-1EA6500E9F1E}"
+ ProjectSection(SolutionItems) = preProject
+ linux\mock\user\Makefile = linux\mock\user\Makefile
+ linux\mock\user\mock.c = linux\mock\user\mock.c
+ linux\mock\user\pch.h = linux\mock\user\pch.h
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "kernel", "kernel", "{09E02C0A-6A6C-408A-8136-C787FDC58A5F}"
+ ProjectSection(SolutionItems) = preProject
+ linux\mock\kernel\Makefile = linux\mock\kernel\Makefile
+ linux\mock\kernel\mock.c = linux\mock\kernel\mock.c
+ linux\mock\kernel\pch.h = linux\mock\kernel\pch.h
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug|x64 = debug|x64
@@ -352,6 +362,8 @@ Global
{9E1A2FAF-696A-4CA7-8C2E-F6B80107A143} = {17652C16-00A0-40D4-A227-697E595DE053}
{770B65D6-5307-478C-A9EB-3E4A64B67225} = {63D4BB7A-C404-4A35-A302-20034DD8BA77}
{848FE945-4F37-4B5B-98C8-F22CA3AA7184} = {17652C16-00A0-40D4-A227-697E595DE053}
+ {D3722A82-0A54-4172-A0C1-1EA6500E9F1E} = {770B65D6-5307-478C-A9EB-3E4A64B67225}
+ {09E02C0A-6A6C-408A-8136-C787FDC58A5F} = {770B65D6-5307-478C-A9EB-3E4A64B67225}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1444BEC7-11CE-4CA6-B77C-5F98AC9BFAEB}
diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c
index 64e62c51..de15efba 100644
--- a/hyperdbg/hyperhv/code/interface/Export.c
+++ b/hyperdbg/hyperhv/code/interface/Export.c
@@ -745,7 +745,7 @@ VmFuncVmxCompatibleStrlen(const CHAR * s)
* @return UINT32
*/
UINT32
-VmFuncVmxCompatibleWcslen(const wchar_t * s)
+VmFuncVmxCompatibleWcslen(const WCHAR * s)
{
return VmxCompatibleWcslen(s);
}
@@ -905,7 +905,7 @@ VmFuncVmxCompatibleStrncmp(const CHAR * Address1, const CHAR * Address2, SIZE_T
* @return INT32
*/
INT32
-VmFuncVmxCompatibleWcscmp(const wchar_t * Address1, const wchar_t * Address2)
+VmFuncVmxCompatibleWcscmp(const WCHAR * Address1, const WCHAR * Address2)
{
return VmxCompatibleWcscmp(Address1, Address2, NULL_ZERO, FALSE);
}
@@ -919,7 +919,7 @@ VmFuncVmxCompatibleWcscmp(const wchar_t * Address1, const wchar_t * Address2)
* @return INT32
*/
INT32
-VmFuncVmxCompatibleWcsncmp(const wchar_t * Address1, const wchar_t * Address2, SIZE_T Num)
+VmFuncVmxCompatibleWcsncmp(const WCHAR * Address1, const WCHAR * Address2, SIZE_T Num)
{
return VmxCompatibleWcscmp(Address1, Address2, Num, TRUE);
}
diff --git a/hyperdbg/include/SDK/headers/BasicTypes.h b/hyperdbg/include/SDK/headers/BasicTypes.h
index 7e5f1236..be71e634 100644
--- a/hyperdbg/include/SDK/headers/BasicTypes.h
+++ b/hyperdbg/include/SDK/headers/BasicTypes.h
@@ -62,12 +62,11 @@ typedef unsigned __int64 UINT64, *PUINT64;
typedef unsigned __int64 ULONG64, *PULONG64;
typedef unsigned __int64 DWORD64, *PDWORD64;
-typedef wchar_t WCHAR;
+
+typedef wchar_t WCHAR;
#elif defined(__linux__) // Linux
-# include
-
typedef void VOID;
typedef size_t SIZE_T;
@@ -78,14 +77,16 @@ typedef unsigned long long UINT64, *PUINT64;
typedef unsigned long long ULONG64, *PULONG64;
typedef unsigned long long DWORD64, *PDWORD64;
-typedef UINT16 wchar_t;
-typedef wchar_t WCHAR;
+//
+// To be fixed later, linux wchar_t is 4 bytes, but windows wchar_t is 2 bytes
+//
+// typedef UINT16 wchar_t;
+typedef UINT16 WCHAR;
+// typedef wchar_t WCHAR;
typedef PVOID HANDLE;
typedef HANDLE * PHANDLE;
-typedef long long time_t;
-
#endif
#define NULL_ZERO 0
diff --git a/hyperdbg/include/SDK/headers/Events.h b/hyperdbg/include/SDK/headers/Events.h
index c940bf8c..45ab449e 100644
--- a/hyperdbg/include/SDK/headers/Events.h
+++ b/hyperdbg/include/SDK/headers/Events.h
@@ -359,8 +359,6 @@ typedef struct _DEBUGGER_GENERAL_EVENT_DETAIL
CommandsEventList; // Linked-list of commands list (used for tracing purpose
// in user mode)
- time_t CreationTime; // Date of creating this event
-
UINT32 CoreId; // determines the core index to apply this event to, if it's
// 0xffffffff means that we have to apply it to all cores
diff --git a/hyperdbg/include/SDK/headers/Symbols.h b/hyperdbg/include/SDK/headers/Symbols.h
index 6688de02..29c76cc8 100644
--- a/hyperdbg/include/SDK/headers/Symbols.h
+++ b/hyperdbg/include/SDK/headers/Symbols.h
@@ -39,7 +39,7 @@ typedef struct _USERMODE_LOADED_MODULE_SYMBOLS
{
UINT64 BaseAddress;
UINT64 Entrypoint;
- wchar_t FilePath[MAX_PATH];
+ WCHAR FilePath[MAX_PATH];
} USERMODE_LOADED_MODULE_SYMBOLS, *PUSERMODE_LOADED_MODULE_SYMBOLS;
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
index 80cd6521..41aa091d 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
@@ -221,7 +221,7 @@ IMPORT_EXPORT_VMM UINT32
VmFuncVmxCompatibleStrlen(const CHAR * s);
IMPORT_EXPORT_VMM UINT32
-VmFuncVmxCompatibleWcslen(const wchar_t * s);
+VmFuncVmxCompatibleWcslen(const WCHAR * s);
IMPORT_EXPORT_VMM VOID
VmFuncVmxCompatibleMicroSleep(UINT64 us);
@@ -251,10 +251,10 @@ IMPORT_EXPORT_VMM INT32
VmFuncVmxCompatibleStrncmp(const CHAR * Address1, const CHAR * Address2, SIZE_T Num);
IMPORT_EXPORT_VMM INT32
-VmFuncVmxCompatibleWcscmp(const wchar_t * Address1, const wchar_t * Address2);
+VmFuncVmxCompatibleWcscmp(const WCHAR * Address1, const WCHAR * Address2);
IMPORT_EXPORT_VMM INT32
-VmFuncVmxCompatibleWcsncmp(const wchar_t * Address1, const wchar_t * Address2, SIZE_T Num);
+VmFuncVmxCompatibleWcsncmp(const WCHAR * Address1, const WCHAR * Address2, SIZE_T Num);
IMPORT_EXPORT_VMM INT32
VmFuncVmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, size_t Count);
diff --git a/hyperdbg/include/platform/kernel/.gitignore b/hyperdbg/include/platform/kernel/.gitignore
deleted file mode 100644
index 289431e5..00000000
--- a/hyperdbg/include/platform/kernel/.gitignore
+++ /dev/null
@@ -1,95 +0,0 @@
-#
-# NOTE! Don't add files that are generated in specific
-# subdirectories here. Add them in the ".gitignore" file
-# in that subdirectory instead.
-#
-# NOTE! Please use 'git ls-files -i --exclude-standard'
-# command after changing this file, to see if there are
-# any tracked files which get ignored after the change.
-#
-# Normal rules
-#
-.*
-*.o
-*.o.*
-*.a
-*.s
-*.ko
-*.so
-*.so.dbg
-*.mod.c
-*.i
-*.lst
-*.symtypes
-*.order
-modules.builtin
-*.elf
-*.bin
-*.gz
-*.bz2
-*.lzma
-*.xz
-*.lzo
-*.patch
-*.gcno
-*.mod
-
-#
-# Top-level generic files
-#
-/tags
-/TAGS
-/linux
-/vmlinux
-/vmlinuz
-/System.map
-/Module.markers
-Module.symvers
-
-#
-# Debian directory (make deb-pkg)
-#
-/debian/
-
-#
-# git files that we don't want to ignore even it they are dot-files
-#
-!.gitignore
-!.mailmap
-
-#
-# Generated include files
-#
-include/config
-include/linux/version.h
-include/generated
-arch/*/include/generated
-
-# stgit generated dirs
-patches-*
-
-# quilt's files
-patches
-series
-
-# cscope files
-cscope.*
-ncscope.*
-
-# gnu global files
-GPATH
-GRTAGS
-GSYMS
-GTAGS
-
-*.orig
-*~
-\#*#
-
-#
-# Leavings from module signing
-#
-extra_certificates
-signing_key.priv
-signing_key.x509
-x509.genkey
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index 8168e155..8367640e 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -2132,11 +2132,6 @@ InterpretGeneralEventAndActionsFields(
//
TempEvent->EventType = EventType;
- //
- // Get the current time
- //
- TempEvent->CreationTime = time(0);
-
//
// Set buffer string command
//
diff --git a/hyperdbg/linux/mock/Makefile b/hyperdbg/linux/mock/Makefile
deleted file mode 100644
index 5020982d..00000000
--- a/hyperdbg/linux/mock/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-KDIR := /lib/modules/$(shell uname -r)/build
-PWD := $(shell pwd)
-
-obj-m := Hyperdbg.o
-
-Hyperdbg-objs := mock.o \
- ../../include/platform/kernel/code/PlatformMem.o
-
-ccflags-y += -I$(PWD)/../../include
-ccflags-y += -I$(PWD)/../../include/platform/kernel/header
-ccflags-y += -I$(PWD)/../../include/platform/kernel/code
-
-
-all:
- $(MAKE) -C $(KDIR) M=$(PWD) modules
-
-clean:
- $(MAKE) -C $(KDIR) M=$(PWD) clean
- rm ../../include/platform/kernel/code/PlatformMem.o
- rm ../../include/platform/kernel/code/.PlatformMem.o.cmd
diff --git a/hyperdbg/linux/mock/kernel/Makefile b/hyperdbg/linux/mock/kernel/Makefile
new file mode 100644
index 00000000..67c94f14
--- /dev/null
+++ b/hyperdbg/linux/mock/kernel/Makefile
@@ -0,0 +1,20 @@
+KDIR := /lib/modules/$(shell uname -r)/build
+PWD := $(shell pwd)
+
+obj-m := HyperDbg.o
+HyperDbg-objs := mock.o \
+ PlatformMem.o
+
+ccflags-y += -I$(PWD)/../../../include
+ccflags-y += -I$(PWD)/../../../include/platform/kernel/header
+ccflags-y += -I$(PWD)/../../../include/platform/kernel/code
+
+all: PlatformMem.c
+ $(MAKE) -C $(KDIR) M=$(PWD) modules
+
+PlatformMem.c:
+ cp ../../../include/platform/kernel/code/PlatformMem.c $(PWD)/PlatformMem.c
+
+clean:
+ $(MAKE) -C $(KDIR) M=$(PWD) clean
+ rm -f $(PWD)/PlatformMem.c
diff --git a/hyperdbg/linux/mock/README.md b/hyperdbg/linux/mock/kernel/README.md
similarity index 100%
rename from hyperdbg/linux/mock/README.md
rename to hyperdbg/linux/mock/kernel/README.md
diff --git a/hyperdbg/linux/mock/mock.c b/hyperdbg/linux/mock/kernel/mock.c
similarity index 99%
rename from hyperdbg/linux/mock/mock.c
rename to hyperdbg/linux/mock/kernel/mock.c
index c7edf9b2..be12c8f4 100644
--- a/hyperdbg/linux/mock/mock.c
+++ b/hyperdbg/linux/mock/kernel/mock.c
@@ -4,7 +4,7 @@
* @brief Mock Linux kernel module for testing cross-platform memory APIs.
* @details This file demonstrates the usage of the unified Platform* memory
* API (Allocate, Write, Set, Free) within a Linux kernel module environment.
- * @version 0.1
+ * @version 0.18
* @date 2026-02-05
*
* @copyright This project is released under the GNU Public License v3.
diff --git a/hyperdbg/linux/mock/pch.h b/hyperdbg/linux/mock/kernel/pch.h
similarity index 70%
rename from hyperdbg/linux/mock/pch.h
rename to hyperdbg/linux/mock/kernel/pch.h
index 60c83b43..2f017b49 100644
--- a/hyperdbg/linux/mock/pch.h
+++ b/hyperdbg/linux/mock/kernel/pch.h
@@ -22,16 +22,16 @@
#include
//
-// Platform headers
+// SDK headers
//
-#include "../../include/SDK/HyperDbgSdk.h"
+#include "../../../include/SDK/HyperDbgSdk.h"
//
// Environment headers
//
-#include "../../include/platform/general/header/Environment.h"
+#include "../../../include/platform/general/header/Environment.h"
//
// Platform headers
//
-#include "../../include/platform/kernel/header/PlatformMem.h"
+#include "../../../include/platform/kernel/header/PlatformMem.h"
diff --git a/hyperdbg/linux/mock/user/Makefile b/hyperdbg/linux/mock/user/Makefile
new file mode 100644
index 00000000..6ba7944e
--- /dev/null
+++ b/hyperdbg/linux/mock/user/Makefile
@@ -0,0 +1,18 @@
+CC = gcc
+CFLAGS = -Wall -Wextra -std=c11 -O2 -I../../../include
+TARGET = mock
+SRCS = mock.c
+OBJS = $(SRCS:.c=.o)
+
+.PHONY: all clean
+
+all: $(TARGET)
+
+$(TARGET): $(OBJS)
+ $(CC) $(CFLAGS) -o $@ $^
+
+%.o: %.c pch.h
+ $(CC) $(CFLAGS) -c -o $@ $<
+
+clean:
+ rm -f $(OBJS) $(TARGET)
\ No newline at end of file
diff --git a/hyperdbg/linux/mock/user/README.md b/hyperdbg/linux/mock/user/README.md
new file mode 100644
index 00000000..3fa5fc70
--- /dev/null
+++ b/hyperdbg/linux/mock/user/README.md
@@ -0,0 +1,53 @@
+# mock — HyperDbg Hello World
+
+A minimal user-mode Linux application that prints **"Hello world HyperDbg!"** to stdout and imports HyperDbg SDK.
+
+---
+
+---
+
+## Requirements
+
+- GCC (any reasonably recent version)
+- GNU Make
+- Linux (user-mode, no special privileges needed)
+
+Install on Debian/Ubuntu:
+
+```bash
+sudo apt update && sudo apt install build-essential
+```
+
+---
+
+## Build
+
+```bash
+make
+```
+
+This compiles `mock.c` into an executable called `mock`.
+
+---
+
+## Run
+
+```bash
+./mock
+```
+
+Expected output:
+
+```
+Hello world HyperDbg!
+```
+
+---
+
+## Clean
+
+Remove compiled objects and the binary:
+
+```bash
+make clean
+```
diff --git a/hyperdbg/linux/mock/user/mock.c b/hyperdbg/linux/mock/user/mock.c
new file mode 100644
index 00000000..9e3acac9
--- /dev/null
+++ b/hyperdbg/linux/mock/user/mock.c
@@ -0,0 +1,19 @@
+/**
+ * @file mock.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Mock user-mode application for testing the HyperDbg
+ * @details
+ * @version 0.19
+ * @date 2026-04-28
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+int
+main(void)
+{
+ printf("Hello world HyperDbg!\n");
+ return 0;
+}
diff --git a/hyperdbg/linux/mock/user/pch.h b/hyperdbg/linux/mock/user/pch.h
new file mode 100644
index 00000000..c35600c1
--- /dev/null
+++ b/hyperdbg/linux/mock/user/pch.h
@@ -0,0 +1,26 @@
+/**
+ * @file mock.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Header for the mock user-mode application for testing the HyperDbg
+ * @details
+ * @version 0.19
+ * @date 2026-04-28
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#ifndef PCH_H
+#define PCH_H
+
+#include
+#include
+#include
+#include
+#include
+
+//
+// SDK headers
+//
+#include "../../../include/SDK/HyperDbgSdk.h"
+
+#endif // PCH_H
From 1ad7bac9ceda9b19c000ae6ce103fa8163c4cdc5 Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 30 Apr 2026 20:29:22 +0200
Subject: [PATCH 152/323] check for ARCH and legacy LBR support
---
hyperdbg/hypertrace/code/api/LbrApi.c | 14 ++-
hyperdbg/hypertrace/code/lbr/Lbr.c | 95 ++++++++++++++++++-
.../header/globals/GlobalVariables.h | 7 ++
hyperdbg/hypertrace/header/lbr/Lbr.h | 60 +++++++++++-
4 files changed, 170 insertions(+), 6 deletions(-)
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 5218f3a6..27171b66 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -77,12 +77,18 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
}
//
- // Check LBR support on CPU
+ // Check for ARCHITECTURAL LBR support first, if not supported then check for LEGACY LBR support
//
- if (!LbrCheck())
+ if (!LbrCheckAndReadArchitecturalLbrDetails())
{
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_NOT_SUPPORTED;
- return FALSE;
+ //
+ // If the CPU does not support architectural LBR, we can check for legacy LBR support as a fallback
+ //
+ if (!LbrCheckAndReadLegacyLbrDetails())
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_NOT_SUPPORTED;
+ return FALSE;
+ }
}
//
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 0d14adf4..9aa3ffb4 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -77,13 +77,106 @@ CPU_LBR_MAP CPU_LBR_MAPS[] = {
{0x35, 8},
{0x36, 8}};
+#define xcpuidex(code, subleaf, a, b, c, d) \
+ { \
+ int CpuInfo[4] = {0}; \
+ __cpuidex(CpuInfo, code, subleaf); \
+ *a = CpuInfo[0]; \
+ *b = CpuInfo[1]; \
+ *c = CpuInfo[2]; \
+ *d = CpuInfo[3]; \
+ }
+
+/**
+ * @brief Check if the current CPU supports architectural LBR
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrCheckAndReadArchitecturalLbrDetails()
+{
+ ULONG a, b, c, d;
+
+ CPUID_EAX_07 Edx07 = {0};
+
+ CPUID28_EAX Eax1c = {0};
+ CPUID28_EBX Ebx1c = {0};
+ CPUID28_ECX Ecx1c = {0};
+
+ //
+ // Check for Architectural LBR support
+ //
+ //
+ xcpuidex(CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS, 0x00, &a, &b, &c, &d);
+
+ Edx07.Edx.AsUInt = d;
+
+ //
+ // CPUID.07H.00H:EDX[19] == 1 means arch LBR is supported
+ //
+ if (Edx07.Edx.AsUInt & (1 << 19))
+ {
+ g_ArchBasedLastBranchRecord = TRUE;
+ }
+ else
+ {
+ //
+ // Architectural LBR is not supported by the CPU
+ //
+ g_ArchBasedLastBranchRecord = FALSE;
+
+ return FALSE;
+ }
+
+ //
+ // Being here means the CPU supports architectural LBR, we can read the LBR capabilities from CPUID 0x1c leaf
+ //
+ xcpuidex(CPUID_ARCH_LAST_BRANCH_RECORD_INFORMATION, 0x00, &a, &b, &c, &d);
+
+ //
+ // Assign LBR leafs to sturcture for easier access
+ //
+ Eax1c.AsUInt = a;
+ Ebx1c.AsUInt = b;
+ Ecx1c.AsUInt = c;
+
+ //
+ // Read LBR capacity from CPUID.1CH.00H:EAX[7:0]
+ // Based on Intel SDM: For each bit n set in this field, the IA32_LBR_DEPTH.DEPTH value 8 * (n + 1) is supported
+ //
+ if (Eax1c.LbrDepthMask)
+ {
+ //
+ // Get the highest set bit in LbrDepthMask to determine the maximum supported LBR depth
+ //
+ ULONG HighestSetBit = 0;
+ for (ULONG i = 0; i < 8; i++)
+ {
+ if (Eax1c.LbrDepthMask & (1 << i))
+ {
+ HighestSetBit = i;
+ }
+ }
+ LbrCapacity = 8 * (HighestSetBit + 1);
+ }
+ else
+ {
+ //
+ // If LbrDepthMask is 0, it means the CPU supports architectural LBR but does not specify the depth, we can assume a default value (e.g., 16 or 32) or treat it as unsupported
+ //
+ LbrCapacity = MAXIMUM_LBR_CAPACITY; // Assuming a default capacity of MAXIMUM_LBR_CAPACITY if not specified
+ }
+
+ return TRUE;
+}
+
/**
* @brief Check if the current CPU supports LBR by examining the CPU family and model and looking up the corresponding LBR capacity
*
* @return BOOLEAN
*/
BOOLEAN
-LbrCheck()
+LbrCheckAndReadLegacyLbrDetails()
{
ULONG a, b, c, d;
ULONG Family, Model;
diff --git a/hyperdbg/hypertrace/header/globals/GlobalVariables.h b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
index 53a8f06f..d87ed5be 100644
--- a/hyperdbg/hypertrace/header/globals/GlobalVariables.h
+++ b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
@@ -34,6 +34,13 @@ BOOLEAN g_HyperTraceCallbacksInitialized;
*/
BOOLEAN g_RunningOnHypervisorEnvironment;
+/**
+ * @brief The flag indicating whether the architectural LBR is supported by the CPU or not
+ * if false it means the legacy LBR is supported
+ *
+ */
+BOOLEAN g_ArchBasedLastBranchRecord;
+
/**
* @brief The flag indicating whether the hypertrace LBR tracing is initialized or not
*
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index d4d23e1e..8c20781f 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -20,6 +20,8 @@
#define MSR_LASTBRANCH_INFO_0 0x00000DC0
#define LBR_SELECT 0x00000000
+#define CPUID_ARCH_LAST_BRANCH_RECORD_INFORMATION 0x1c
+
//
// This MSR could be used as an alternative to MSR_LBR_SELECT and IA32_DEBUGCTL for enabling and configuring LBR
// For using that in hypervisor Load Guest IA32_LBR_CTL Entry Control and Clear IA32_LBR_CTL Exit Control should
@@ -27,6 +29,59 @@
//
#define IA32_LBR_CTL 0x000014CE
+//////////////////////////////////////////////////
+// CPUID Structures //
+//////////////////////////////////////////////////
+
+/*
+ * Intel Architectural LBR CPUID detection/enumeration details:
+ */
+
+typedef union _CPUID28_EAX
+{
+ struct
+ {
+ /* Supported LBR depth values */
+ UINT32 LbrDepthMask : 8;
+ UINT32 Reserved : 22;
+ /* Deep C-state Reset */
+ UINT32 LbrDeepCReset : 1;
+ /* IP values contain LIP */
+ UINT32 LbrLip : 1;
+ };
+ UINT32 AsUInt;
+} CPUID28_EAX, *PCPUID28_EAX;
+
+typedef union _CPUID28_EBX
+{
+ struct
+ {
+ /* CPL Filtering Supported */
+ UINT32 LbrCpl : 1;
+ /* Branch Filtering Supported */
+ UINT32 LbrFilter : 1;
+ /* Call-stack Mode Supported */
+ UINT32 LbrCallStack : 1;
+ UINT32 Reserved : 29;
+ };
+ UINT32 AsUInt;
+} CPUID28_EBX, *PCPUID28_EBX;
+
+typedef union _CPUID28_ECX
+{
+ struct
+ {
+ /* Mispredict Bit Supported */
+ UINT32 LbrMispred : 1;
+ /* Timed LBRs Supported */
+ UINT32 LbrTimedLbr : 1;
+ /* Branch Type Field Supported */
+ UINT32 LbrBrType : 1;
+ UINT32 Reserved : 29;
+ };
+ UINT32 AsUInt;
+} CPUID28_ECX, *PCPUID28_ECX;
+
//////////////////////////////////////////////////
// MSR Structures //
//////////////////////////////////////////////////
@@ -154,7 +209,10 @@ ULONGLONG LbrCapacity;
//////////////////////////////////////////////////
BOOLEAN
-LbrCheck();
+LbrCheckAndReadLegacyLbrDetails();
+
+BOOLEAN
+LbrCheckAndReadArchitecturalLbrDetails();
BOOLEAN
LbrStart(UINT64 FilterOptions);
From 6f004f1ffda162edf0604c4c0ee37547f94f4284 Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 1 May 2026 18:40:39 +0200
Subject: [PATCH 153/323] Add ARCH LBR functions from hypervisor
---
hyperdbg/hyperhv/code/interface/Export.c | 112 ++++++++++++
hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c | 65 +++++++
hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 167 ++++++++++++++++++
hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c | 34 ++++
.../hyperhv/header/vmm/vmx/CrossVmcalls.h | 12 ++
hyperdbg/hyperhv/header/vmm/vmx/Hv.h | 56 ++++++
hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h | 36 ++++
hyperdbg/hyperkd/code/driver/Loader.c | 14 +-
hyperdbg/hypertrace/code/lbr/Lbr.c | 10 --
hyperdbg/hypertrace/header/api/TraceApi.h | 10 ++
.../SDK/imports/kernel/HyperDbgVmmImports.h | 27 +++
hyperdbg/include/SDK/modules/HyperTrace.h | 104 ++++++++---
12 files changed, 598 insertions(+), 49 deletions(-)
diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c
index de15efba..61163dfa 100644
--- a/hyperdbg/hyperhv/code/interface/Export.c
+++ b/hyperdbg/hyperhv/code/interface/Export.c
@@ -126,6 +126,20 @@ VmFuncSetLoadDebugControls(UINT32 CoreId, BOOLEAN Set)
HvSetLoadDebugControls(&g_GuestState[CoreId], Set);
}
+/**
+ * @brief Set LOAD GUEST IA32_LBR_CTL on Vm-entry controls
+ *
+ * @param CoreId target core id
+ * @param Set Set or unset
+ *
+ * @return VOID
+ */
+VOID
+VmFuncSetLoadGuestIa32LbrCtl(UINT32 CoreId, BOOLEAN Set)
+{
+ HvSetLoadGuestIa32LbrCtl(&g_GuestState[CoreId], Set);
+}
+
/**
* @brief Set SAVE DEBUG CONTROLS on Vm-exit controls
*
@@ -140,6 +154,20 @@ VmFuncSetSaveDebugControls(UINT32 CoreId, BOOLEAN Set)
HvSetSaveDebugControls(&g_GuestState[CoreId], Set);
}
+/**
+ * @brief Set CLEAR GUEST IA32_LBR_CTL on Vm-exit controls
+ *
+ * @param CoreId target core id
+ * @param Set Set or unset
+ *
+ * @return VOID
+ */
+VOID
+VmFuncSetClearGuestIa32LbrCtl(UINT32 CoreId, BOOLEAN Set)
+{
+ HvSetClearGuestIa32LbrCtl(&g_GuestState[CoreId], Set);
+}
+
/**
* @brief Set vm-exit for rdpmc instructions
* @details Should be called in vmx-root
@@ -416,6 +444,28 @@ VmFuncGetDebugctlVmcallOnTargetCore()
return CrossVmcallGetDebugctlVmcallOnTargetCore();
}
+/**
+ * @brief Get the guest state of IA32_LBR_CTL
+ *
+ * @return UINT64
+ */
+UINT64
+VmFuncGetGuestIa32LbrCtl()
+{
+ return HvGetGuestIa32LbrCtl();
+}
+
+/**
+ * @brief Get the guest state of IA32_LBR_CTL on the target core from VMCS
+ *
+ * @return UINT64
+ */
+UINT64
+VmFuncGetGuestIa32LbrCtlVmcallOnTargetCore()
+{
+ return CrossVmcallGetGuestIa32LbrCtlVmcallOnTargetCore();
+}
+
/**
* @brief Check if CPU support save and load debug controls on exit and load entries
*
@@ -427,6 +477,17 @@ VmFuncCheckCpuSupportForSaveAndLoadDebugControls()
return HvCheckCpuSupportForSaveAndLoadDebugControls();
}
+/**
+ * @brief Check if CPU support load and clear guest IA32_LBR_CTL controls on VM-entry and VM-exit
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+VmFuncCheckCpuSupportForLoadAndClearGuestIa32LbrCtlControls()
+{
+ return HvCheckCpuSupportForLoadAndClearGuestIa32LbrCtlControls();
+}
+
/**
* @brief Set the guest state of IA32_DEBUGCTL
* @param Value
@@ -452,6 +513,31 @@ VmFuncSetDebugctlVmcallOnTargetCore(UINT64 Value)
CrossVmcallSetDebugctlVmcallOnTargetCore(Value);
}
+/**
+ * @brief Set the guest state of IA32_LBR_CTL
+ * @param Value
+ *
+ * @return VOID
+ */
+VOID
+VmFuncSetGuestIa32LbrCtl(UINT64 Value)
+{
+ HvSetGuestIa32LbrCtl(Value);
+}
+
+/**
+ * @brief Set the guest state of IA32_LBR_CTL on the target core from VMCS
+ * using VMCALL
+ * @param Value
+ *
+ * @return VOID
+ */
+VOID
+VmFuncSetGuestIa32LbrCtlVmcallOnTargetCore(UINT64 Value)
+{
+ CrossVmcallSetGuestIa32LbrCtlVmcallOnTargetCore(Value);
+}
+
/**
* @brief Set the guest state of MSR_LEGACY_LBR_SELECT
* @param FilterOptions
@@ -489,6 +575,19 @@ VmFuncSetLoadDebugControlsVmcallOnTargetCore(BOOLEAN Set)
CrossVmcallSetLoadDebugControlsVmcallOnTargetCore(Set);
}
+/**
+ * @brief Set LOAD GUEST IA32_LBR_CTL on VM-entry controls on the target core from VMCS using VMCALL
+ *
+ * @param Set Set or unset
+ *
+ * @return VOID
+ */
+VOID
+VmFuncSetLoadGuestIa32LbrCtlVmcallOnTargetCore(BOOLEAN Set)
+{
+ CrossVmcallSetLoadGuestIa32LbrCtlVmcallOnTargetCore(Set);
+}
+
/**
* @brief Set SAVE DEBUG CONTROLS on VM-exit controls on the target core from VMCS using VMCALL
*
@@ -502,6 +601,19 @@ VmFuncSetSaveDebugControlsVmcallOnTargetCore(BOOLEAN Set)
CrossVmcallSetSaveDebugControlsVmcallOnTargetCore(Set);
}
+/**
+ * @brief Set CLEAR GUEST IA32_LBR_CTL on VM-exit controls on the target core from VMCS using VMCALL
+ *
+ * @param Set Set or unset
+ *
+ * @return VOID
+ */
+VOID
+VmFuncSetClearGuestIa32LbrCtlVmcallOnTargetCore(BOOLEAN Set)
+{
+ CrossVmcallSetClearGuestIa32LbrCtlVmcallOnTargetCore(Set);
+}
+
/**
* @brief Set the guest state of DR7
* @param Value
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c b/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
index 77756fd2..b64fb169 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c
@@ -25,6 +25,19 @@ CrossVmcallGetDebugctlVmcallOnTargetCore()
return DebugctlValue;
}
+/**
+ * @brief Get the guest state of IA32_LBR_CTL on the target core from VMCS using VMCALL
+ *
+ * @return UINT64
+ */
+UINT64
+CrossVmcallGetGuestIa32LbrCtlVmcallOnTargetCore()
+{
+ UINT64 GuestIa32LbrCtlValue;
+ AsmVmxVmcall(VMCALL_GET_GUEST_IA32_LBR_CTL, (UINT64)&GuestIa32LbrCtlValue, NULL64_ZERO, NULL64_ZERO);
+ return GuestIa32LbrCtlValue;
+}
+
/**
* @brief Set the guest state of IA32_DEBUGCTL on the target core from VMCS using VMCALL
* @param Value
@@ -37,6 +50,18 @@ CrossVmcallSetDebugctlVmcallOnTargetCore(UINT64 Value)
AsmVmxVmcall(VMCALL_SET_VMCS_DEBUGCTL, Value, NULL64_ZERO, NULL64_ZERO);
}
+/**
+ * @brief Set the guest state of IA32_LBR_CTL on the target core from VMCS using VMCALL
+ * @param Value
+ *
+ * @return VOID
+ */
+VOID
+CrossVmcallSetGuestIa32LbrCtlVmcallOnTargetCore(UINT64 Value)
+{
+ AsmVmxVmcall(VMCALL_SET_GUEST_IA32_LBR_CTL, Value, NULL64_ZERO, NULL64_ZERO);
+}
+
/**
* @brief Set the guest state of MSR_LEGACY_LBR_SELECT on the target core from VMCS using VMCALL
* @param FilterOptions
@@ -69,6 +94,26 @@ CrossVmcallSetLoadDebugControlsVmcallOnTargetCore(BOOLEAN Set)
}
}
+/**
+ * @brief Set CLEAR GUEST IA32_LBR_CTL on Vm-entry controls on the target core from VMCS using VMCALL
+ *
+ * @param Set Set or unset
+ *
+ * @return VOID
+ */
+VOID
+CrossVmcallSetLoadGuestIa32LbrCtlVmcallOnTargetCore(BOOLEAN Set)
+{
+ if (Set)
+ {
+ AsmVmxVmcall(VMCALL_SET_VM_ENTRY_LOAD_GUEST_IA32_LBR_CTL, NULL64_ZERO, NULL64_ZERO, NULL64_ZERO);
+ }
+ else
+ {
+ AsmVmxVmcall(VMCALL_UNSET_VM_ENTRY_LOAD_GUEST_IA32_LBR_CTL, NULL64_ZERO, NULL64_ZERO, NULL64_ZERO);
+ }
+}
+
/**
* @brief Set SAVE DEBUG CONTROLS on Vm-exit controls on the target core from VMCS using VMCALL
*
@@ -88,3 +133,23 @@ CrossVmcallSetSaveDebugControlsVmcallOnTargetCore(BOOLEAN Set)
AsmVmxVmcall(VMCALL_UNSET_VM_EXIT_SAVE_DEBUG_CONTROLS, NULL64_ZERO, NULL64_ZERO, NULL64_ZERO);
}
}
+
+/**
+ * @brief Set CLEAR GUEST IA32_LBR_CTL on Vm-exit controls on the target core from VMCS using VMCALL
+ *
+ * @param Set Set or unset
+ *
+ * @return VOID
+ */
+VOID
+CrossVmcallSetClearGuestIa32LbrCtlVmcallOnTargetCore(BOOLEAN Set)
+{
+ if (Set)
+ {
+ AsmVmxVmcall(VMCALL_SET_CLEAR_GUEST_IA32_LBR_CTL, NULL64_ZERO, NULL64_ZERO, NULL64_ZERO);
+ }
+ else
+ {
+ AsmVmxVmcall(VMCALL_UNSET_CLEAR_GUEST_IA32_LBR_CTL, NULL64_ZERO, NULL64_ZERO, NULL64_ZERO);
+ }
+}
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
index 95325dd9..6283e07a 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
@@ -401,6 +401,40 @@ HvSetLoadDebugControls(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set)
ProtectedHvSetLoadDebugControls(VCpu, Set);
}
+/**
+ * @brief Set LOAD GUEST IA32_LBR_CTL on Vm-entry controls
+ *
+ * @param VCpu
+ * @param Set Set or unset
+ * @return VOID
+ */
+VOID
+HvSetLoadGuestIa32LbrCtl(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set)
+{
+ UNREFERENCED_PARAMETER(VCpu);
+
+ UINT32 VmentryControls = 0;
+
+ //
+ // Read the previous flags
+ //
+ VmxVmread32P(VMCS_CTRL_VMENTRY_CONTROLS, &VmentryControls);
+
+ if (Set)
+ {
+ VmentryControls |= IA32_VMX_ENTRY_CTLS_LOAD_IA32_LBR_CTL_FLAG;
+ }
+ else
+ {
+ VmentryControls &= ~IA32_VMX_ENTRY_CTLS_LOAD_IA32_LBR_CTL_FLAG;
+ }
+
+ //
+ // Set the new value
+ //
+ VmxVmwrite32(VMCS_CTRL_VMENTRY_CONTROLS, VmentryControls);
+}
+
/**
* @brief Set SAVE DEBUG CONTROLS on Vm-exit controls
*
@@ -414,6 +448,40 @@ HvSetSaveDebugControls(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set)
ProtectedHvSetSaveDebugControls(VCpu, Set);
}
+/**
+ * @brief Set SAVE GUEST IA32_LBR_CTL on Vm-exit controls
+ *
+ * @param VCpu
+ * @param Set Set or unset
+ * @return VOID
+ */
+VOID
+HvSetClearGuestIa32LbrCtl(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set)
+{
+ UNREFERENCED_PARAMETER(VCpu);
+
+ UINT32 VmexitControls = 0;
+
+ //
+ // Read the previous flags
+ //
+ VmxVmread32P(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, &VmexitControls);
+
+ if (Set)
+ {
+ VmexitControls |= IA32_VMX_EXIT_CTLS_CLEAR_IA32_LBR_CTL_FLAG;
+ }
+ else
+ {
+ VmexitControls &= ~IA32_VMX_EXIT_CTLS_CLEAR_IA32_LBR_CTL_FLAG;
+ }
+
+ //
+ // Set the new value
+ //
+ VmxVmwrite32(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, VmexitControls);
+}
+
/**
* @brief Reset GDTR/IDTR and other old when you do vmxoff as the patchguard will detect them left modified
*
@@ -1467,6 +1535,21 @@ HvGetDebugctl()
return (UINT64)HighPart << 32 | LowPart;
}
+/**
+ * @brief Get the guest state of IA32_LBR_CTL
+ *
+ * @return UINT64
+ */
+UINT64
+HvGetGuestIa32LbrCtl()
+{
+ UINT64 GuestIa32LbrCtl;
+
+ VmxVmread64P(VMCS_GUEST_LBR_CTL, &GuestIa32LbrCtl);
+
+ return GuestIa32LbrCtl;
+}
+
/**
* @brief Get and store the guest state of IA32_DEBUGCTL
* @details mainly used from the VMCALL handler
@@ -1491,6 +1574,30 @@ HvGetAndStoreDebugctl(UINT64 * StoreDebugctl)
*StoreDebugctl = DebugctlValue;
}
+/**
+ * @brief Get and store the guest state of IA32_LBR_CTL
+ * @details mainly used from the VMCALL handler
+ *
+ * @param StoreGuestIa32Lbr
+ *
+ * @return VOID
+ */
+VOID
+HvGetAndStoreGuestIa32LbrCtl(UINT64 * StoreGuestIa32Lbr)
+{
+ UINT64 GuestIa32LbrCtl;
+
+ //
+ // Read IA32_LBR_CTL from VMCS
+ //
+ GuestIa32LbrCtl = HvGetGuestIa32LbrCtl();
+
+ //
+ // Store the IA32_LBR_CTL
+ //
+ *StoreGuestIa32Lbr = GuestIa32LbrCtl;
+}
+
/**
* @brief Set the guest state of IA32_DEBUGCTL
* @param Value The new state
@@ -1504,6 +1611,18 @@ HvSetDebugctl(UINT64 Value)
VmxVmwrite32(VMCS_GUEST_DEBUGCTL_HIGH, Value >> 32);
}
+/**
+ * @brief Set the guest state of IA32_LBR_CTL
+ * @param Value The new state
+ *
+ * @return VOID
+ */
+VOID
+HvSetGuestIa32LbrCtl(UINT64 Value)
+{
+ VmxVmwrite64(VMCS_GUEST_LBR_CTL, Value);
+}
+
/**
* @brief Set LBR selector
* @details If VMM is active, this should be done in vmx-root, otherwise, it doesn't work
@@ -1565,6 +1684,54 @@ HvCheckCpuSupportForSaveAndLoadDebugControls()
}
}
+/**
+ * @brief Check if CPU support load and clear guest IA32_LBR_CTL controls on entry and exit
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HvCheckCpuSupportForLoadAndClearGuestIa32LbrCtlControls()
+{
+ IA32_VMX_BASIC_REGISTER VmxBasicMsr = {0};
+
+ //
+ // Reading IA32_VMX_BASIC_MSR
+ //
+ VmxBasicMsr.AsUInt = __readmsr(IA32_VMX_BASIC);
+
+ //
+ // Read 1-settings of save debug controls (exit controls)
+ //
+ UINT32 ExitCtls = HvAdjustControls(
+ IA32_VMX_EXIT_CTLS_CLEAR_IA32_LBR_CTL_FLAG,
+ VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS);
+
+ //
+ // Read 1-settings of load debug controls (entry controls)
+ //
+ UINT32 EntryCtls = HvAdjustControls(
+ IA32_VMX_ENTRY_CTLS_LOAD_IA32_LBR_CTL_FLAG,
+ VmxBasicMsr.VmxControls ? IA32_VMX_TRUE_ENTRY_CTLS : IA32_VMX_ENTRY_CTLS);
+
+ //
+ // Check if entry and exit controls are supported on this system
+ //
+ if (ExitCtls != NULL_ZERO && EntryCtls != NULL_ZERO)
+ {
+ //
+ // Supported
+ //
+ return TRUE;
+ }
+ else
+ {
+ //
+ // Not supported
+ //
+ return FALSE;
+ }
+}
+
/**
* @brief Set the guest state of DR7
* @param Value The new value for DR7
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
index a2389482..6d076751 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
@@ -564,6 +564,40 @@ VmxVmcallHandler(VIRTUAL_MACHINE_STATE * VCpu,
VmcallStatus = STATUS_SUCCESS;
break;
}
+ case VMCALL_GET_GUEST_IA32_LBR_CTL:
+ {
+ //
+ // Perform getting guest IA32_LBR_CTL from VMCS
+ //
+ HvGetAndStoreGuestIa32LbrCtl((UINT64 *)OptionalParam1);
+
+ VmcallStatus = STATUS_SUCCESS;
+ break;
+ }
+ case VMCALL_SET_VM_ENTRY_LOAD_GUEST_IA32_LBR_CTL:
+ {
+ HvSetLoadGuestIa32LbrCtl(VCpu, TRUE);
+ VmcallStatus = STATUS_SUCCESS;
+ break;
+ }
+ case VMCALL_UNSET_VM_ENTRY_LOAD_GUEST_IA32_LBR_CTL:
+ {
+ HvSetLoadGuestIa32LbrCtl(VCpu, FALSE);
+ VmcallStatus = STATUS_SUCCESS;
+ break;
+ }
+ case VMCALL_SET_CLEAR_GUEST_IA32_LBR_CTL:
+ {
+ HvSetClearGuestIa32LbrCtl(VCpu, TRUE);
+ VmcallStatus = STATUS_SUCCESS;
+ break;
+ }
+ case VMCALL_UNSET_CLEAR_GUEST_IA32_LBR_CTL:
+ {
+ HvSetClearGuestIa32LbrCtl(VCpu, FALSE);
+ VmcallStatus = STATUS_SUCCESS;
+ break;
+ }
default:
{
LogError("Err, unsupported VMCALL");
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h b/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h
index 359e9897..a973f57d 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/CrossVmcalls.h
@@ -18,14 +18,26 @@
UINT64
CrossVmcallGetDebugctlVmcallOnTargetCore();
+UINT64
+CrossVmcallGetGuestIa32LbrCtlVmcallOnTargetCore();
+
VOID
CrossVmcallSetDebugctlVmcallOnTargetCore(UINT64 Value);
+VOID
+CrossVmcallSetGuestIa32LbrCtlVmcallOnTargetCore(UINT64 Value);
+
VOID
CrossVmcallSetLbrSelectVmcallOnTargetCore(UINT64 FilterOptions);
VOID
CrossVmcallSetLoadDebugControlsVmcallOnTargetCore(BOOLEAN Set);
+VOID
+CrossVmcallSetLoadGuestIa32LbrCtlVmcallOnTargetCore(BOOLEAN Set);
+
VOID
CrossVmcallSetSaveDebugControlsVmcallOnTargetCore(BOOLEAN Set);
+
+VOID
+CrossVmcallSetClearGuestIa32LbrCtlVmcallOnTargetCore(BOOLEAN Set);
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
index 412659ed..2aa85bea 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h
@@ -125,6 +125,16 @@ HvSetRflagTrapFlag(BOOLEAN Set);
VOID
HvSetLoadDebugControls(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set);
+/**
+ * @brief Set LOAD GUEST IA32_LBR_CTL on Vm-entry controls
+ *
+ * @param VCpu
+ * @param Set Set or unset
+ * @return VOID
+ */
+VOID
+HvSetLoadGuestIa32LbrCtl(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set);
+
/**
* @brief Set SAVE DEBUG CONTROLS on Vm-exit controls
*
@@ -135,6 +145,16 @@ HvSetLoadDebugControls(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set);
VOID
HvSetSaveDebugControls(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set);
+/**
+ * @brief Set SAVE GUEST IA32_LBR_CTL on Vm-exit controls
+ *
+ * @param VCpu
+ * @param Set Set or unset
+ * @return VOID
+ */
+VOID
+HvSetClearGuestIa32LbrCtl(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN Set);
+
/**
* @brief Reset GDTR/IDTR and other old when you do vmxoff as the patchguard
* will detect them left modified
@@ -458,6 +478,14 @@ HvSetPendingDebugExceptions(UINT64 Value);
UINT64
HvGetDebugctl();
+/**
+ * @brief Get the guest state of IA32_LBR_CTL
+ *
+ * @return UINT64
+ */
+UINT64
+HvGetGuestIa32LbrCtl();
+
/**
* @brief Get and store the guest state of IA32_DEBUGCTL
* @details mainly used from the VMCALL handler
@@ -469,6 +497,17 @@ HvGetDebugctl();
VOID
HvGetAndStoreDebugctl(UINT64 * StoreDebugctl);
+/**
+ * @brief Get and store the guest state of IA32_LBR_CTL
+ * @details mainly used from the VMCALL handler
+ *
+ * @param StoreGuestIa32Lbr
+ *
+ * @return VOID
+ */
+VOID
+HvGetAndStoreGuestIa32LbrCtl(UINT64 * StoreGuestIa32Lbr);
+
/**
* @brief Set the guest state of IA32_DEBUGCTL
* @param Value The new state
@@ -478,6 +517,15 @@ HvGetAndStoreDebugctl(UINT64 * StoreDebugctl);
VOID
HvSetDebugctl(UINT64 Value);
+/**
+ * @brief Set the guest state of IA32_LBR_CTL
+ * @param Value The new state
+ *
+ * @return VOID
+ */
+VOID
+HvSetGuestIa32LbrCtl(UINT64 Value);
+
/**
* @brief Set LBR selector
* @details If VMM is active, this should be done in vmx-root, otherwise, it doesn't work
@@ -496,6 +544,14 @@ HvSetLbrSelect(UINT64 FilterOptions);
BOOLEAN
HvCheckCpuSupportForSaveAndLoadDebugControls();
+/**
+ * @brief Check if CPU support load and clear guest IA32_LBR_CTL controls on VM-entry and VM-exit
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HvCheckCpuSupportForLoadAndClearGuestIa32LbrCtlControls();
+
/**
* @brief Set the guest state of DR7
* @param Value The new value for DR7
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h b/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
index 7b4af5b1..06d9a89d 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
@@ -339,6 +339,42 @@
*/
#define VMCALL_SET_MSR_LBR_SELECT 0x00000034
+/**
+ * @brief VMCALL to get the guest state of IA32_LBR_CTL on VMCS
+ *
+ */
+#define VMCALL_GET_GUEST_IA32_LBR_CTL 0x00000035
+
+/**
+ * @brief VMCALL to set the guest state of IA32_LBR_CTL on VMCS
+ *
+ */
+#define VMCALL_SET_GUEST_IA32_LBR_CTL 0x00000036
+
+/**
+ * @brief VMCALL to set LOAD GUEST IA32_LBR_CTL on VM-entry controls
+ *
+ */
+#define VMCALL_SET_VM_ENTRY_LOAD_GUEST_IA32_LBR_CTL 0x00000037
+
+/**
+ * @brief VMCALL to unset LOAD GUEST IA32_LBR_CTL on VM-entry controls
+ *
+ */
+#define VMCALL_UNSET_VM_ENTRY_LOAD_GUEST_IA32_LBR_CTL 0x00000038
+
+/**
+ * @brief VMCALL to set CLEAR GUEST IA32_LBR_CTL on VM-exit controls
+ *
+ */
+#define VMCALL_SET_CLEAR_GUEST_IA32_LBR_CTL 0x00000039
+
+/**
+ * @brief VMCALL to unset CLEAR GUEST IA32_LBR_CTL on VM-exit controls
+ *
+ */
+#define VMCALL_UNSET_CLEAR_GUEST_IA32_LBR_CTL 0x0000003A
+
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index bd120c06..8ad91240 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -39,11 +39,11 @@ LoaderInitHyperTrace(BOOLEAN RunningOnHypervisorEnvironment)
// Fill the callbacks for using hyperhv in hypertrace
//
HyperTraceCallbacks.VmFuncVmxGetCurrentExecutionMode = VmFuncVmxGetCurrentExecutionMode;
+ HyperTraceCallbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls = VmFuncCheckCpuSupportForSaveAndLoadDebugControls;
HyperTraceCallbacks.VmFuncGetDebugctl = VmFuncGetDebugctl;
HyperTraceCallbacks.VmFuncGetDebugctlVmcallOnTargetCore = VmFuncGetDebugctlVmcallOnTargetCore;
HyperTraceCallbacks.VmFuncSetDebugctl = VmFuncSetDebugctl;
HyperTraceCallbacks.VmFuncSetDebugctlVmcallOnTargetCore = VmFuncSetDebugctlVmcallOnTargetCore;
- HyperTraceCallbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls = VmFuncCheckCpuSupportForSaveAndLoadDebugControls;
HyperTraceCallbacks.VmFuncSetLoadDebugControls = VmFuncSetLoadDebugControls;
HyperTraceCallbacks.VmFuncSetLoadDebugControlsVmcallOnTargetCore = VmFuncSetLoadDebugControlsVmcallOnTargetCore;
HyperTraceCallbacks.VmFuncSetSaveDebugControls = VmFuncSetSaveDebugControls;
@@ -51,18 +51,6 @@ LoaderInitHyperTrace(BOOLEAN RunningOnHypervisorEnvironment)
HyperTraceCallbacks.VmFuncSetLbrSelect = VmFuncSetLbrSelect;
HyperTraceCallbacks.VmFuncSetLbrSelectVmcallOnTargetCore = VmFuncSetLbrSelectVmcallOnTargetCore;
- //
- // Memory callbacks
- //
- HyperTraceCallbacks.CheckAccessValidityAndSafety = CheckAccessValidityAndSafety;
- HyperTraceCallbacks.MemoryMapperReadMemorySafeOnTargetProcess = MemoryMapperReadMemorySafeOnTargetProcess;
- HyperTraceCallbacks.MemoryMapperWriteMemorySafeOnTargetProcess = MemoryMapperWriteMemorySafeOnTargetProcess;
-
- //
- // Common callbacks
- //
- HyperTraceCallbacks.CommonGetProcessNameFromProcessControlBlock = CommonGetProcessNameFromProcessControlBlock;
-
//
// Initialize hypertrace module
//
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 9aa3ffb4..53661690 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -77,16 +77,6 @@ CPU_LBR_MAP CPU_LBR_MAPS[] = {
{0x35, 8},
{0x36, 8}};
-#define xcpuidex(code, subleaf, a, b, c, d) \
- { \
- int CpuInfo[4] = {0}; \
- __cpuidex(CpuInfo, code, subleaf); \
- *a = CpuInfo[0]; \
- *b = CpuInfo[1]; \
- *c = CpuInfo[2]; \
- *d = CpuInfo[3]; \
- }
-
/**
* @brief Check if the current CPU supports architectural LBR
*
diff --git a/hyperdbg/hypertrace/header/api/TraceApi.h b/hyperdbg/hypertrace/header/api/TraceApi.h
index f79da5cc..c2563324 100644
--- a/hyperdbg/hypertrace/header/api/TraceApi.h
+++ b/hyperdbg/hypertrace/header/api/TraceApi.h
@@ -35,3 +35,13 @@
*c = CpuInfo[2]; \
*d = CpuInfo[3]; \
}
+
+#define xcpuidex(code, subleaf, a, b, c, d) \
+ { \
+ int CpuInfo[4] = {0}; \
+ __cpuidex(CpuInfo, code, subleaf); \
+ *a = CpuInfo[0]; \
+ *b = CpuInfo[1]; \
+ *c = CpuInfo[2]; \
+ *d = CpuInfo[3]; \
+ }
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
index 41aa091d..e1748e63 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
@@ -53,9 +53,15 @@ VmFuncUnRegisterMtfBreak(UINT32 CoreId);
IMPORT_EXPORT_VMM VOID
VmFuncSetLoadDebugControls(UINT32 CoreId, BOOLEAN Set);
+IMPORT_EXPORT_VMM VOID
+VmFuncSetLoadGuestIa32LbrCtl(UINT32 CoreId, BOOLEAN Set);
+
IMPORT_EXPORT_VMM VOID
VmFuncSetSaveDebugControls(UINT32 CoreId, BOOLEAN Set);
+IMPORT_EXPORT_VMM VOID
+VmFuncSetClearGuestIa32LbrCtl(UINT32 CoreId, BOOLEAN Set);
+
IMPORT_EXPORT_VMM VOID
VmFuncSetPmcVmexit(BOOLEAN Set);
@@ -110,6 +116,12 @@ VmFuncSetDebugctl(UINT64 Value);
IMPORT_EXPORT_VMM VOID
VmFuncSetDebugctlVmcallOnTargetCore(UINT64 Value);
+IMPORT_EXPORT_VMM VOID
+VmFuncSetGuestIa32LbrCtl(UINT64 Value);
+
+IMPORT_EXPORT_VMM VOID
+VmFuncSetGuestIa32LbrCtlVmcallOnTargetCore(UINT64 Value);
+
IMPORT_EXPORT_VMM VOID
VmFuncSetLbrSelect(UINT64 FilterOptions);
@@ -119,9 +131,15 @@ VmFuncSetLbrSelectVmcallOnTargetCore(UINT64 FilterOptions);
IMPORT_EXPORT_VMM VOID
VmFuncSetLoadDebugControlsVmcallOnTargetCore(BOOLEAN Set);
+IMPORT_EXPORT_VMM VOID
+VmFuncSetLoadGuestIa32LbrCtlVmcallOnTargetCore(BOOLEAN Set);
+
IMPORT_EXPORT_VMM VOID
VmFuncSetSaveDebugControlsVmcallOnTargetCore(BOOLEAN Set);
+IMPORT_EXPORT_VMM VOID
+VmFuncSetClearGuestIa32LbrCtlVmcallOnTargetCore(BOOLEAN Set);
+
IMPORT_EXPORT_VMM VOID
VmFuncSetTriggerEventForVmcalls(BOOLEAN Set);
@@ -208,6 +226,12 @@ VmFuncGetDebugctl();
IMPORT_EXPORT_VMM UINT64
VmFuncGetDebugctlVmcallOnTargetCore();
+IMPORT_EXPORT_VMM UINT64
+VmFuncGetGuestIa32LbrCtl();
+
+IMPORT_EXPORT_VMM UINT64
+VmFuncGetGuestIa32LbrCtlVmcallOnTargetCore();
+
IMPORT_EXPORT_VMM UINT64
VmFuncGetInterruptibilityState();
@@ -244,6 +268,9 @@ VmFuncQueryModeExecTrap();
IMPORT_EXPORT_VMM BOOLEAN
VmFuncCheckCpuSupportForSaveAndLoadDebugControls();
+IMPORT_EXPORT_VMM BOOLEAN
+VmFuncCheckCpuSupportForLoadAndClearGuestIa32LbrCtlControls();
+
IMPORT_EXPORT_VMM INT32
VmFuncVmxCompatibleStrcmp(const CHAR * Address1, const CHAR * Address2);
diff --git a/hyperdbg/include/SDK/modules/HyperTrace.h b/hyperdbg/include/SDK/modules/HyperTrace.h
index 4fdc93c9..c773d22c 100644
--- a/hyperdbg/include/SDK/modules/HyperTrace.h
+++ b/hyperdbg/include/SDK/modules/HyperTrace.h
@@ -49,15 +49,25 @@ typedef BOOLEAN (*LOG_CALLBACK_SEND_BUFFER)(_In_ UINT32
typedef BOOLEAN (*LOG_CALLBACK_CHECK_IF_BUFFER_IS_FULL)(BOOLEAN Priority);
/**
- * @brief A function that sets the guest state of IA32_DEBUGCTL
+ * @brief A function that gets the guest state of IA32_DEBUGCTL
*/
typedef UINT64 (*VM_FUNC_GET_DEBUGCTL)();
/**
- * @brief A function that sets the guest state of IA32_DEBUGCTL on the target core using VMCALL
+ * @brief A function that gets the guest state of IA32_DEBUGCTL on the target core using VMCALL
*/
typedef UINT64 (*VM_FUNC_GET_DEBUGCTL_VMCALL_ON_TARGET_CORE)();
+/**
+ * @brief A function that gets the guest state of IA32_LBR_CTL
+ */
+typedef UINT64 (*VM_FUNC_GET_GUEST_IA32_LBR_CTL)();
+
+/**
+ * @brief A function that gets the guest state of IA32_LBR_CTL on the target core using VMCALL
+ */
+typedef UINT64 (*VM_FUNC_GET_GUEST_IA32_LBR_CTL_VMCALL_ON_TARGET_CORE)();
+
/**
* @brief A function that gets the guest state of IA32_DEBUGCTL
*
@@ -70,6 +80,18 @@ typedef VOID (*VM_FUNC_SET_DEBUGCTL)(UINT64 Value);
*/
typedef VOID (*VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE)(UINT64 Value);
+/**
+ * @brief A function that sets guest IA32_LBR_CTL
+ *
+ */
+typedef VOID (*VM_FUNC_SET_GUEST_IA32_LBR_CTL)(UINT64 Value);
+
+/**
+ * @brief A function that sets guest IA32_LBR_CTL on the target core using VMCALL
+ *
+ */
+typedef VOID (*VM_FUNC_SET_GUEST_IA32_LBR_CTL_VMCALL_ON_TARGET_CORE)(UINT64 Value);
+
/**
* @brief A function that set MSR_LEGACY_LBR_SELECT
*
@@ -88,6 +110,12 @@ typedef VOID (*VM_FUNC_SET_LBR_SELECT_VMCALL_ON_TARGET_CORE)(UINT64 FilterOption
*/
typedef BOOLEAN (*VM_FUNC_CHECK_CPU_SUPPORT_FOR_SAVE_AND_LOAD_DEBUG_CONTROLS)();
+/**
+ * @brief A function that checks whether guest IA32_LBR_CTL can be used in load and clear of guest IA32_LBR_CTL controls
+ *
+ */
+typedef BOOLEAN (*VM_FUNC_CHECK_CPU_SUPPORT_FOR_LOAD_AND_CLEAR_GUEST_IA32_LBR_CTL_CONTROLS)();
+
/**
* @brief A function that sets load debug controls on VM-entry controls
*
@@ -100,6 +128,18 @@ typedef VOID (*VM_FUNC_SET_LOAD_DEBUG_CONTROLS)(UINT32 CoreId, BOOLEAN Set);
*/
typedef VOID (*VM_FUNC_SET_LOAD_DEBUG_CONTROLS_VMCALL_ON_TARGET_CORE)(BOOLEAN Set);
+/**
+ * @brief A function that sets load guest IA32_LBR_CTL on VM-entry controls
+ *
+ */
+typedef VOID (*VM_FUNC_SET_LOAD_GUEST_IA32_LBR_CTL)(UINT32 CoreId, BOOLEAN Set);
+
+/**
+ * @brief A function that sets load guest IA32_LBR_CTL on VM-entry controls on the target core from VMCS using VMCALL
+ *
+ */
+typedef VOID (*VM_FUNC_SET_LOAD_GUEST_IA32_LBR_CTL_VMCALL_ON_TARGET_CORE)(BOOLEAN Set);
+
/**
* @brief A function that sets save debug controls on VM-exit controls
*
@@ -112,6 +152,18 @@ typedef VOID (*VM_FUNC_SET_SAVE_DEBUG_CONTROLS)(UINT32 CoreId, BOOLEAN Set);
*/
typedef VOID (*VM_FUNC_SET_SAVE_DEBUG_CONTROLS_VMCALL_ON_TARGET_CORE)(BOOLEAN Set);
+/**
+ * @brief A function that sets clear guest IA32_LBR_CTL on VM-exit controls
+ *
+ */
+typedef VOID (*VM_FUNC_SET_CLEAR_GUEST_IA32_LBR_CTL)(UINT32 CoreId, BOOLEAN Set);
+
+/**
+ * @brief A function that sets clear guest IA32_LBR_CTL on VM-exit controls on the target core from VMCS using VMCALL
+ *
+ */
+typedef VOID (*VM_FUNC_SET_CLEAR_GUEST_IA32_LBR_CTL_VMCALL_ON_TARGET_CORE)(BOOLEAN Set);
+
/**
* @brief A function that checks whether the current execution mode is VMX-root mode or not
*
@@ -163,33 +215,33 @@ typedef struct _HYPERTRACE_CALLBACKS
//
// *** Hypervisor (Hyperhv) callbacks ***
//
- VM_FUNC_VMX_GET_CURRENT_EXECUTION_MODE VmFuncVmxGetCurrentExecutionMode;
- VM_FUNC_GET_DEBUGCTL VmFuncGetDebugctl;
- VM_FUNC_GET_DEBUGCTL_VMCALL_ON_TARGET_CORE VmFuncGetDebugctlVmcallOnTargetCore;
- VM_FUNC_SET_DEBUGCTL VmFuncSetDebugctl;
- VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE VmFuncSetDebugctlVmcallOnTargetCore;
+ VM_FUNC_VMX_GET_CURRENT_EXECUTION_MODE VmFuncVmxGetCurrentExecutionMode;
+
VM_FUNC_CHECK_CPU_SUPPORT_FOR_SAVE_AND_LOAD_DEBUG_CONTROLS VmFuncCheckCpuSupportForSaveAndLoadDebugControls;
- VM_FUNC_SET_LOAD_DEBUG_CONTROLS VmFuncSetLoadDebugControls;
- VM_FUNC_SET_LOAD_DEBUG_CONTROLS_VMCALL_ON_TARGET_CORE VmFuncSetLoadDebugControlsVmcallOnTargetCore;
- VM_FUNC_SET_SAVE_DEBUG_CONTROLS VmFuncSetSaveDebugControls;
- VM_FUNC_SET_SAVE_DEBUG_CONTROLS_VMCALL_ON_TARGET_CORE VmFuncSetSaveDebugControlsVmcallOnTargetCore;
- VM_FUNC_SET_LBR_SELECT VmFuncSetLbrSelect;
- VM_FUNC_SET_LBR_SELECT_VMCALL_ON_TARGET_CORE VmFuncSetLbrSelectVmcallOnTargetCore;
- //
- // *** HYPERTRACE callbacks ***
- //
+ VM_FUNC_GET_DEBUGCTL VmFuncGetDebugctl;
+ VM_FUNC_GET_DEBUGCTL_VMCALL_ON_TARGET_CORE VmFuncGetDebugctlVmcallOnTargetCore;
+ VM_FUNC_SET_DEBUGCTL VmFuncSetDebugctl;
+ VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE VmFuncSetDebugctlVmcallOnTargetCore;
- //
- // Memory callbacks
- //
- CHECK_ACCESS_VALIDITY_AND_SAFETY CheckAccessValidityAndSafety;
- MEMORY_MAPPER_READ_MEMORY_SAFE_ON_TARGET_PROCESS MemoryMapperReadMemorySafeOnTargetProcess;
- MEMORY_MAPPER_WRITE_MEMORY_SAFE_ON_TARGET_PROCESS MemoryMapperWriteMemorySafeOnTargetProcess;
+ VM_FUNC_SET_LOAD_DEBUG_CONTROLS VmFuncSetLoadDebugControls;
+ VM_FUNC_SET_LOAD_DEBUG_CONTROLS_VMCALL_ON_TARGET_CORE VmFuncSetLoadDebugControlsVmcallOnTargetCore;
+ VM_FUNC_SET_SAVE_DEBUG_CONTROLS VmFuncSetSaveDebugControls;
+ VM_FUNC_SET_SAVE_DEBUG_CONTROLS_VMCALL_ON_TARGET_CORE VmFuncSetSaveDebugControlsVmcallOnTargetCore;
- //
- // Common callbacks
- //
- COMMON_GET_PROCESS_NAME_FROM_PROCESS_CONTROL_BLOCK CommonGetProcessNameFromProcessControlBlock;
+ VM_FUNC_SET_LBR_SELECT VmFuncSetLbrSelect;
+ VM_FUNC_SET_LBR_SELECT_VMCALL_ON_TARGET_CORE VmFuncSetLbrSelectVmcallOnTargetCore;
+
+ VM_FUNC_CHECK_CPU_SUPPORT_FOR_LOAD_AND_CLEAR_GUEST_IA32_LBR_CTL_CONTROLS VmFuncCheckCpuSupportForLoadAndClearGuestIa32LbrCtlControls;
+
+ VM_FUNC_GET_GUEST_IA32_LBR_CTL VmFuncGetGuestIa32LbrCtl;
+ VM_FUNC_GET_GUEST_IA32_LBR_CTL_VMCALL_ON_TARGET_CORE VmFuncGetGuestIa32LbrCtlVmcallOnTargetCore;
+ VM_FUNC_SET_GUEST_IA32_LBR_CTL VmFuncSetGuestIa32LbrCtl;
+ VM_FUNC_SET_GUEST_IA32_LBR_CTL_VMCALL_ON_TARGET_CORE VmFuncSetGuestIa32LbrCtlVmcallOnTargetCore;
+
+ VM_FUNC_SET_LOAD_GUEST_IA32_LBR_CTL VmFuncSetLoadGuestIa32LbrCtl;
+ VM_FUNC_SET_LOAD_GUEST_IA32_LBR_CTL_VMCALL_ON_TARGET_CORE VmFuncSetLoadGuestIa32LbrCtlVmcallOnTargetCore;
+ VM_FUNC_SET_CLEAR_GUEST_IA32_LBR_CTL VmFuncSetClearGuestIa32LbrCtl;
+ VM_FUNC_SET_CLEAR_GUEST_IA32_LBR_CTL_VMCALL_ON_TARGET_CORE VmFuncSetClearGuestIa32LbrCtlVmcallOnTargetCore;
} HYPERTRACE_CALLBACKS, *PHYPERTRACE_CALLBACKS;
From aa80cd9d6bb7ab186991850c9db8a5a6770327f4 Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 1 May 2026 20:39:13 +0200
Subject: [PATCH 154/323] Apply all ARCH Based LBR controls on API level
---
hyperdbg/hyperkd/code/driver/Loader.c | 46 +-
hyperdbg/hypertrace/code/api/LbrApi.c | 10 +-
.../hypertrace/code/broadcast/DpcRoutines.c | 48 +-
hyperdbg/hypertrace/code/lbr/Lbr.c | 808 +++++++++++++-----
hyperdbg/include/SDK/headers/ErrorCodes.h | 4 +-
hyperdbg/include/SDK/modules/HyperTrace.h | 8 +
.../code/debugger/core/debugger.cpp | 4 +-
7 files changed, 672 insertions(+), 256 deletions(-)
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index 8ad91240..ed04fe90 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -38,18 +38,42 @@ LoaderInitHyperTrace(BOOLEAN RunningOnHypervisorEnvironment)
//
// Fill the callbacks for using hyperhv in hypertrace
//
- HyperTraceCallbacks.VmFuncVmxGetCurrentExecutionMode = VmFuncVmxGetCurrentExecutionMode;
+ HyperTraceCallbacks.VmFuncVmxGetCurrentExecutionMode = VmFuncVmxGetCurrentExecutionMode;
+
+ //
+ // *** Legacy LBR callbacks ***
+ //
+
HyperTraceCallbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls = VmFuncCheckCpuSupportForSaveAndLoadDebugControls;
- HyperTraceCallbacks.VmFuncGetDebugctl = VmFuncGetDebugctl;
- HyperTraceCallbacks.VmFuncGetDebugctlVmcallOnTargetCore = VmFuncGetDebugctlVmcallOnTargetCore;
- HyperTraceCallbacks.VmFuncSetDebugctl = VmFuncSetDebugctl;
- HyperTraceCallbacks.VmFuncSetDebugctlVmcallOnTargetCore = VmFuncSetDebugctlVmcallOnTargetCore;
- HyperTraceCallbacks.VmFuncSetLoadDebugControls = VmFuncSetLoadDebugControls;
- HyperTraceCallbacks.VmFuncSetLoadDebugControlsVmcallOnTargetCore = VmFuncSetLoadDebugControlsVmcallOnTargetCore;
- HyperTraceCallbacks.VmFuncSetSaveDebugControls = VmFuncSetSaveDebugControls;
- HyperTraceCallbacks.VmFuncSetSaveDebugControlsVmcallOnTargetCore = VmFuncSetSaveDebugControlsVmcallOnTargetCore;
- HyperTraceCallbacks.VmFuncSetLbrSelect = VmFuncSetLbrSelect;
- HyperTraceCallbacks.VmFuncSetLbrSelectVmcallOnTargetCore = VmFuncSetLbrSelectVmcallOnTargetCore;
+
+ HyperTraceCallbacks.VmFuncGetDebugctl = VmFuncGetDebugctl;
+ HyperTraceCallbacks.VmFuncGetDebugctlVmcallOnTargetCore = VmFuncGetDebugctlVmcallOnTargetCore;
+ HyperTraceCallbacks.VmFuncSetDebugctl = VmFuncSetDebugctl;
+ HyperTraceCallbacks.VmFuncSetDebugctlVmcallOnTargetCore = VmFuncSetDebugctlVmcallOnTargetCore;
+
+ HyperTraceCallbacks.VmFuncSetLoadDebugControls = VmFuncSetLoadDebugControls;
+ HyperTraceCallbacks.VmFuncSetLoadDebugControlsVmcallOnTargetCore = VmFuncSetLoadDebugControlsVmcallOnTargetCore;
+ HyperTraceCallbacks.VmFuncSetSaveDebugControls = VmFuncSetSaveDebugControls;
+ HyperTraceCallbacks.VmFuncSetSaveDebugControlsVmcallOnTargetCore = VmFuncSetSaveDebugControlsVmcallOnTargetCore;
+
+ HyperTraceCallbacks.VmFuncSetLbrSelect = VmFuncSetLbrSelect;
+ HyperTraceCallbacks.VmFuncSetLbrSelectVmcallOnTargetCore = VmFuncSetLbrSelectVmcallOnTargetCore;
+
+ //
+ // *** Architectural LBR callbacks ***
+ //
+
+ HyperTraceCallbacks.VmFuncCheckCpuSupportForLoadAndClearGuestIa32LbrCtlControls = VmFuncCheckCpuSupportForLoadAndClearGuestIa32LbrCtlControls;
+
+ HyperTraceCallbacks.VmFuncGetGuestIa32LbrCtl = VmFuncGetGuestIa32LbrCtl;
+ HyperTraceCallbacks.VmFuncGetGuestIa32LbrCtlVmcallOnTargetCore = VmFuncGetGuestIa32LbrCtlVmcallOnTargetCore;
+ HyperTraceCallbacks.VmFuncSetGuestIa32LbrCtl = VmFuncSetGuestIa32LbrCtl;
+ HyperTraceCallbacks.VmFuncSetGuestIa32LbrCtlVmcallOnTargetCore = VmFuncSetGuestIa32LbrCtlVmcallOnTargetCore;
+
+ HyperTraceCallbacks.VmFuncSetLoadGuestIa32LbrCtl = VmFuncSetLoadGuestIa32LbrCtl;
+ HyperTraceCallbacks.VmFuncSetLoadGuestIa32LbrCtlVmcallOnTargetCore = VmFuncSetLoadGuestIa32LbrCtlVmcallOnTargetCore;
+ HyperTraceCallbacks.VmFuncSetClearGuestIa32LbrCtl = VmFuncSetClearGuestIa32LbrCtl;
+ HyperTraceCallbacks.VmFuncSetClearGuestIa32LbrCtlVmcallOnTargetCore = VmFuncSetClearGuestIa32LbrCtlVmcallOnTargetCore;
//
// Initialize hypertrace module
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 27171b66..1607ebda 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -94,10 +94,14 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
//
// Check VMCS support for LBR if the initialization is being done for hypervisor environment
//
- if (g_RunningOnHypervisorEnvironment && !g_Callbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls())
+ if (g_RunningOnHypervisorEnvironment)
{
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_DEBUGCTL_NOT_SUPPORTED_ON_VMCS;
- return FALSE;
+ if ((g_ArchBasedLastBranchRecord && !g_Callbacks.VmFuncCheckCpuSupportForLoadAndClearGuestIa32LbrCtlControls()) ||
+ (!g_ArchBasedLastBranchRecord && !g_Callbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls()))
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_NOT_SUPPORTED_ON_VMCS;
+ return FALSE;
+ }
}
//
diff --git a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
index 9a4b6f63..98de8082 100644
--- a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
@@ -32,12 +32,24 @@ DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
//
if (g_RunningOnHypervisorEnvironment)
{
- //
- // Perform VMX-root mode specific operations to enable load and save
- // VM-exit and VM-entry controls for IA32_DEBUGCTL for LBR
- //
- g_Callbacks.VmFuncSetSaveDebugControlsVmcallOnTargetCore(TRUE);
- g_Callbacks.VmFuncSetLoadDebugControlsVmcallOnTargetCore(TRUE);
+ if (g_ArchBasedLastBranchRecord)
+ {
+ //
+ // Perform VMX-root mode specific operations to load and clear guest
+ // IA32_LBR_CTL MSR (VMCS_GUEST_LBR_CTL) for LBR
+ //
+ g_Callbacks.VmFuncSetLoadGuestIa32LbrCtlVmcallOnTargetCore(TRUE);
+ g_Callbacks.VmFuncSetClearGuestIa32LbrCtlVmcallOnTargetCore(TRUE);
+ }
+ else
+ {
+ //
+ // Perform VMX-root mode specific operations to enable load and save
+ // VM-exit and VM-entry controls for IA32_DEBUGCTL for LBR
+ //
+ g_Callbacks.VmFuncSetSaveDebugControlsVmcallOnTargetCore(TRUE);
+ g_Callbacks.VmFuncSetLoadDebugControlsVmcallOnTargetCore(TRUE);
+ }
}
//
@@ -85,12 +97,24 @@ DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, P
//
if (g_RunningOnHypervisorEnvironment)
{
- //
- // Perform VMX-root mode specific operations to disable load and save
- // VM-exit and VM-entry controls for IA32_DEBUGCTL for LBR
- //
- g_Callbacks.VmFuncSetSaveDebugControlsVmcallOnTargetCore(FALSE);
- g_Callbacks.VmFuncSetLoadDebugControlsVmcallOnTargetCore(FALSE);
+ if (g_ArchBasedLastBranchRecord)
+ {
+ //
+ // Perform VMX-root mode specific operations to disable load and clear guest
+ // IA32_LBR_CTL MSR (VMCS_GUEST_LBR_CTL) for LBR
+ //
+ g_Callbacks.VmFuncSetLoadGuestIa32LbrCtlVmcallOnTargetCore(FALSE);
+ g_Callbacks.VmFuncSetClearGuestIa32LbrCtlVmcallOnTargetCore(FALSE);
+ }
+ else
+ {
+ //
+ // Perform VMX-root mode specific operations to disable load and save
+ // VM-exit and VM-entry controls for IA32_DEBUGCTL for LBR
+ //
+ g_Callbacks.VmFuncSetSaveDebugControlsVmcallOnTargetCore(FALSE);
+ g_Callbacks.VmFuncSetLoadDebugControlsVmcallOnTargetCore(FALSE);
+ }
}
//
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 53661690..2544464e 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -195,141 +195,81 @@ LbrCheckAndReadLegacyLbrDetails()
}
/**
- * @brief Flush LBR MSRs by disabling LBR and clearing all LBR entries
+ * @brief Convert a filter options bitmask into IA32_LBR_CTL format for architectural LBR
*
+ * @param FilterOptions A bitmask of filter options (e.g., LBR_KERNEL, LBR_USER, LBR_JCC, etc.)
+ * @param Ia32LbrCtl Pointer to the IA32_LBR_CTL_REGISTER to populate with the converted filter bits
* @return VOID
*/
VOID
-LbrFlush()
+LbrBuildArchBasedFilterOptions(UINT64 FilterOptions, IA32_LBR_CTL_REGISTER * Ia32LbrCtl)
{
- ULONG i;
- ULONGLONG DbgCtlMsr;
- BOOLEAN IsOnVmxRootMode;
-
- //
- // Disable LBR
- //
- LogInfo("Flush LBR on cpu core: %d\n", KeGetCurrentProcessorNumberEx(NULL));
-
- if (g_RunningOnHypervisorEnvironment)
+ if (FilterOptions & LBR_KERNEL)
{
- IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
-
- if (IsOnVmxRootMode)
- {
- //
- // It is on VMX-root mode, run it directly to get the IA32_DEBUGCTL MSR value in VMCS
- //
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
- }
- else
- {
- //
- // It is not on VMX-root mode, so we need to perform a VMCALL to set the IA32_DEBUGCTL MSR value on the target core
- //
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
- }
-
- DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
-
- if (IsOnVmxRootMode)
- {
- //
- // It is on VMX-root mode, run it directly to set the IA32_DEBUGCTL MSR value in VMCS
- //
- g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
- }
- else
- {
- //
- // It is not on VMX-root mode, so we need to perform a VMCALL to set the IA32_DEBUGCTL MSR value on the target core
- //
- g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
- }
+ Ia32LbrCtl->Bits.OS = 1;
}
- else
+ if (FilterOptions & LBR_USER)
{
- xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
- DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
- xwrmsr(IA32_DEBUGCTL, DbgCtlMsr);
+ Ia32LbrCtl->Bits.USR = 1;
}
-
- //
- // *** Flush LBR registers ***
- //
-
- //
- // Set LBR filter (MSR_LEGACY_LBR_SELECT) to 0 to capture all branch types (reset)
- //
- if (g_RunningOnHypervisorEnvironment)
+ if (FilterOptions & LBR_JCC)
{
- IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
-
- //
- // If we don't set it on VMX-root mode, the LBR MSRs won't work based on our tests
- // even though it is just MSR (and not a VMCS field)
- //
- if (IsOnVmxRootMode)
- {
- //
- // It is on VMX-root mode, run it directly to set the MSR_LEGACY_LBR_SELECT MSR value
- //
- g_Callbacks.VmFuncSetLbrSelect(0);
- }
- else
- {
- //
- // It is not on VMX-root mode, so we need to perform a VMCALL to set the MSR_LEGACY_LBR_SELECT MSR value on the target core
- //
- g_Callbacks.VmFuncSetLbrSelectVmcallOnTargetCore(0);
- }
+ Ia32LbrCtl->Bits.JCC = 1;
}
- else
+ if (FilterOptions & LBR_REL_CALL)
{
- xwrmsr(MSR_LEGACY_LBR_SELECT, 0);
+ Ia32LbrCtl->Bits.NearRelCall = 1;
}
-
- //
- // Clear TOS and all LBR entries
- //
- xwrmsr(MSR_LBR_TOS, 0);
-
- for (i = 0; i < LbrCapacity; i++)
+ if (FilterOptions & LBR_IND_CALL)
{
- xwrmsr(MSR_LBR_NHM_FROM + i, 0);
- xwrmsr(MSR_LBR_NHM_TO + i, 0);
+ Ia32LbrCtl->Bits.NearIndCall = 1;
+ }
+ if (FilterOptions & LBR_RETURN)
+ {
+ Ia32LbrCtl->Bits.NearRet = 1;
+ }
+ if (FilterOptions & LBR_IND_JMP)
+ {
+ Ia32LbrCtl->Bits.NearIndJmp = 1;
+ }
+ if (FilterOptions & LBR_REL_JMP)
+ {
+ Ia32LbrCtl->Bits.NearRelJmp = 1;
+ }
+ if (FilterOptions & LBR_FAR)
+ {
+ Ia32LbrCtl->Bits.OtherBranch = 1;
+ }
+ if (FilterOptions & LBR_CALL_STACK)
+ {
+ Ia32LbrCtl->Bits.CallStack = 1;
}
}
/**
- * @brief Start collecting LBR branches
+ * @brief Set the LBR select filter MSR (MSR_LEGACY_LBR_SELECT) for legacy LBR,
+ * dispatching via VMCALL when in VMX non-root mode
*
- * @param FilterOptions A bitmask of filter options to apply to the LBR branches (e.g., filtering by branch type, privilege level, etc.)
+ * @details This function is only relevant for legacy LBR. Architectural LBR encodes
+ * filter options directly in IA32_LBR_CTL and does not use MSR_LEGACY_LBR_SELECT.
+ * Note: Even though MSR_LEGACY_LBR_SELECT is a plain MSR (not a VMCS field), it
+ * must be set from VMX-root mode for the LBR MSRs to work correctly.
*
- * @return BOOLEAN
+ * @param FilterOptions The raw filter options bitmask to write into MSR_LEGACY_LBR_SELECT
+ * @return VOID
*/
-BOOLEAN
-LbrStart(UINT64 FilterOptions)
+VOID
+LbrSetLbrSelectFilter(UINT64 FilterOptions)
{
- BOOLEAN IsOnVmxRootMode;
- ULONGLONG DbgCtlMsr;
+ BOOLEAN IsOnVmxRootMode;
- if (LbrCapacity == 0)
- {
- LogInfo("LBR: Aborting, CPU model not supported.\n");
- return FALSE;
- }
-
- //
- // Set LBR filter (MSR_LEGACY_LBR_SELECT) to selection mask
- //
if (g_RunningOnHypervisorEnvironment)
{
IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
//
// If we don't set it on VMX-root mode, the LBR MSRs won't work based on our tests
- // even though it is just MSR (and not a VMCS field)
+ // even though it is just a plain MSR (and not a VMCS field)
//
if (IsOnVmxRootMode)
{
@@ -350,70 +290,554 @@ LbrStart(UINT64 FilterOptions)
{
xwrmsr(MSR_LEGACY_LBR_SELECT, FilterOptions);
}
+}
+
+/**
+ * @brief Zero out the LBR hardware state (TOS and all from/to MSR pairs)
+ *
+ * @details For architectural LBR the TOS index is not maintained by software the CPU
+ * shifts entries automatically so MSR_LBR_TOS is skipped in that case.
+ *
+ * @return VOID
+ */
+VOID
+LbrClearHardwareState()
+{
+ //
+ // For architectural LBR, the TOS is not used; the CPU shifts LBR entries automatically
+ // and does not update the TOS index
+ //
+ if (!g_ArchBasedLastBranchRecord)
+ {
+ xwrmsr(MSR_LBR_TOS, 0);
+ }
//
- // Clear hardware state
+ // Clearing LBR TO and FROM MSRs
//
- xwrmsr(MSR_LBR_TOS, 0);
-
for (ULONG i = 0; i < (ULONG)LbrCapacity; i++)
{
xwrmsr(MSR_LBR_NHM_FROM + i, 0);
xwrmsr(MSR_LBR_NHM_TO + i, 0);
}
+}
+
+/**
+ * @brief Enable LBR collection on architectural (ARCH) based LBR
+ *
+ * @param Ia32LbrCtl Pointer to the IA32_LBR_CTL_REGISTER whose LBREn bit will be set
+ * @return VOID
+ */
+VOID
+LbrEnableArchBased(IA32_LBR_CTL_REGISTER * Ia32LbrCtl)
+{
+ Ia32LbrCtl->Bits.LBREn = 1;
+}
+
+/**
+ * @brief Enable LBR collection on legacy based LBR
+ *
+ * @param DbgCtlMsr Pointer to the IA32_DEBUGCTL MSR value to be modified
+ * @return VOID
+ */
+VOID
+LbrEnableLegacyBased(ULONGLONG * DbgCtlMsr)
+{
+ //
+ // Enable LBR and CLEAR 'Freeze LBRs on PMI' (Bit 11)
+ // If Bit 11 is set, the LBR stops recording as soon as a single PMI interrupt fires
+ //
+ *DbgCtlMsr |= IA32_DEBUGCTL_LBR_FLAG; // Bit 0 = 1
+ *DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
+}
+
+/**
+ * @brief Start LBR collection when running natively (outside any hypervisor environment)
+ *
+ * @param Ia32LbrCtl The pre-built IA32_LBR_CTL_REGISTER value carrying the filter bits (arch LBR)
+ * @return VOID
+ */
+VOID
+LbrStartOnNativeMode(IA32_LBR_CTL_REGISTER Ia32LbrCtl)
+{
+ ULONGLONG DbgCtlMsr = 0;
+
+ if (g_ArchBasedLastBranchRecord)
+ {
+ //
+ // No need to read the existing control since we are replacing it entirely for ARCH LBR
+ //
+ LbrEnableArchBased(&Ia32LbrCtl);
+ xwrmsr(IA32_LBR_CTL, Ia32LbrCtl.AsUInt);
+ }
+ else
+ {
+ xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
+ LbrEnableLegacyBased(&DbgCtlMsr);
+ xwrmsr(IA32_DEBUGCTL, DbgCtlMsr);
+ }
+}
+
+/**
+ * @brief Read current LBR control register values while in VMX root-mode
+ *
+ * @param DbgCtlMsr Pointer to receive the IA32_DEBUGCTL MSR value (legacy LBR)
+ * @param Ia32LbrCtl Pointer to receive the IA32_LBR_CTL register value (arch LBR)
+ * @return VOID
+ */
+VOID
+LbrGetValuesOnVmxRootMode(ULONGLONG * DbgCtlMsr, IA32_LBR_CTL_REGISTER * Ia32LbrCtl)
+{
+ if (g_ArchBasedLastBranchRecord)
+ {
+ //
+ // It is on VMX-root mode, run it directly to get the IA32_LBR_CTL value in VMCS
+ //
+ Ia32LbrCtl->AsUInt = g_Callbacks.VmFuncGetGuestIa32LbrCtl();
+ }
+ else
+ {
+ //
+ // It is on VMX-root mode, run it directly to get the IA32_DEBUGCTL MSR value in VMCS
+ //
+ *DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+ }
+}
+
+/**
+ * @brief Read current LBR control register values while in VMX non-root mode (via VMCALL)
+ *
+ * @param DbgCtlMsr Pointer to receive the IA32_DEBUGCTL MSR value (legacy LBR)
+ * @param Ia32LbrCtl Pointer to receive the IA32_LBR_CTL register value (arch LBR)
+ * @return VOID
+ */
+VOID
+LbrGetValuesOnVmxNonRootMode(ULONGLONG * DbgCtlMsr, IA32_LBR_CTL_REGISTER * Ia32LbrCtl)
+{
+ if (g_ArchBasedLastBranchRecord)
+ {
+ //
+ // It is not on VMX-root mode, so we need to perform a VMCALL to get the IA32_LBR_CTL value on the target core
+ //
+ Ia32LbrCtl->AsUInt = g_Callbacks.VmFuncGetGuestIa32LbrCtlVmcallOnTargetCore();
+ }
+ else
+ {
+ //
+ // It is not on VMX-root mode, so we need to perform a VMCALL to get the IA32_DEBUGCTL MSR value on the target core
+ //
+ *DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
+ }
+}
+
+/**
+ * @brief Disable LBR collection on architectural (ARCH) based LBR
+ *
+ * @param Ia32LbrCtl Pointer to the IA32_LBR_CTL register whose LBREn bit will be cleared
+ * @return VOID
+ */
+VOID
+LbrDisableArchBased(IA32_LBR_CTL_REGISTER * Ia32LbrCtl)
+{
+ Ia32LbrCtl->Bits.LBREn = 0;
+}
+
+/**
+ * @brief Disable LBR collection on legacy based LBR
+ *
+ * @param DbgCtlMsr Pointer to the IA32_DEBUGCTL MSR value whose LBR flag will be cleared
+ * @return VOID
+ */
+VOID
+LbrDisableLegacyBased(ULONGLONG * DbgCtlMsr)
+{
+ *DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
+}
+
+/**
+ * @brief Write back modified LBR control register values while in VMX root-mode
+ *
+ * @param DbgCtlMsr The updated IA32_DEBUGCTL MSR value to apply (legacy LBR)
+ * @param Ia32LbrCtl The updated IA32_LBR_CTL register value to apply (arch LBR)
+ * @return VOID
+ */
+VOID
+LbrSetValuesOnVmxRootMode(ULONGLONG DbgCtlMsr, IA32_LBR_CTL_REGISTER Ia32LbrCtl)
+{
+ if (g_ArchBasedLastBranchRecord)
+ {
+ //
+ // It is on VMX-root mode, run it directly to set the IA32_LBR_CTL value in VMCS
+ //
+ g_Callbacks.VmFuncSetGuestIa32LbrCtl(Ia32LbrCtl.AsUInt);
+ }
+ else
+ {
+ //
+ // It is on VMX-root mode, run it directly to set the IA32_DEBUGCTL MSR value in VMCS
+ //
+ g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
+ }
+}
+
+/**
+ * @brief Write back modified LBR control register values while in VMX non-root mode (via VMCALL)
+ *
+ * @param DbgCtlMsr The updated IA32_DEBUGCTL MSR value to apply (legacy LBR)
+ * @param Ia32LbrCtl The updated IA32_LBR_CTL register value to apply (arch LBR)
+ * @return VOID
+ */
+VOID
+LbrSetValuesOnVmxNonRootMode(ULONGLONG DbgCtlMsr, IA32_LBR_CTL_REGISTER Ia32LbrCtl)
+{
+ if (g_ArchBasedLastBranchRecord)
+ {
+ //
+ // It is not on VMX-root mode, so we need to perform a VMCALL to set the IA32_LBR_CTL value on the target core
+ //
+ g_Callbacks.VmFuncSetGuestIa32LbrCtlVmcallOnTargetCore(Ia32LbrCtl.AsUInt);
+ }
+ else
+ {
+ //
+ // It is not on VMX-root mode, so we need to perform a VMCALL to set the IA32_DEBUGCTL MSR value on the target core
+ //
+ g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
+ }
+}
+
+/**
+ * @brief Stop LBR collection when running natively (outside any hypervisor environment)
+ *
+ * @return VOID
+ */
+VOID
+LbrStopOnNativeMode()
+{
+ ULONGLONG DbgCtlMsr = NULL64_ZERO;
+ IA32_LBR_CTL_REGISTER Ia32LbrCtl = {0};
+
+ if (g_ArchBasedLastBranchRecord)
+ {
+ xrdmsr(IA32_LBR_CTL, &Ia32LbrCtl.AsUInt);
+ LbrDisableArchBased(&Ia32LbrCtl);
+ xwrmsr(IA32_LBR_CTL, Ia32LbrCtl);
+ }
+ else
+ {
+ xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
+ LbrDisableLegacyBased(&DbgCtlMsr);
+ xwrmsr(IA32_DEBUGCTL, DbgCtlMsr);
+ }
+}
+
+/**
+ * @brief Zero the ARCH LBR control register while in VMX root-mode
+ *
+ * @details Setting IA32_LBR_CTL to 0 simultaneously clears all filter bits and
+ * disables collection (LBREn = 0), which is the correct flush state.
+ *
+ * @return VOID
+ */
+VOID
+LbrResetArchControlOnVmxRootMode()
+{
+ //
+ // It is on VMX-root mode, set the entire IA32_LBR_CTL to 0 directly in VMCS
+ // (this also disables LBR since LBREn is cleared)
+ //
+ g_Callbacks.VmFuncSetGuestIa32LbrCtl(0);
+}
+
+/**
+ * @brief Zero the ARCH LBR control register while in VMX non-root mode (via VMCALL)
+ *
+ * @details Setting IA32_LBR_CTL to 0 simultaneously clears all filter bits and
+ * disables collection (LBREn = 0), which is the correct flush state.
+ *
+ * @return VOID
+ */
+VOID
+LbrResetArchControlOnVmxNonRootMode()
+{
+ //
+ // It is not on VMX-root mode, perform a VMCALL to set the entire IA32_LBR_CTL to 0 on the target core
+ // (this also disables LBR since LBREn is cleared)
+ //
+ g_Callbacks.VmFuncSetGuestIa32LbrCtlVmcallOnTargetCore(0);
+}
+
+/**
+ * @brief Reset the LBR control registers to zero, covering both ARCH and legacy LBR
+ * across all execution environments (native, VMX root-mode, VMX non-root mode)
+ *
+ * @details For architectural LBR, IA32_LBR_CTL is zeroed entirely (clearing filter bits
+ * and disabling collection in one write). For legacy LBR, MSR_LEGACY_LBR_SELECT
+ * is zeroed to reset the branch filter to its default capture-all state.
+ * Note: Even though MSR_LEGACY_LBR_SELECT is a plain MSR (not a VMCS field),
+ * it must be written from VMX-root mode for the change to take effect.
+ *
+ * @return VOID
+ */
+VOID
+LbrResetControlRegisters()
+{
+ BOOLEAN IsOnVmxRootMode;
if (g_RunningOnHypervisorEnvironment)
{
IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
+ //
+ // If we don't set it on VMX-root mode, the LBR MSRs won't work based on our tests
+ // even though it is just a plain MSR (and not a VMCS field)
+ //
if (IsOnVmxRootMode)
{
- //
- // It is on VMX-root mode, run it directly to get the IA32_DEBUGCTL MSR value in VMCS
- //
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+ if (g_ArchBasedLastBranchRecord)
+ {
+ LbrResetArchControlOnVmxRootMode();
+ }
+ else
+ {
+ //
+ // Reuse LbrSetLbrSelectFilter: writing 0 resets MSR_LEGACY_LBR_SELECT to
+ // its default state (capture all branch types) from VMX-root mode
+ //
+ g_Callbacks.VmFuncSetLbrSelect(0);
+ }
}
else
{
- //
- // It is not on VMX-root mode, so we need to perform a VMCALL to get the IA32_DEBUGCTL MSR value on the target core
- //
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
- }
-
- DbgCtlMsr |= IA32_DEBUGCTL_LBR_FLAG; // Bit 0 = 1
- DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
-
- if (IsOnVmxRootMode)
- {
- //
- // It is on VMX-root mode, run it directly to set the IA32_DEBUGCTL MSR value in VMCS
- //
- g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
- }
- else
- {
- //
- // It is not on VMX-root mode, so we need to perform a VMCALL to set the IA32_DEBUGCTL MSR value on the target core
- //
- g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
+ if (g_ArchBasedLastBranchRecord)
+ {
+ LbrResetArchControlOnVmxNonRootMode();
+ }
+ else
+ {
+ //
+ // Reuse LbrSetLbrSelectFilter: writing 0 resets MSR_LEGACY_LBR_SELECT to
+ // its default state (capture all branch types) via VMCALL on the target core
+ //
+ g_Callbacks.VmFuncSetLbrSelectVmcallOnTargetCore(0);
+ }
}
}
else
{
+ if (g_ArchBasedLastBranchRecord)
+ {
+ xwrmsr(IA32_LBR_CTL, 0);
+ }
+ else
+ {
+ xwrmsr(MSR_LEGACY_LBR_SELECT, 0);
+ }
+ }
+}
+
+/**
+ * @brief Start collecting LBR branches
+ *
+ * @param FilterOptions A bitmask of filter options to apply to the LBR branches (e.g., filtering by branch type, privilege level, etc.)
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrStart(UINT64 FilterOptions)
+{
+ BOOLEAN IsOnVmxRootMode;
+ IA32_LBR_CTL_REGISTER Ia32LbrCtl = {0};
+ ULONGLONG DbgCtlMsr = 0;
+
+ if (LbrCapacity == 0)
+ {
+ LogInfo("LBR: Aborting, CPU model not supported.\n");
+ return FALSE;
+ }
+
+ //
+ // For architectural LBR, convert filter options into IA32_LBR_CTL bit fields
+ //
+ if (g_ArchBasedLastBranchRecord)
+ {
+ LbrBuildArchBasedFilterOptions(FilterOptions, &Ia32LbrCtl);
+ }
+
+ //
+ // For legacy LBR, write the raw filter options to MSR_LEGACY_LBR_SELECT
+ // Architectural LBR encodes its filters in IA32_LBR_CTL and does not use this MSR
+ //
+ if (!g_ArchBasedLastBranchRecord)
+ {
+ LbrSetLbrSelectFilter(FilterOptions);
+ }
+
+ //
+ // Clear hardware state before enabling LBR
+ //
+ LbrClearHardwareState();
+
+ if (g_RunningOnHypervisorEnvironment)
+ {
+ IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
+
//
- // Enable LBR and CLEAR 'Freeze LBRs on PMI' (Bit 11)
- // If Bit 11 is set, the LBR stops as soon as a single interrupt happens
+ // DEBUGCTL is not involved in ARCH LBR - it has its own dedicated control register
+ // So for ARCH LBR we skip reading the previous value and build the register from scratch (replacing it)
//
- xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
- DbgCtlMsr |= IA32_DEBUGCTL_LBR_FLAG; // Bit 0 = 1
- DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
- xwrmsr(IA32_DEBUGCTL, DbgCtlMsr);
+ if (!g_ArchBasedLastBranchRecord)
+ {
+ if (IsOnVmxRootMode)
+ {
+ LbrGetValuesOnVmxRootMode(&DbgCtlMsr, &Ia32LbrCtl);
+ }
+ else
+ {
+ LbrGetValuesOnVmxNonRootMode(&DbgCtlMsr, &Ia32LbrCtl);
+ }
+ }
+
+ //
+ // Apply the appropriate bit to enable LBR based on whether it is architectural LBR or legacy LBR
+ //
+ if (g_ArchBasedLastBranchRecord)
+ {
+ LbrEnableArchBased(&Ia32LbrCtl);
+ }
+ else
+ {
+ LbrEnableLegacyBased(&DbgCtlMsr);
+ }
+
+ //
+ // Write the updated LBR control register values back based on the current VMX execution mode
+ //
+ if (IsOnVmxRootMode)
+ {
+ LbrSetValuesOnVmxRootMode(DbgCtlMsr, Ia32LbrCtl);
+ }
+ else
+ {
+ LbrSetValuesOnVmxNonRootMode(DbgCtlMsr, Ia32LbrCtl);
+ }
+ }
+ else
+ {
+ LbrStartOnNativeMode(Ia32LbrCtl);
}
return TRUE;
}
+/**
+ * @brief Stop collecting LBR branches
+ *
+ * @return VOID
+ */
+VOID
+LbrStop()
+{
+ BOOLEAN IsOnVmxRootMode;
+ ULONGLONG DbgCtlMsr = NULL64_ZERO;
+ IA32_LBR_CTL_REGISTER Ia32LbrCtl = {0};
+
+ if (g_RunningOnHypervisorEnvironment)
+ {
+ IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
+
+ //
+ // Read the current LBR control register values based on the current VMX execution mode
+ //
+ if (IsOnVmxRootMode)
+ {
+ LbrGetValuesOnVmxRootMode(&DbgCtlMsr, &Ia32LbrCtl);
+ }
+ else
+ {
+ LbrGetValuesOnVmxNonRootMode(&DbgCtlMsr, &Ia32LbrCtl);
+ }
+
+ //
+ // Apply the appropriate bit to disable LBR based on whether it is architectural LBR or legacy LBR
+ //
+ if (g_ArchBasedLastBranchRecord)
+ {
+ LbrDisableArchBased(&Ia32LbrCtl);
+ }
+ else
+ {
+ LbrDisableLegacyBased(&DbgCtlMsr);
+ }
+
+ //
+ // Write the updated LBR control register values back based on the current VMX execution mode
+ //
+ if (IsOnVmxRootMode)
+ {
+ LbrSetValuesOnVmxRootMode(DbgCtlMsr, Ia32LbrCtl);
+ }
+ else
+ {
+ LbrSetValuesOnVmxNonRootMode(DbgCtlMsr, Ia32LbrCtl);
+ }
+ }
+ else
+ {
+ LbrStopOnNativeMode();
+ }
+}
+
+/**
+ * @brief Flush LBR MSRs by disabling LBR and clearing all LBR entries
+ *
+ * @return VOID
+ */
+VOID
+LbrFlush()
+{
+ LogInfo("Flush LBR on cpu core: %d\n", KeGetCurrentProcessorNumberEx(NULL));
+
+ //
+ // Stop LBR collection and save any remaining entries
+ //
+ LbrStop();
+
+ //
+ // Reset the LBR control registers to zero:
+ // - ARCH LBR: zeroes IA32_LBR_CTL entirely (clears filters and disables collection)
+ // - Legacy LBR: zeroes MSR_LEGACY_LBR_SELECT (resets branch filter to capture-all)
+ //
+ LbrResetControlRegisters();
+
+ //
+ // Clear all remaining hardware state (TOS for legacy LBR, and all from/to MSR pairs)
+ //
+ LbrClearHardwareState();
+}
+
+/**
+ * @brief Filter LBR branches based on the provided options
+ * @param FilterOptions A bitmask of filter options to apply to the LBR branches
+ *
+ * @return VOID
+ */
+VOID
+LbrFilter(UINT64 FilterOptions)
+{
+ LogInfo("Updating LBR filter options: 0x%llx\n", FilterOptions);
+
+ //
+ // First, we flush the LBR to clear out any existing entries that may not meet the new filter criteria
+ //
+ LbrFlush();
+
+ //
+ // Then we apply the new filter options and re-enable LBR with the updated filter settings
+ //
+ LbrStart(FilterOptions);
+}
+
/**
* @brief Save LBR branches
*
@@ -438,9 +862,13 @@ LbrSave()
//
// Read and store the current TOS index to know where the most recent branch is stored
+ // Note that there is no TOS index in ARCH LBR since everything is in order
//
- xrdmsr(MSR_LBR_TOS, &LbrTos);
- State->Tos = (UINT32)LbrTos;
+ if (!g_ArchBasedLastBranchRecord)
+ {
+ xrdmsr(MSR_LBR_TOS, &LbrTos);
+ State->Tos = (UINT32)LbrTos;
+ }
//
// Dump LBR entries into the current core's state structure
@@ -453,88 +881,6 @@ LbrSave()
}
}
-/**
- * @brief Stop collecting LBR branches
- *
- * @return VOID
- */
-VOID
-LbrStop()
-{
- ULONGLONG DbgCtlMsr;
- BOOLEAN IsOnVmxRootMode;
-
- if (g_RunningOnHypervisorEnvironment)
- {
- IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
-
- if (IsOnVmxRootMode)
- {
- //
- // It is on VMX-root mode, run it directly to get the IA32_DEBUGCTL MSR value in VMCS
- //
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
- }
- else
- {
- //
- // It is not on VMX-root mode, so we need to perform a VMCALL to get the IA32_DEBUGCTL MSR value on the target core
- //
- DbgCtlMsr = g_Callbacks.VmFuncGetDebugctlVmcallOnTargetCore();
- }
-
- DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
-
- if (IsOnVmxRootMode)
- {
- //
- // It is on VMX-root mode, run it directly to set the IA32_DEBUGCTL MSR value in VMCS
- //
- g_Callbacks.VmFuncSetDebugctl(DbgCtlMsr);
- }
- else
- {
- //
- // It is not on VMX-root mode, so we need to perform a VMCALL to set the IA32_DEBUGCTL MSR value on the target core
- //
- g_Callbacks.VmFuncSetDebugctlVmcallOnTargetCore(DbgCtlMsr);
- }
- }
- else
- {
- xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
- DbgCtlMsr &= ~IA32_DEBUGCTL_LBR_FLAG;
- xwrmsr(IA32_DEBUGCTL, DbgCtlMsr);
- }
-
- //
- // Save the LBR entries
- //
- LbrSave();
-}
-
-/**
- * @brief Filter LBR branches based on the provided options
- * @param FilterOptions A bitmask of filter options to apply to the LBR branches
- *
- * @return VOID
- */
-VOID
-LbrFilter(UINT64 FilterOptions)
-{
- LogInfo("Updating LBR filter options: 0x%llx\n", FilterOptions);
-
- //
- // First, we flush the LBR to clear out any existing entries that may not meet the new filter criteria
- //
- LbrFlush();
-
- //
- // Then we apply the new filter options and re-enable LBR with the updated filter settings
- //
- LbrStart(FilterOptions);
-}
-
/**
* @brief Dump collected LBR branches
*
@@ -561,7 +907,17 @@ LbrDump()
for (ULONG i = 1; i <= LbrCapacity; i++)
{
- CurrentIdx = (ULONG)(State->Tos + i) % (ULONG)LbrCapacity;
+ if (g_ArchBasedLastBranchRecord)
+ {
+ //
+ // In ARCH LBR, there is not TOS index and everything is in order
+ //
+ CurrentIdx = i - 1;
+ }
+ else
+ {
+ CurrentIdx = (ULONG)(State->Tos + i) % (ULONG)LbrCapacity;
+ }
if (State->BranchEntry[CurrentIdx].From == 0)
continue;
diff --git a/hyperdbg/include/SDK/headers/ErrorCodes.h b/hyperdbg/include/SDK/headers/ErrorCodes.h
index be94d96a..8cb92a84 100644
--- a/hyperdbg/include/SDK/headers/ErrorCodes.h
+++ b/hyperdbg/include/SDK/headers/ErrorCodes.h
@@ -612,10 +612,10 @@
#define DEBUGGER_ERROR_LBR_NOT_SUPPORTED 0xc000005e
/**
- * @brief error, Dubugctl not supported on VMCS
+ * @brief error, LBR not supported on VMCS
*
*/
-#define DEBUGGER_ERROR_DEBUGCTL_NOT_SUPPORTED_ON_VMCS 0xc000005f
+#define DEBUGGER_ERROR_LBR_NOT_SUPPORTED_ON_VMCS 0xc000005f
/**
* @brief error, PT is already enabled
diff --git a/hyperdbg/include/SDK/modules/HyperTrace.h b/hyperdbg/include/SDK/modules/HyperTrace.h
index c773d22c..83eb4523 100644
--- a/hyperdbg/include/SDK/modules/HyperTrace.h
+++ b/hyperdbg/include/SDK/modules/HyperTrace.h
@@ -217,6 +217,10 @@ typedef struct _HYPERTRACE_CALLBACKS
//
VM_FUNC_VMX_GET_CURRENT_EXECUTION_MODE VmFuncVmxGetCurrentExecutionMode;
+ //
+ // *** Legacy LBR callbacks ***
+ //
+
VM_FUNC_CHECK_CPU_SUPPORT_FOR_SAVE_AND_LOAD_DEBUG_CONTROLS VmFuncCheckCpuSupportForSaveAndLoadDebugControls;
VM_FUNC_GET_DEBUGCTL VmFuncGetDebugctl;
@@ -232,6 +236,10 @@ typedef struct _HYPERTRACE_CALLBACKS
VM_FUNC_SET_LBR_SELECT VmFuncSetLbrSelect;
VM_FUNC_SET_LBR_SELECT_VMCALL_ON_TARGET_CORE VmFuncSetLbrSelectVmcallOnTargetCore;
+ //
+ // *** Architectural LBR callbacks ***
+ //
+
VM_FUNC_CHECK_CPU_SUPPORT_FOR_LOAD_AND_CLEAR_GUEST_IA32_LBR_CTL_CONTROLS VmFuncCheckCpuSupportForLoadAndClearGuestIa32LbrCtlControls;
VM_FUNC_GET_GUEST_IA32_LBR_CTL VmFuncGetGuestIa32LbrCtl;
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index 8367640e..d4ad8156 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -594,8 +594,8 @@ ShowErrorMessage(UINT32 Error)
Error);
break;
- case DEBUGGER_ERROR_DEBUGCTL_NOT_SUPPORTED_ON_VMCS:
- ShowMessages("err, Debugctl is not supported on VMCS (%x)\n",
+ case DEBUGGER_ERROR_LBR_NOT_SUPPORTED_ON_VMCS:
+ ShowMessages("err, LBR is not supported on VMCS (%x)\n",
Error);
break;
From 02e459d5f6d4e1738a314bf414fbcfefc40acb0c Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 2 May 2026 16:53:36 +0200
Subject: [PATCH 155/323] change setting LBR kernel status code
---
hyperdbg/hyperdbg.sln | 4 +-
hyperdbg/hypertrace/code/api/LbrApi.c | 83 ++++++++-----------
.../hypertrace/code/broadcast/DpcRoutines.c | 2 +-
hyperdbg/hypertrace/header/lbr/Lbr.h | 10 +--
.../{Intrinsics.c => PlatformIntrinsics.c} | 2 +-
.../{Intrinsics.h => PlatformIntrinsics.h} | 2 +-
6 files changed, 44 insertions(+), 59 deletions(-)
rename hyperdbg/include/platform/kernel/code/{Intrinsics.c => PlatformIntrinsics.c} (89%)
rename hyperdbg/include/platform/kernel/header/{Intrinsics.h => PlatformIntrinsics.h} (93%)
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 849f0b52..7495fe84 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -148,15 +148,15 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "kernel", "kernel", "{D0E5A2
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{6498728B-D9B0-4CAB-A9E3-ACE5BC371010}"
ProjectSection(SolutionItems) = preProject
- include\platform\kernel\code\Intrinsics.c = include\platform\kernel\code\Intrinsics.c
include\platform\kernel\code\PlatformMem.c = include\platform\kernel\code\PlatformMem.c
+ include\platform\kernel\code\PlatformIntrinsics.c = include\platform\kernel\code\PlatformIntrinsics.c
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{AA41FFF1-A730-433E-8D26-13DA5B653825}"
ProjectSection(SolutionItems) = preProject
- include\platform\kernel\header\Intrinsics.h = include\platform\kernel\header\Intrinsics.h
include\platform\kernel\header\pch.h = include\platform\kernel\header\pch.h
include\platform\kernel\header\PlatformMem.h = include\platform\kernel\header\PlatformMem.h
+ include\platform\kernel\header\PlatformIntrinsics.h = include\platform\kernel\header\PlatformIntrinsics.h
include\platform\kernel\header\PlatformModuleInfo.h = include\platform\kernel\header\PlatformModuleInfo.h
EndProjectSection
EndProject
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 1607ebda..998f3fbd 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -19,7 +19,7 @@
VOID
HyperTraceLbrExamplePerformTrace()
{
- if (LbrStart(LBR_SELECT))
+ if (LbrStart(LBR_SELECT_WITHOUT_FILTER))
{
for (volatile int i = 0; i < 50; i++)
{
@@ -57,6 +57,25 @@ HyperTraceLbrQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId)
return g_LastBranchRecordEnabled;
}
+/**
+ * @brief Set the kernel status in the HyperTrace operation request structure
+ *
+ * @param HyperTraceOperationRequest
+ * @param Status
+ *
+ * @return VOID
+ */
+VOID
+HyperTraceSetKernelStatus(
+ HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
+ UINT32 Status)
+{
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = Status;
+ }
+}
+
/**
* @brief Enable LBR tracing for HyperTrace
*
@@ -72,7 +91,7 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
//
if (g_LastBranchRecordEnabled)
{
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_ENABLED;
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_ENABLED);
return FALSE;
}
@@ -86,7 +105,7 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
//
if (!LbrCheckAndReadLegacyLbrDetails())
{
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_NOT_SUPPORTED;
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_NOT_SUPPORTED);
return FALSE;
}
}
@@ -99,7 +118,7 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
if ((g_ArchBasedLastBranchRecord && !g_Callbacks.VmFuncCheckCpuSupportForLoadAndClearGuestIa32LbrCtlControls()) ||
(!g_ArchBasedLastBranchRecord && !g_Callbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls()))
{
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_NOT_SUPPORTED_ON_VMCS;
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_NOT_SUPPORTED_ON_VMCS);
return FALSE;
}
}
@@ -117,7 +136,7 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
//
// Set successful status
//
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
return TRUE;
}
@@ -137,11 +156,7 @@ HyperTraceLbrDisable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReque
//
if (!g_LastBranchRecordEnabled)
{
- if (HyperTraceOperationRequest != NULL)
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_DISABLED;
- }
-
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
return FALSE;
}
@@ -158,10 +173,7 @@ HyperTraceLbrDisable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReque
//
// Set successful status
//
- if (HyperTraceOperationRequest != NULL)
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
- }
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
return TRUE;
}
@@ -181,11 +193,7 @@ HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest
//
if (!g_LastBranchRecordEnabled)
{
- if (HyperTraceOperationRequest != NULL)
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_DISABLED;
- }
-
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
return FALSE;
}
@@ -197,10 +205,7 @@ HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest
//
// Set successful status
//
- if (HyperTraceOperationRequest != NULL)
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
- }
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
return TRUE;
}
@@ -220,11 +225,7 @@ HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
//
if (!g_LastBranchRecordEnabled)
{
- if (HyperTraceOperationRequest != NULL)
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_DISABLED;
- }
-
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
return FALSE;
}
@@ -238,10 +239,7 @@ HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
//
// The operation was successful
//
- if (HyperTraceOperationRequest != NULL)
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
- }
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
return TRUE;
}
@@ -261,11 +259,7 @@ HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
//
if (!g_LastBranchRecordEnabled)
{
- if (HyperTraceOperationRequest != NULL)
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_DISABLED;
- }
-
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
return FALSE;
}
@@ -279,10 +273,7 @@ HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
//
// The operation was successful
//
- if (HyperTraceOperationRequest != NULL)
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
- }
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
return TRUE;
}
@@ -302,10 +293,7 @@ HyperTraceLbrUpdateFilterOptions(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOp
//
if (!g_LastBranchRecordEnabled)
{
- if (HyperTraceOperationRequest != NULL)
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_DISABLED;
- }
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
return FALSE;
}
@@ -317,10 +305,7 @@ HyperTraceLbrUpdateFilterOptions(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOp
//
// The operation was successful
//
- if (HyperTraceOperationRequest != NULL)
- {
- HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
- }
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
return TRUE;
}
diff --git a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
index 98de8082..24b125a6 100644
--- a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
@@ -56,7 +56,7 @@ DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
// Enable LBR on all cores from VMX-root mode by VMCALL
// By default, all filter options are disabled, which means all branch types will be captured
//
- LbrStart(LBR_SELECT);
+ LbrStart(LBR_SELECT_WITHOUT_FILTER);
//
// Wait for all DPCs to synchronize at this point
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index 8c20781f..db03e950 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -14,11 +14,11 @@
// Constants //
//////////////////////////////////////////////////
-#define MSR_LBR_TOS 0x000001C9
-#define MSR_LBR_NHM_FROM 0x00000680
-#define MSR_LBR_NHM_TO 0x000006C0
-#define MSR_LASTBRANCH_INFO_0 0x00000DC0
-#define LBR_SELECT 0x00000000
+#define MSR_LBR_TOS 0x000001C9
+#define MSR_LBR_NHM_FROM 0x00000680
+#define MSR_LBR_NHM_TO 0x000006C0
+#define MSR_LASTBRANCH_INFO_0 0x00000DC0
+#define LBR_SELECT_WITHOUT_FILTER 0x00000000
#define CPUID_ARCH_LAST_BRANCH_RECORD_INFORMATION 0x1c
diff --git a/hyperdbg/include/platform/kernel/code/Intrinsics.c b/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
similarity index 89%
rename from hyperdbg/include/platform/kernel/code/Intrinsics.c
rename to hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
index fd35b5dc..ec0b212e 100644
--- a/hyperdbg/include/platform/kernel/code/Intrinsics.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
@@ -1,5 +1,5 @@
/**
- * @file Intrinsics.c
+ * @file PlatformIntrinsics.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Implementation of cross platform APIs for intrinsic functions
* @details
diff --git a/hyperdbg/include/platform/kernel/header/Intrinsics.h b/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
similarity index 93%
rename from hyperdbg/include/platform/kernel/header/Intrinsics.h
rename to hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
index 66eaebe5..76c4adf8 100644
--- a/hyperdbg/include/platform/kernel/header/Intrinsics.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
@@ -1,5 +1,5 @@
/**
- * @file Intrinsics.h
+ * @file PlatformIntrinsics.h
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Cross platform APIs for intrinsic functions
* @details
From 0ef8a15ed4388654b4401a6ac3b105b32c0c7d20 Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 2 May 2026 17:38:33 +0200
Subject: [PATCH 156/323] port intrinsics functions to linux
---
hyperdbg/hyperhv/code/vmm/vmx/Vmx.c | 132 ---------
hyperdbg/hyperhv/header/vmm/vmx/Vmx.h | 27 --
hyperdbg/hyperhv/hyperhv.vcxproj | 2 +
hyperdbg/hyperhv/hyperhv.vcxproj.filters | 6 +
hyperdbg/hyperhv/pch.h | 5 +
.../platform/kernel/code/PlatformIntrinsics.c | 243 +++++++++++++++++
.../kernel/header/PlatformIntrinsics.h | 33 ++-
hyperdbg/linux/mock/kernel/Makefile | 9 +-
.../linux/mock/kernel/PlatformIntrinsics.c | 255 ++++++++++++++++++
hyperdbg/linux/mock/kernel/PlatformMem.c | 233 ++++++++++++++++
hyperdbg/linux/mock/kernel/mock.c | 8 +
hyperdbg/linux/mock/kernel/pch.h | 1 +
12 files changed, 791 insertions(+), 163 deletions(-)
create mode 100644 hyperdbg/linux/mock/kernel/PlatformIntrinsics.c
create mode 100644 hyperdbg/linux/mock/kernel/PlatformMem.c
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
index 1f7ed6e2..0abe5274 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
@@ -25,138 +25,6 @@ VmxVmread64(size_t Field,
return __vmx_vmread((size_t)Field, (size_t *)FieldValue);
}
-/**
- * @brief VMX VMREAD instruction (32-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmread32(size_t Field,
- UINT32 FieldValue)
-{
- UINT64 TargetField = 0ull;
-
- TargetField = FieldValue;
-
- return __vmx_vmread((size_t)Field, (size_t *)TargetField);
-}
-
-/**
- * @brief VMX VMREAD instruction (16-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmread16(size_t Field,
- UINT16 FieldValue)
-{
- UINT64 TargetField = 0ull;
-
- TargetField = FieldValue;
-
- return __vmx_vmread((size_t)Field, (size_t *)TargetField);
-}
-
-/**
- * @brief VMX VMREAD instruction (64-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmread64P(size_t Field,
- UINT64 * FieldValue)
-{
- return __vmx_vmread((size_t)Field, (size_t *)FieldValue);
-}
-
-/**
- * @brief VMX VMREAD instruction (32-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmread32P(size_t Field,
- UINT32 * FieldValue)
-{
- UINT64 TargetField = 0ull;
-
- TargetField = (UINT64)FieldValue;
-
- return __vmx_vmread((size_t)Field, (size_t *)TargetField);
-}
-
-/**
- * @brief VMX VMREAD instruction (16-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmread16P(size_t Field,
- UINT16 * FieldValue)
-{
- UINT64 TargetField = 0ull;
-
- TargetField = (UINT64)FieldValue;
-
- return __vmx_vmread((size_t)Field, (size_t *)TargetField);
-}
-
-/**
- * @brief VMX VMWRITE instruction (64-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmwrite64(size_t Field,
- UINT64 FieldValue)
-{
- return __vmx_vmwrite((size_t)Field, (size_t)FieldValue);
-}
-
-/**
- * @brief VMX VMWRITE instruction (32-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmwrite32(size_t Field,
- UINT32 FieldValue)
-{
- UINT64 TargetValue = NULL64_ZERO;
- TargetValue = (UINT64)FieldValue;
- return __vmx_vmwrite((size_t)Field, (size_t)TargetValue);
-}
-
-/**
- * @brief VMX VMWRITE instruction (16-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmwrite16(size_t Field,
- UINT16 FieldValue)
-{
- UINT64 TargetValue = NULL64_ZERO;
- TargetValue = (UINT64)FieldValue;
- return __vmx_vmwrite((size_t)Field, (size_t)TargetValue);
-}
-
/**
* @brief Check whether VMX Feature is supported or not
*
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h b/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h
index 41ab2a2d..08f9218e 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h
@@ -229,33 +229,6 @@ typedef enum _MOV_TO_DEBUG_REG
// VMX Instructions //
//////////////////////////////////////////////////
-extern inline UCHAR
-VmxVmread64(size_t Field, UINT64 FieldValue);
-
-extern inline UCHAR
-VmxVmread32(size_t Field, UINT32 FieldValue);
-
-extern inline UCHAR
-VmxVmread16(size_t Field, UINT16 FieldValue);
-
-extern inline UCHAR
-VmxVmread64P(size_t Field, UINT64 * FieldValue);
-
-extern inline UCHAR
-VmxVmread32P(size_t Field, UINT32 * FieldValue);
-
-extern inline UCHAR
-VmxVmread16P(size_t Field, UINT16 * FieldValue);
-
-extern inline UCHAR
-VmxVmwrite64(size_t Field, UINT64 FieldValue);
-
-extern inline UCHAR
-VmxVmwrite32(size_t Field, UINT32 FieldValue);
-
-extern inline UCHAR
-VmxVmwrite16(size_t Field, UINT16 FieldValue);
-
VOID
VmxVmptrst();
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj b/hyperdbg/hyperhv/hyperhv.vcxproj
index 42c6ffd4..62d7a6bc 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj
@@ -132,6 +132,7 @@
+
@@ -238,6 +239,7 @@
+
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj.filters b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
index c8239395..1b80c3a5 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj.filters
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
@@ -329,6 +329,9 @@
code\vmm\vmx
+
+ code\platform
+
@@ -607,6 +610,9 @@
header\vmm\vmx
+
+ header\platform
+
diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h
index 7f939959..c60d23be 100644
--- a/hyperdbg/hyperhv/pch.h
+++ b/hyperdbg/hyperhv/pch.h
@@ -62,6 +62,11 @@
//
#include "platform/kernel/header/PlatformMem.h"
+//
+// Platform intrinsics headers
+//
+#include "platform/kernel/header/PlatformIntrinsics.h"
+
//
// VMM Callbacks
//
diff --git a/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c b/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
index ec0b212e..3b3a203d 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
@@ -10,3 +10,246 @@
*
*/
#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformIntrinsics.h"
+
+/**
+ * @brief Linux inline-asm helper for VMREAD
+ * Mirrors __vmx_vmread: returns 0=success, 1=VMfail valid (ZF), 2=VMfail invalid (CF)
+ */
+static inline UCHAR
+__linux_vmx_vmread(size_t Field, size_t * FieldValue)
+{
+ unsigned char cf, zf;
+ __asm__ __volatile__(
+ "vmread %[field], %[val] \n\t"
+ "setc %[cf] \n\t"
+ "setz %[zf] \n\t"
+ : [val] "=rm"(*FieldValue),
+ [cf] "=qm"(cf),
+ [zf] "=qm"(zf)
+ : [field] "r"(Field)
+ : "cc");
+ return cf ? 2 : (zf ? 1 : 0);
+}
+
+/**
+ * @brief Linux inline-asm helper for VMWRITE
+ * Mirrors __vmx_vmwrite: returns 0=success, 1=VMfail valid (ZF), 2=VMfail invalid (CF)
+ */
+static inline UCHAR
+__linux_vmx_vmwrite(size_t Field, size_t FieldValue)
+{
+ unsigned char cf, zf;
+ __asm__ __volatile__(
+ "vmwrite %[val], %[field] \n\t"
+ "setc %[cf] \n\t"
+ "setz %[zf] \n\t"
+ : [cf] "=qm"(cf),
+ [zf] "=qm"(zf)
+ : [val] "rm"(FieldValue),
+ [field] "r"(Field)
+ : "cc");
+ return cf ? 2 : (zf ? 1 : 0);
+}
+
+#endif // defined(__linux__)
+
+/**
+ * @brief VMX VMREAD instruction (64-bit)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmread64(size_t Field,
+ UINT64 FieldValue)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmread((size_t)Field, (size_t *)FieldValue);
+#elif defined(__linux__)
+ return __linux_vmx_vmread((size_t)Field, (size_t *)FieldValue);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMREAD instruction (32-bit)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmread32(size_t Field,
+ UINT32 FieldValue)
+{
+ UINT64 TargetField = 0ull;
+ TargetField = FieldValue;
+
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmread((size_t)Field, (size_t *)TargetField);
+#elif defined(__linux__)
+ return __linux_vmx_vmread((size_t)Field, (size_t *)TargetField);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMREAD instruction (16-bit)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmread16(size_t Field,
+ UINT16 FieldValue)
+{
+ UINT64 TargetField = 0ull;
+ TargetField = FieldValue;
+
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmread((size_t)Field, (size_t *)TargetField);
+#elif defined(__linux__)
+ return __linux_vmx_vmread((size_t)Field, (size_t *)TargetField);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMREAD instruction (64-bit, pointer variant)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmread64P(size_t Field,
+ UINT64 * FieldValue)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmread((size_t)Field, (size_t *)FieldValue);
+#elif defined(__linux__)
+ return __linux_vmx_vmread((size_t)Field, (size_t *)FieldValue);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMREAD instruction (32-bit, pointer variant)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmread32P(size_t Field,
+ UINT32 * FieldValue)
+{
+ UINT64 TargetField = 0ull;
+ TargetField = (UINT64)FieldValue;
+
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmread((size_t)Field, (size_t *)TargetField);
+#elif defined(__linux__)
+ return __linux_vmx_vmread((size_t)Field, (size_t *)TargetField);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMREAD instruction (16-bit, pointer variant)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmread16P(size_t Field,
+ UINT16 * FieldValue)
+{
+ UINT64 TargetField = 0ull;
+ TargetField = (UINT64)FieldValue;
+
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmread((size_t)Field, (size_t *)TargetField);
+#elif defined(__linux__)
+ return __linux_vmx_vmread((size_t)Field, (size_t *)TargetField);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMWRITE instruction (64-bit)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmwrite64(size_t Field,
+ UINT64 FieldValue)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmwrite((size_t)Field, (size_t)FieldValue);
+#elif defined(__linux__)
+ return __linux_vmx_vmwrite((size_t)Field, (size_t)FieldValue);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMWRITE instruction (32-bit)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmwrite32(size_t Field,
+ UINT32 FieldValue)
+{
+ UINT64 TargetValue = NULL64_ZERO;
+ TargetValue = (UINT64)FieldValue;
+
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmwrite((size_t)Field, (size_t)TargetValue);
+#elif defined(__linux__)
+ return __linux_vmx_vmwrite((size_t)Field, (size_t)TargetValue);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMWRITE instruction (16-bit)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmwrite16(size_t Field,
+ UINT16 FieldValue)
+{
+ UINT64 TargetValue = NULL64_ZERO;
+ TargetValue = (UINT64)FieldValue;
+
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmwrite((size_t)Field, (size_t)TargetValue);
+#elif defined(__linux__)
+ return __linux_vmx_vmwrite((size_t)Field, (size_t)TargetValue);
+#else
+# error "Unsupported platform"
+#endif
+}
diff --git a/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h b/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
index 76c4adf8..64c2e885 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
@@ -10,8 +10,39 @@
*
*/
#pragma once
-#include "PlatformTypes.h"
+
+#if defined(__linux__)
+// # include "../../general/header/GeneralTypes.h"
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
+
+extern inline UCHAR
+VmxVmread64(size_t Field, UINT64 FieldValue);
+
+extern inline UCHAR
+VmxVmread32(size_t Field, UINT32 FieldValue);
+
+extern inline UCHAR
+VmxVmread16(size_t Field, UINT16 FieldValue);
+
+extern inline UCHAR
+VmxVmread64P(size_t Field, UINT64 * FieldValue);
+
+extern inline UCHAR
+VmxVmread32P(size_t Field, UINT32 * FieldValue);
+
+extern inline UCHAR
+VmxVmread16P(size_t Field, UINT16 * FieldValue);
+
+extern inline UCHAR
+VmxVmwrite64(size_t Field, UINT64 FieldValue);
+
+extern inline UCHAR
+VmxVmwrite32(size_t Field, UINT32 FieldValue);
+
+extern inline UCHAR
+VmxVmwrite16(size_t Field, UINT16 FieldValue);
diff --git a/hyperdbg/linux/mock/kernel/Makefile b/hyperdbg/linux/mock/kernel/Makefile
index 67c94f14..bdf38e55 100644
--- a/hyperdbg/linux/mock/kernel/Makefile
+++ b/hyperdbg/linux/mock/kernel/Makefile
@@ -1,20 +1,23 @@
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
-
obj-m := HyperDbg.o
HyperDbg-objs := mock.o \
- PlatformMem.o
+ PlatformMem.o \
+ PlatformIntrinsics.o
ccflags-y += -I$(PWD)/../../../include
ccflags-y += -I$(PWD)/../../../include/platform/kernel/header
ccflags-y += -I$(PWD)/../../../include/platform/kernel/code
-all: PlatformMem.c
+all: clean PlatformMem.c PlatformIntrinsics.c
$(MAKE) -C $(KDIR) M=$(PWD) modules
PlatformMem.c:
cp ../../../include/platform/kernel/code/PlatformMem.c $(PWD)/PlatformMem.c
+PlatformIntrinsics.c:
+ cp ../../../include/platform/kernel/code/PlatformIntrinsics.c $(PWD)/PlatformIntrinsics.c
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
rm -f $(PWD)/PlatformMem.c
+ rm -f $(PWD)/PlatformIntrinsics.c
\ No newline at end of file
diff --git a/hyperdbg/linux/mock/kernel/PlatformIntrinsics.c b/hyperdbg/linux/mock/kernel/PlatformIntrinsics.c
new file mode 100644
index 00000000..3b3a203d
--- /dev/null
+++ b/hyperdbg/linux/mock/kernel/PlatformIntrinsics.c
@@ -0,0 +1,255 @@
+/**
+ * @file PlatformIntrinsics.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for intrinsic functions
+ * @details
+ * @version 0.19
+ * @date 2026-04-27
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformIntrinsics.h"
+
+/**
+ * @brief Linux inline-asm helper for VMREAD
+ * Mirrors __vmx_vmread: returns 0=success, 1=VMfail valid (ZF), 2=VMfail invalid (CF)
+ */
+static inline UCHAR
+__linux_vmx_vmread(size_t Field, size_t * FieldValue)
+{
+ unsigned char cf, zf;
+ __asm__ __volatile__(
+ "vmread %[field], %[val] \n\t"
+ "setc %[cf] \n\t"
+ "setz %[zf] \n\t"
+ : [val] "=rm"(*FieldValue),
+ [cf] "=qm"(cf),
+ [zf] "=qm"(zf)
+ : [field] "r"(Field)
+ : "cc");
+ return cf ? 2 : (zf ? 1 : 0);
+}
+
+/**
+ * @brief Linux inline-asm helper for VMWRITE
+ * Mirrors __vmx_vmwrite: returns 0=success, 1=VMfail valid (ZF), 2=VMfail invalid (CF)
+ */
+static inline UCHAR
+__linux_vmx_vmwrite(size_t Field, size_t FieldValue)
+{
+ unsigned char cf, zf;
+ __asm__ __volatile__(
+ "vmwrite %[val], %[field] \n\t"
+ "setc %[cf] \n\t"
+ "setz %[zf] \n\t"
+ : [cf] "=qm"(cf),
+ [zf] "=qm"(zf)
+ : [val] "rm"(FieldValue),
+ [field] "r"(Field)
+ : "cc");
+ return cf ? 2 : (zf ? 1 : 0);
+}
+
+#endif // defined(__linux__)
+
+/**
+ * @brief VMX VMREAD instruction (64-bit)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmread64(size_t Field,
+ UINT64 FieldValue)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmread((size_t)Field, (size_t *)FieldValue);
+#elif defined(__linux__)
+ return __linux_vmx_vmread((size_t)Field, (size_t *)FieldValue);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMREAD instruction (32-bit)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmread32(size_t Field,
+ UINT32 FieldValue)
+{
+ UINT64 TargetField = 0ull;
+ TargetField = FieldValue;
+
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmread((size_t)Field, (size_t *)TargetField);
+#elif defined(__linux__)
+ return __linux_vmx_vmread((size_t)Field, (size_t *)TargetField);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMREAD instruction (16-bit)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmread16(size_t Field,
+ UINT16 FieldValue)
+{
+ UINT64 TargetField = 0ull;
+ TargetField = FieldValue;
+
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmread((size_t)Field, (size_t *)TargetField);
+#elif defined(__linux__)
+ return __linux_vmx_vmread((size_t)Field, (size_t *)TargetField);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMREAD instruction (64-bit, pointer variant)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmread64P(size_t Field,
+ UINT64 * FieldValue)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmread((size_t)Field, (size_t *)FieldValue);
+#elif defined(__linux__)
+ return __linux_vmx_vmread((size_t)Field, (size_t *)FieldValue);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMREAD instruction (32-bit, pointer variant)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmread32P(size_t Field,
+ UINT32 * FieldValue)
+{
+ UINT64 TargetField = 0ull;
+ TargetField = (UINT64)FieldValue;
+
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmread((size_t)Field, (size_t *)TargetField);
+#elif defined(__linux__)
+ return __linux_vmx_vmread((size_t)Field, (size_t *)TargetField);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMREAD instruction (16-bit, pointer variant)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmread16P(size_t Field,
+ UINT16 * FieldValue)
+{
+ UINT64 TargetField = 0ull;
+ TargetField = (UINT64)FieldValue;
+
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmread((size_t)Field, (size_t *)TargetField);
+#elif defined(__linux__)
+ return __linux_vmx_vmread((size_t)Field, (size_t *)TargetField);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMWRITE instruction (64-bit)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmwrite64(size_t Field,
+ UINT64 FieldValue)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmwrite((size_t)Field, (size_t)FieldValue);
+#elif defined(__linux__)
+ return __linux_vmx_vmwrite((size_t)Field, (size_t)FieldValue);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMWRITE instruction (32-bit)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmwrite32(size_t Field,
+ UINT32 FieldValue)
+{
+ UINT64 TargetValue = NULL64_ZERO;
+ TargetValue = (UINT64)FieldValue;
+
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmwrite((size_t)Field, (size_t)TargetValue);
+#elif defined(__linux__)
+ return __linux_vmx_vmwrite((size_t)Field, (size_t)TargetValue);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMWRITE instruction (16-bit)
+ * @param Field
+ * @param FieldValue
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmwrite16(size_t Field,
+ UINT16 FieldValue)
+{
+ UINT64 TargetValue = NULL64_ZERO;
+ TargetValue = (UINT64)FieldValue;
+
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmwrite((size_t)Field, (size_t)TargetValue);
+#elif defined(__linux__)
+ return __linux_vmx_vmwrite((size_t)Field, (size_t)TargetValue);
+#else
+# error "Unsupported platform"
+#endif
+}
diff --git a/hyperdbg/linux/mock/kernel/PlatformMem.c b/hyperdbg/linux/mock/kernel/PlatformMem.c
new file mode 100644
index 00000000..e3f75db8
--- /dev/null
+++ b/hyperdbg/linux/mock/kernel/PlatformMem.c
@@ -0,0 +1,233 @@
+/**
+ * @file PlatformMem.c
+ * @author Behrooz Abbassi (BehroozAbbassi@hyperdbg.org)
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @author alireza moradi (alish014)
+ * @brief Implementation of cross APIs for different platforms for memory allocation
+ * @details
+ * @version 0.1
+ * @date 2022-01-17
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformMem.h"
+#endif // defined(__linux__)
+
+/////////////////////////////////////////////////
+/// ... New Unified API ...
+/////////////////////////////////////////////////
+
+/**
+ * @brief Allocates a block of memory in the kernel pool.
+ * @details On Windows: Allocates from NonPagedPool and zeroes it.
+ * On Linux: Uses kzalloc (GFP_KERNEL) which zeroes memory.
+ *
+ * @param Size The number of bytes to allocate.
+ * @return PVOID Pointer to the allocated memory, or NULL on failure.
+ */
+PVOID
+PlatformAllocateMemory(
+ SIZE_T Size)
+{
+#ifdef _WIN32
+ PVOID Result = ExAllocatePool2(
+ POOL_FLAG_NON_PAGED, // non-paged pool
+ Size,
+ POOLTAG);
+
+ if (Result != NULL)
+ RtlSecureZeroMemory(Result, Size);
+
+ return Result;
+#else
+ // Linux Kernel: kzalloc allocates zeroed memory
+ PVOID ptr = kzalloc(Size, GFP_KERNEL);
+
+ if (ptr)
+ {
+ printk(KERN_INFO "MemAllocKernel: Allocated %zu bytes at %px\n", Size, ptr);
+ }
+ else
+ {
+ printk(KERN_ERR "MemAllocKernel: failed to allocate %zu bytes\n", Size);
+ }
+
+ return ptr;
+#endif
+}
+
+/**
+ * @brief Frees a previously allocated memory block.
+ * @param Memory Pointer to the memory block. Handles NULL safely.
+ */
+VOID
+PlatformFreeMemory(
+ PVOID Memory)
+{
+ if (!Memory)
+ return;
+
+#ifdef _WIN32
+ ExFreePoolWithTag(Memory, POOLTAG);
+#else
+ kfree(Memory);
+#endif
+}
+
+/**
+ * @brief Writes data from a buffer to a memory address.
+ * @param Process Reserved (unused).
+ * @param Address Destination address.
+ * @param Buffer Source buffer.
+ * @param Size Number of bytes to copy.
+ * @return VOID
+ */
+VOID
+PlatformWriteMemory(
+ PVOID Address, // Destination
+ PVOID Buffer, // Source
+ SIZE_T Size)
+{
+#ifdef _WIN32
+ RtlCopyMemory(Address, Buffer, Size);
+#else
+ memcpy(Address, Buffer, Size);
+#endif
+}
+
+/**
+ * @brief Sets a memory block to a specific value.
+ * @param Destination Memory address.
+ * @param Value Value to set.
+ * @param Size Number of bytes.
+ */
+VOID
+PlatformSetMemory(
+ PVOID Destination,
+ int Value,
+ SIZE_T Size)
+{
+ if (!Destination)
+ return;
+
+#ifdef _WIN32
+ RtlFillMemory(Destination, Size, Value);
+#else
+ memset(Destination, Value, Size);
+#endif
+}
+
+/////////////////////////////////////////////////
+/// ... Backward Compatibility / Specific APIs ...
+/////////////////////////////////////////////////
+
+/**
+ * @brief Allocates contiguous zeroed physical memory.
+ * @details On Windows: Uses MmAllocateContiguousMemory.
+ * On Linux: Uses kmalloc (which is usually physically contiguous) or dma_alloc_coherent.
+ * For simplicity in this driver, we map to kzalloc.
+ * @param NumberOfBytes Size in bytes.
+ * @return PVOID Pointer to memory or NULL.
+ */
+PVOID
+PlatformMemAllocateContiguousZeroedMemory(SIZE_T NumberOfBytes)
+{
+#ifdef _WIN32
+ PVOID Result = NULL;
+ PHYSICAL_ADDRESS MaxPhysicalAddr = {0};
+ MaxPhysicalAddr.QuadPart = MAXULONG64;
+
+ Result = MmAllocateContiguousMemory(NumberOfBytes, MaxPhysicalAddr);
+ if (Result != NULL)
+ RtlSecureZeroMemory(Result, NumberOfBytes);
+ return Result;
+#else
+ // In Linux, kmalloc/kzalloc returns physically contiguous memory
+ // (unless vmalloc is used, which we aren't using here).
+ return kzalloc(NumberOfBytes, GFP_KERNEL);
+#endif
+}
+
+/**
+ * @brief Allocates non-paged pool memory.
+ * @param NumberOfBytes Size in bytes.
+ * @return PVOID Pointer to memory.
+ */
+PVOID
+PlatformMemAllocateNonPagedPool(SIZE_T NumberOfBytes)
+{
+#ifdef _WIN32
+ return ExAllocatePool2(
+ POOL_FLAG_NON_PAGED,
+ NumberOfBytes,
+ POOLTAG);
+#else
+ // Linux kernel memory is non-paged by default (except vmalloc)
+ return kmalloc(NumberOfBytes, GFP_KERNEL);
+#endif
+}
+
+/**
+ * @brief Allocates non-paged pool memory with quota charging.
+ * @param NumberOfBytes Size in bytes.
+ * @return PVOID Pointer to memory.
+ */
+PVOID
+PlatformMemAllocateNonPagedPoolWithQuota(SIZE_T NumberOfBytes)
+{
+#ifdef _WIN32
+ // POOL_FLAG_USE_QUOTA is used with ExAllocatePool2
+ // Note: Ensure your WDK supports ExAllocatePool2, otherwise use ExAllocatePoolWithQuotaTag
+ return ExAllocatePool2(
+ POOL_FLAG_NON_PAGED | POOL_FLAG_USE_QUOTA,
+ NumberOfBytes,
+ POOLTAG);
+#else
+ // Quotas are not explicitly managed in simple Linux kernel allocations like this
+ return kmalloc(NumberOfBytes, GFP_KERNEL);
+#endif
+}
+
+/**
+ * @brief Allocates zeroed non-paged pool memory.
+ * @param NumberOfBytes Size in bytes.
+ * @return PVOID Pointer to memory.
+ */
+PVOID
+PlatformMemAllocateZeroedNonPagedPool(SIZE_T NumberOfBytes)
+{
+#ifdef _WIN32
+ PVOID Result = ExAllocatePool2(
+ POOL_FLAG_NON_PAGED,
+ NumberOfBytes,
+ POOLTAG);
+ if (Result != NULL)
+ RtlSecureZeroMemory(Result, NumberOfBytes);
+ return Result;
+#else
+ return kzalloc(NumberOfBytes, GFP_KERNEL);
+#endif
+}
+
+/**
+ * @brief Frees a memory pool.
+ * @param BufferAddress Pointer to the memory to free.
+ * @return PVOID (Void pointer in original API, usually ignored).
+ */
+PVOID
+PlatformMemFreePool(PVOID BufferAddress)
+{
+ if (!BufferAddress)
+ return NULL;
+
+#ifdef _WIN32
+ ExFreePoolWithTag(BufferAddress, POOLTAG);
+#else
+ kfree(BufferAddress);
+#endif
+ return NULL;
+}
diff --git a/hyperdbg/linux/mock/kernel/mock.c b/hyperdbg/linux/mock/kernel/mock.c
index be12c8f4..ed830f83 100644
--- a/hyperdbg/linux/mock/kernel/mock.c
+++ b/hyperdbg/linux/mock/kernel/mock.c
@@ -60,6 +60,14 @@ mock_init(void)
printk(KERN_INFO "Buffer zeroed\n");
+ /////////////////////////////////////////////////////////////////////////////////////
+ // Test codes (should be removed if running this kernel module)
+ //
+
+ VmxVmread64(0, 0); // Just to test the intrinsic wrapper compiles and links correctly
+
+ /////////////////////////////////////////////////////////////////////////////////////
+
return 0;
}
diff --git a/hyperdbg/linux/mock/kernel/pch.h b/hyperdbg/linux/mock/kernel/pch.h
index 2f017b49..2c08ec14 100644
--- a/hyperdbg/linux/mock/kernel/pch.h
+++ b/hyperdbg/linux/mock/kernel/pch.h
@@ -35,3 +35,4 @@
// Platform headers
//
#include "../../../include/platform/kernel/header/PlatformMem.h"
+#include "../../../include/platform/kernel/header/PlatformIntrinsics.h"
From 4e26d65626e5c9eee8849953f36a9fde099d79c5 Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 2 May 2026 17:49:15 +0200
Subject: [PATCH 157/323] add gitignore for files copied to the Linux mock
---
CHANGELOG.md | 5 +-
hyperdbg/linux/mock/kernel/.gitignore | 7 +
.../linux/mock/kernel/PlatformIntrinsics.c | 255 ------------------
hyperdbg/linux/mock/kernel/PlatformMem.c | 233 ----------------
4 files changed, 11 insertions(+), 489 deletions(-)
create mode 100644 hyperdbg/linux/mock/kernel/.gitignore
delete mode 100644 hyperdbg/linux/mock/kernel/PlatformIntrinsics.c
delete mode 100644 hyperdbg/linux/mock/kernel/PlatformMem.c
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7978296c..d7db8b3c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,8 +9,11 @@ New release of the HyperDbg Debugger.
### Added
- HyperTrace now enables/disables VM-entry/VM-exit controls for Load and Save IA32_DEBUGCTL MSR
-- Add mock application for compiling SDK for Linux
+- Added Legacy LBR support to the HyperTrace module
+- Added Architectural LBR support to the HyperTrace module
+- Added mock application for compiling SDK for Linux
- HyperDbg SDK now compiles on Linux (GCC) for both user-mode and kernel-mode
+- VMX instructions are ported to platform-independent files to support Linux
### Changed
- Fix the problem of not applying the EAX index in the CPUID event extension command ([link](https://docs.hyperdbg.org/commands/extension-commands/cpuid#parameters))
diff --git a/hyperdbg/linux/mock/kernel/.gitignore b/hyperdbg/linux/mock/kernel/.gitignore
new file mode 100644
index 00000000..69180853
--- /dev/null
+++ b/hyperdbg/linux/mock/kernel/.gitignore
@@ -0,0 +1,7 @@
+# Ignore all C source and header files copied into this directory
+*.c
+*.h
+
+# Except the files that permanently live here
+!mock.c
+!pch.h
\ No newline at end of file
diff --git a/hyperdbg/linux/mock/kernel/PlatformIntrinsics.c b/hyperdbg/linux/mock/kernel/PlatformIntrinsics.c
deleted file mode 100644
index 3b3a203d..00000000
--- a/hyperdbg/linux/mock/kernel/PlatformIntrinsics.c
+++ /dev/null
@@ -1,255 +0,0 @@
-/**
- * @file PlatformIntrinsics.c
- * @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Implementation of cross platform APIs for intrinsic functions
- * @details
- * @version 0.19
- * @date 2026-04-27
- *
- * @copyright This project is released under the GNU Public License v3.
- *
- */
-#include "pch.h"
-
-#if defined(__linux__)
-# include "../header/PlatformIntrinsics.h"
-
-/**
- * @brief Linux inline-asm helper for VMREAD
- * Mirrors __vmx_vmread: returns 0=success, 1=VMfail valid (ZF), 2=VMfail invalid (CF)
- */
-static inline UCHAR
-__linux_vmx_vmread(size_t Field, size_t * FieldValue)
-{
- unsigned char cf, zf;
- __asm__ __volatile__(
- "vmread %[field], %[val] \n\t"
- "setc %[cf] \n\t"
- "setz %[zf] \n\t"
- : [val] "=rm"(*FieldValue),
- [cf] "=qm"(cf),
- [zf] "=qm"(zf)
- : [field] "r"(Field)
- : "cc");
- return cf ? 2 : (zf ? 1 : 0);
-}
-
-/**
- * @brief Linux inline-asm helper for VMWRITE
- * Mirrors __vmx_vmwrite: returns 0=success, 1=VMfail valid (ZF), 2=VMfail invalid (CF)
- */
-static inline UCHAR
-__linux_vmx_vmwrite(size_t Field, size_t FieldValue)
-{
- unsigned char cf, zf;
- __asm__ __volatile__(
- "vmwrite %[val], %[field] \n\t"
- "setc %[cf] \n\t"
- "setz %[zf] \n\t"
- : [cf] "=qm"(cf),
- [zf] "=qm"(zf)
- : [val] "rm"(FieldValue),
- [field] "r"(Field)
- : "cc");
- return cf ? 2 : (zf ? 1 : 0);
-}
-
-#endif // defined(__linux__)
-
-/**
- * @brief VMX VMREAD instruction (64-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmread64(size_t Field,
- UINT64 FieldValue)
-{
-#if defined(_WIN32) || defined(_WIN64)
- return __vmx_vmread((size_t)Field, (size_t *)FieldValue);
-#elif defined(__linux__)
- return __linux_vmx_vmread((size_t)Field, (size_t *)FieldValue);
-#else
-# error "Unsupported platform"
-#endif
-}
-
-/**
- * @brief VMX VMREAD instruction (32-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmread32(size_t Field,
- UINT32 FieldValue)
-{
- UINT64 TargetField = 0ull;
- TargetField = FieldValue;
-
-#if defined(_WIN32) || defined(_WIN64)
- return __vmx_vmread((size_t)Field, (size_t *)TargetField);
-#elif defined(__linux__)
- return __linux_vmx_vmread((size_t)Field, (size_t *)TargetField);
-#else
-# error "Unsupported platform"
-#endif
-}
-
-/**
- * @brief VMX VMREAD instruction (16-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmread16(size_t Field,
- UINT16 FieldValue)
-{
- UINT64 TargetField = 0ull;
- TargetField = FieldValue;
-
-#if defined(_WIN32) || defined(_WIN64)
- return __vmx_vmread((size_t)Field, (size_t *)TargetField);
-#elif defined(__linux__)
- return __linux_vmx_vmread((size_t)Field, (size_t *)TargetField);
-#else
-# error "Unsupported platform"
-#endif
-}
-
-/**
- * @brief VMX VMREAD instruction (64-bit, pointer variant)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmread64P(size_t Field,
- UINT64 * FieldValue)
-{
-#if defined(_WIN32) || defined(_WIN64)
- return __vmx_vmread((size_t)Field, (size_t *)FieldValue);
-#elif defined(__linux__)
- return __linux_vmx_vmread((size_t)Field, (size_t *)FieldValue);
-#else
-# error "Unsupported platform"
-#endif
-}
-
-/**
- * @brief VMX VMREAD instruction (32-bit, pointer variant)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmread32P(size_t Field,
- UINT32 * FieldValue)
-{
- UINT64 TargetField = 0ull;
- TargetField = (UINT64)FieldValue;
-
-#if defined(_WIN32) || defined(_WIN64)
- return __vmx_vmread((size_t)Field, (size_t *)TargetField);
-#elif defined(__linux__)
- return __linux_vmx_vmread((size_t)Field, (size_t *)TargetField);
-#else
-# error "Unsupported platform"
-#endif
-}
-
-/**
- * @brief VMX VMREAD instruction (16-bit, pointer variant)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmread16P(size_t Field,
- UINT16 * FieldValue)
-{
- UINT64 TargetField = 0ull;
- TargetField = (UINT64)FieldValue;
-
-#if defined(_WIN32) || defined(_WIN64)
- return __vmx_vmread((size_t)Field, (size_t *)TargetField);
-#elif defined(__linux__)
- return __linux_vmx_vmread((size_t)Field, (size_t *)TargetField);
-#else
-# error "Unsupported platform"
-#endif
-}
-
-/**
- * @brief VMX VMWRITE instruction (64-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmwrite64(size_t Field,
- UINT64 FieldValue)
-{
-#if defined(_WIN32) || defined(_WIN64)
- return __vmx_vmwrite((size_t)Field, (size_t)FieldValue);
-#elif defined(__linux__)
- return __linux_vmx_vmwrite((size_t)Field, (size_t)FieldValue);
-#else
-# error "Unsupported platform"
-#endif
-}
-
-/**
- * @brief VMX VMWRITE instruction (32-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmwrite32(size_t Field,
- UINT32 FieldValue)
-{
- UINT64 TargetValue = NULL64_ZERO;
- TargetValue = (UINT64)FieldValue;
-
-#if defined(_WIN32) || defined(_WIN64)
- return __vmx_vmwrite((size_t)Field, (size_t)TargetValue);
-#elif defined(__linux__)
- return __linux_vmx_vmwrite((size_t)Field, (size_t)TargetValue);
-#else
-# error "Unsupported platform"
-#endif
-}
-
-/**
- * @brief VMX VMWRITE instruction (16-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmwrite16(size_t Field,
- UINT16 FieldValue)
-{
- UINT64 TargetValue = NULL64_ZERO;
- TargetValue = (UINT64)FieldValue;
-
-#if defined(_WIN32) || defined(_WIN64)
- return __vmx_vmwrite((size_t)Field, (size_t)TargetValue);
-#elif defined(__linux__)
- return __linux_vmx_vmwrite((size_t)Field, (size_t)TargetValue);
-#else
-# error "Unsupported platform"
-#endif
-}
diff --git a/hyperdbg/linux/mock/kernel/PlatformMem.c b/hyperdbg/linux/mock/kernel/PlatformMem.c
deleted file mode 100644
index e3f75db8..00000000
--- a/hyperdbg/linux/mock/kernel/PlatformMem.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/**
- * @file PlatformMem.c
- * @author Behrooz Abbassi (BehroozAbbassi@hyperdbg.org)
- * @author Sina Karvandi (sina@hyperdbg.org)
- * @author alireza moradi (alish014)
- * @brief Implementation of cross APIs for different platforms for memory allocation
- * @details
- * @version 0.1
- * @date 2022-01-17
- *
- * @copyright This project is released under the GNU Public License v3.
- *
- */
-#include "pch.h"
-
-#if defined(__linux__)
-# include "../header/PlatformMem.h"
-#endif // defined(__linux__)
-
-/////////////////////////////////////////////////
-/// ... New Unified API ...
-/////////////////////////////////////////////////
-
-/**
- * @brief Allocates a block of memory in the kernel pool.
- * @details On Windows: Allocates from NonPagedPool and zeroes it.
- * On Linux: Uses kzalloc (GFP_KERNEL) which zeroes memory.
- *
- * @param Size The number of bytes to allocate.
- * @return PVOID Pointer to the allocated memory, or NULL on failure.
- */
-PVOID
-PlatformAllocateMemory(
- SIZE_T Size)
-{
-#ifdef _WIN32
- PVOID Result = ExAllocatePool2(
- POOL_FLAG_NON_PAGED, // non-paged pool
- Size,
- POOLTAG);
-
- if (Result != NULL)
- RtlSecureZeroMemory(Result, Size);
-
- return Result;
-#else
- // Linux Kernel: kzalloc allocates zeroed memory
- PVOID ptr = kzalloc(Size, GFP_KERNEL);
-
- if (ptr)
- {
- printk(KERN_INFO "MemAllocKernel: Allocated %zu bytes at %px\n", Size, ptr);
- }
- else
- {
- printk(KERN_ERR "MemAllocKernel: failed to allocate %zu bytes\n", Size);
- }
-
- return ptr;
-#endif
-}
-
-/**
- * @brief Frees a previously allocated memory block.
- * @param Memory Pointer to the memory block. Handles NULL safely.
- */
-VOID
-PlatformFreeMemory(
- PVOID Memory)
-{
- if (!Memory)
- return;
-
-#ifdef _WIN32
- ExFreePoolWithTag(Memory, POOLTAG);
-#else
- kfree(Memory);
-#endif
-}
-
-/**
- * @brief Writes data from a buffer to a memory address.
- * @param Process Reserved (unused).
- * @param Address Destination address.
- * @param Buffer Source buffer.
- * @param Size Number of bytes to copy.
- * @return VOID
- */
-VOID
-PlatformWriteMemory(
- PVOID Address, // Destination
- PVOID Buffer, // Source
- SIZE_T Size)
-{
-#ifdef _WIN32
- RtlCopyMemory(Address, Buffer, Size);
-#else
- memcpy(Address, Buffer, Size);
-#endif
-}
-
-/**
- * @brief Sets a memory block to a specific value.
- * @param Destination Memory address.
- * @param Value Value to set.
- * @param Size Number of bytes.
- */
-VOID
-PlatformSetMemory(
- PVOID Destination,
- int Value,
- SIZE_T Size)
-{
- if (!Destination)
- return;
-
-#ifdef _WIN32
- RtlFillMemory(Destination, Size, Value);
-#else
- memset(Destination, Value, Size);
-#endif
-}
-
-/////////////////////////////////////////////////
-/// ... Backward Compatibility / Specific APIs ...
-/////////////////////////////////////////////////
-
-/**
- * @brief Allocates contiguous zeroed physical memory.
- * @details On Windows: Uses MmAllocateContiguousMemory.
- * On Linux: Uses kmalloc (which is usually physically contiguous) or dma_alloc_coherent.
- * For simplicity in this driver, we map to kzalloc.
- * @param NumberOfBytes Size in bytes.
- * @return PVOID Pointer to memory or NULL.
- */
-PVOID
-PlatformMemAllocateContiguousZeroedMemory(SIZE_T NumberOfBytes)
-{
-#ifdef _WIN32
- PVOID Result = NULL;
- PHYSICAL_ADDRESS MaxPhysicalAddr = {0};
- MaxPhysicalAddr.QuadPart = MAXULONG64;
-
- Result = MmAllocateContiguousMemory(NumberOfBytes, MaxPhysicalAddr);
- if (Result != NULL)
- RtlSecureZeroMemory(Result, NumberOfBytes);
- return Result;
-#else
- // In Linux, kmalloc/kzalloc returns physically contiguous memory
- // (unless vmalloc is used, which we aren't using here).
- return kzalloc(NumberOfBytes, GFP_KERNEL);
-#endif
-}
-
-/**
- * @brief Allocates non-paged pool memory.
- * @param NumberOfBytes Size in bytes.
- * @return PVOID Pointer to memory.
- */
-PVOID
-PlatformMemAllocateNonPagedPool(SIZE_T NumberOfBytes)
-{
-#ifdef _WIN32
- return ExAllocatePool2(
- POOL_FLAG_NON_PAGED,
- NumberOfBytes,
- POOLTAG);
-#else
- // Linux kernel memory is non-paged by default (except vmalloc)
- return kmalloc(NumberOfBytes, GFP_KERNEL);
-#endif
-}
-
-/**
- * @brief Allocates non-paged pool memory with quota charging.
- * @param NumberOfBytes Size in bytes.
- * @return PVOID Pointer to memory.
- */
-PVOID
-PlatformMemAllocateNonPagedPoolWithQuota(SIZE_T NumberOfBytes)
-{
-#ifdef _WIN32
- // POOL_FLAG_USE_QUOTA is used with ExAllocatePool2
- // Note: Ensure your WDK supports ExAllocatePool2, otherwise use ExAllocatePoolWithQuotaTag
- return ExAllocatePool2(
- POOL_FLAG_NON_PAGED | POOL_FLAG_USE_QUOTA,
- NumberOfBytes,
- POOLTAG);
-#else
- // Quotas are not explicitly managed in simple Linux kernel allocations like this
- return kmalloc(NumberOfBytes, GFP_KERNEL);
-#endif
-}
-
-/**
- * @brief Allocates zeroed non-paged pool memory.
- * @param NumberOfBytes Size in bytes.
- * @return PVOID Pointer to memory.
- */
-PVOID
-PlatformMemAllocateZeroedNonPagedPool(SIZE_T NumberOfBytes)
-{
-#ifdef _WIN32
- PVOID Result = ExAllocatePool2(
- POOL_FLAG_NON_PAGED,
- NumberOfBytes,
- POOLTAG);
- if (Result != NULL)
- RtlSecureZeroMemory(Result, NumberOfBytes);
- return Result;
-#else
- return kzalloc(NumberOfBytes, GFP_KERNEL);
-#endif
-}
-
-/**
- * @brief Frees a memory pool.
- * @param BufferAddress Pointer to the memory to free.
- * @return PVOID (Void pointer in original API, usually ignored).
- */
-PVOID
-PlatformMemFreePool(PVOID BufferAddress)
-{
- if (!BufferAddress)
- return NULL;
-
-#ifdef _WIN32
- ExFreePoolWithTag(BufferAddress, POOLTAG);
-#else
- kfree(BufferAddress);
-#endif
- return NULL;
-}
From ee72dd5f3f52bd9f908d6b8935b009a15a4adae2 Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 2 May 2026 19:04:09 +0200
Subject: [PATCH 158/323] convert all VMX instructions to platform independent
functions
---
hyperdbg/hyperdbg.sln | 4 +-
.../code/assembly/AsmVmexitHandler.asm | 4 +-
hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c | 2 +-
hyperdbg/hyperhv/code/vmm/vmx/Vmx.c | 43 ++--
hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c | 3 +-
hyperdbg/hyperhv/header/vmm/vmx/Vmx.h | 58 +++--
hyperdbg/hyperhv/hyperhv.vcxproj | 4 +-
hyperdbg/hyperhv/hyperhv.vcxproj.filters | 4 +-
hyperdbg/hyperhv/pch.h | 2 +-
...rmIntrinsics.c => PlatformIntrinsicsVmx.c} | 205 +++++++++++++++++-
...rmIntrinsics.h => PlatformIntrinsicsVmx.h} | 52 ++++-
hyperdbg/linux/mock/kernel/Makefile | 10 +-
hyperdbg/linux/mock/kernel/pch.h | 2 +-
13 files changed, 314 insertions(+), 79 deletions(-)
rename hyperdbg/include/platform/kernel/code/{PlatformIntrinsics.c => PlatformIntrinsicsVmx.c} (57%)
rename hyperdbg/include/platform/kernel/header/{PlatformIntrinsics.h => PlatformIntrinsicsVmx.h} (64%)
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 7495fe84..824ce779 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -148,15 +148,15 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "kernel", "kernel", "{D0E5A2
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{6498728B-D9B0-4CAB-A9E3-ACE5BC371010}"
ProjectSection(SolutionItems) = preProject
+ include\platform\kernel\code\PlatformIntrinsicsVmx.c = include\platform\kernel\code\PlatformIntrinsicsVmx.c
include\platform\kernel\code\PlatformMem.c = include\platform\kernel\code\PlatformMem.c
- include\platform\kernel\code\PlatformIntrinsics.c = include\platform\kernel\code\PlatformIntrinsics.c
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{AA41FFF1-A730-433E-8D26-13DA5B653825}"
ProjectSection(SolutionItems) = preProject
include\platform\kernel\header\pch.h = include\platform\kernel\header\pch.h
+ include\platform\kernel\header\PlatformIntrinsicsVmx.h = include\platform\kernel\header\PlatformIntrinsicsVmx.h
include\platform\kernel\header\PlatformMem.h = include\platform\kernel\header\PlatformMem.h
- include\platform\kernel\header\PlatformIntrinsics.h = include\platform\kernel\header\PlatformIntrinsics.h
include\platform\kernel\header\PlatformModuleInfo.h = include\platform\kernel\header\PlatformModuleInfo.h
EndProjectSection
EndProject
diff --git a/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm b/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
index fb195173..54476abd 100644
--- a/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
+++ b/hyperdbg/hyperhv/code/assembly/AsmVmexitHandler.asm
@@ -2,7 +2,7 @@ PUBLIC AsmVmexitHandler
PUBLIC AsmVmxoffRestoreXmmRegs
EXTERN VmxVmexitHandler:PROC
-EXTERN VmxVmresume:PROC
+EXTERN VmxPerformVmresume:PROC
EXTERN VmxReturnStackPointerForVmxoff:PROC
EXTERN VmxReturnInstructionPointerForVmxoff:PROC
@@ -138,7 +138,7 @@ RestoreState:
; ----------------------------------------------
- jmp VmxVmresume
+ jmp VmxPerformVmresume
AsmVmexitHandler ENDP
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
index 6d076751..b9e11f31 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
@@ -164,7 +164,7 @@ VmxVmcallHandler(VIRTUAL_MACHINE_STATE * VCpu,
}
case VMCALL_VMXOFF:
{
- VmxVmxoff(VCpu);
+ VmxPerformVmxoff(VCpu);
VmcallStatus = STATUS_SUCCESS;
break;
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
index 0abe5274..3da7a18e 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
@@ -11,20 +11,6 @@
*/
#include "pch.h"
-/**
- * @brief VMX VMREAD instruction (64-bit)
- * @param Field
- * @param FieldValue
- *
- * @return UCHAR
- */
-inline UCHAR
-VmxVmread64(size_t Field,
- UINT64 FieldValue)
-{
- return __vmx_vmread((size_t)Field, (size_t *)FieldValue);
-}
-
/**
* @brief Check whether VMX Feature is supported or not
*
@@ -530,7 +516,7 @@ VmxVirtualizeCurrentSystem(PVOID GuestStack)
VCpu->HasLaunched = TRUE;
- __vmx_vmlaunch();
+ VmxVmlaunch();
//
// ******** if Vmlaunch succeed will never be here ! ********
@@ -551,7 +537,7 @@ VmxVirtualizeCurrentSystem(PVOID GuestStack)
//
// Then Execute Vmxoff
//
- __vmx_off();
+ VmxVmxoff();
LogError("Err, VMXOFF Executed Successfully but it was because of an error");
return FALSE;
@@ -613,11 +599,11 @@ VmxTerminate()
* @return VOID
*/
VOID
-VmxVmptrst()
+VmxPerformVmptrst()
{
PHYSICAL_ADDRESS VmcsPhysicalAddr;
VmcsPhysicalAddr.QuadPart = 0;
- __vmx_vmptrst((unsigned __int64 *)&VmcsPhysicalAddr);
+ VmxVmptrst((UINT64 *)&VmcsPhysicalAddr);
LogDebugInfo("VMPTRST result : %llx", VmcsPhysicalAddr);
}
@@ -638,7 +624,7 @@ VmxClearVmcsState(VIRTUAL_MACHINE_STATE * VCpu)
//
// Clear the state of the VMCS to inactive
//
- VmclearStatus = __vmx_vmclear(&VCpu->VmcsRegionPhysicalAddress);
+ VmclearStatus = VmxVmclear(&VCpu->VmcsRegionPhysicalAddress);
LogDebugInfo("VMCS VMCLEAR status : 0x%x", VmclearStatus);
@@ -648,7 +634,8 @@ VmxClearVmcsState(VIRTUAL_MACHINE_STATE * VCpu)
// Otherwise terminate the VMX
//
LogDebugInfo("VMCS failed to clear, status : 0x%x", VmclearStatus);
- __vmx_off();
+ VmxVmxoff();
+
return FALSE;
}
return TRUE;
@@ -667,7 +654,8 @@ VmxLoadVmcs(VIRTUAL_MACHINE_STATE * VCpu)
{
int VmptrldStatus;
- VmptrldStatus = __vmx_vmptrld(&VCpu->VmcsRegionPhysicalAddress);
+ VmptrldStatus = VmxVmptrld(&VCpu->VmcsRegionPhysicalAddress);
+
if (VmptrldStatus)
{
LogDebugInfo("VMCS failed to load, status : 0x%x", VmptrldStatus);
@@ -900,23 +888,24 @@ VmxSetupVmcs(VIRTUAL_MACHINE_STATE * VCpu, PVOID GuestStack)
}
/**
- * @brief Resume VM using VMRESUME instruction
+ * @brief Resume VM using the VMRESUME instruction
*
* @return VOID
*/
VOID
-VmxVmresume()
+VmxPerformVmresume()
{
UINT32 ErrorCode = 0;
- __vmx_vmresume();
+ VmxVmresume();
//
// if VMRESUME succeed will never be here !
//
VmxVmread32P(VMCS_VM_INSTRUCTION_ERROR, &ErrorCode);
- __vmx_off();
+
+ VmxVmxoff();
//
// It's such a bad error because we don't where to go !
@@ -989,7 +978,7 @@ VmxVmfunc(UINT32 EptpIndex, UINT32 Function)
* @return VOID
*/
VOID
-VmxVmxoff(VIRTUAL_MACHINE_STATE * VCpu)
+VmxPerformVmxoff(VIRTUAL_MACHINE_STATE * VCpu)
{
UINT64 GuestRSP = 0; // Save a pointer to guest rsp for times that we want to return to previous guest stateS
UINT64 GuestRIP = 0; // Save a pointer to guest rip for times that we want to return to previous guest state
@@ -1056,7 +1045,7 @@ VmxVmxoff(VIRTUAL_MACHINE_STATE * VCpu)
//
// Execute Vmxoff
//
- __vmx_off();
+ VmxVmxoff();
//
// *** Note: After executing VMXOFF, XMM registers should not be used anymore
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c b/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c
index 9698462c..cfe0f4c7 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c
@@ -74,7 +74,8 @@ VmxAllocateVmxonRegion(VIRTUAL_MACHINE_STATE * VCpu)
//
// Execute Vmxon instruction
//
- VmxonStatus = __vmx_on(&AlignedVmxonRegionPhysicalAddr);
+ VmxonStatus = VmxVmxon(&AlignedVmxonRegionPhysicalAddr);
+
if (VmxonStatus)
{
LogError("Err, executing vmxon instruction failed with status : %d", VmxonStatus);
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h b/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h
index 08f9218e..c6b69ea2 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h
@@ -225,19 +225,6 @@ typedef enum _MOV_TO_DEBUG_REG
AccessFromDebugRegister = 1,
} MOV_TO_DEBUG_REG;
-//////////////////////////////////////////////////
-// VMX Instructions //
-//////////////////////////////////////////////////
-
-VOID
-VmxVmptrst();
-
-VOID
-VmxVmresume();
-
-VOID
-VmxVmxoff(VIRTUAL_MACHINE_STATE * VCpu);
-
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
@@ -254,24 +241,9 @@ VmxPerformVirtualizationOnAllCores();
BOOLEAN
VmxTerminate();
-VOID
-VmxPerformTermination();
-
-VOID
-VmxHandleXsetbv(VIRTUAL_MACHINE_STATE * VCpu);
-
-VOID
-VmxHandleVmxPreemptionTimerVmexit(VIRTUAL_MACHINE_STATE * VCpu);
-
-VOID
-VmxHandleTripleFaults(VIRTUAL_MACHINE_STATE * VCpu);
-
BOOLEAN
VmxPerformVirtualizationOnSpecificCore();
-VOID
-VmxFixCr4AndCr0Bits();
-
BOOLEAN
VmxLoadVmcs(_In_ VIRTUAL_MACHINE_STATE * VCpu);
@@ -287,6 +259,33 @@ VmxVirtualizeCurrentSystem(PVOID GuestStack);
BOOLEAN
VmxSetupVmcs(_In_ VIRTUAL_MACHINE_STATE * VCpu, _In_ PVOID GuestStack);
+VOID
+VmxPerformVmptrst();
+
+VOID
+VmxPerformVmresume();
+
+VOID
+VmxPerformVmxoff(VIRTUAL_MACHINE_STATE * VCpu);
+
+VOID
+VmxPerformTermination();
+
+VOID
+VmxHandleXsetbv(VIRTUAL_MACHINE_STATE * VCpu);
+
+VOID
+VmxHandleVmxPreemptionTimerVmexit(VIRTUAL_MACHINE_STATE * VCpu);
+
+VOID
+VmxHandleTripleFaults(VIRTUAL_MACHINE_STATE * VCpu);
+
+VOID
+VmxFixCr4AndCr0Bits();
+
+VOID
+VmxCompatibleMicroSleep(UINT64 ns);
+
UINT64
VmxReturnStackPointerForVmxoff();
@@ -321,6 +320,3 @@ INT32
VmxCompatibleMemcmp(const CHAR * Address1,
const CHAR * Address2,
size_t Count);
-
-VOID
-VmxCompatibleMicroSleep(UINT64 ns);
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj b/hyperdbg/hyperhv/hyperhv.vcxproj
index 62d7a6bc..4635e252 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj
@@ -132,7 +132,7 @@
-
+
@@ -239,7 +239,7 @@
-
+
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj.filters b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
index 1b80c3a5..4a74240d 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj.filters
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
@@ -329,7 +329,7 @@
code\vmm\vmx
-
+
code\platform
@@ -610,7 +610,7 @@
header\vmm\vmx
-
+
header\platform
diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h
index c60d23be..38fc58c6 100644
--- a/hyperdbg/hyperhv/pch.h
+++ b/hyperdbg/hyperhv/pch.h
@@ -65,7 +65,7 @@
//
// Platform intrinsics headers
//
-#include "platform/kernel/header/PlatformIntrinsics.h"
+#include "platform/kernel/header/PlatformIntrinsicsVmx.h"
//
// VMM Callbacks
diff --git a/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c b/hyperdbg/include/platform/kernel/code/PlatformIntrinsicsVmx.c
similarity index 57%
rename from hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
rename to hyperdbg/include/platform/kernel/code/PlatformIntrinsicsVmx.c
index 3b3a203d..020bc4be 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformIntrinsicsVmx.c
@@ -1,5 +1,5 @@
/**
- * @file PlatformIntrinsics.c
+ * @file PlatformIntrinsicsVmx.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Implementation of cross platform APIs for intrinsic functions
* @details
@@ -12,7 +12,10 @@
#include "pch.h"
#if defined(__linux__)
-# include "../header/PlatformIntrinsics.h"
+# include "../header/PlatformIntrinsicsVmx.h"
+#endif // defined(__linux__)
+
+#if defined(__linux__)
/**
* @brief Linux inline-asm helper for VMREAD
@@ -54,6 +57,77 @@ __linux_vmx_vmwrite(size_t Field, size_t FieldValue)
return cf ? 2 : (zf ? 1 : 0);
}
+/**
+ * @brief Linux inline-asm helper for VMPTRST
+ * Stores the current VMCS pointer into the given physical address
+ */
+static inline VOID
+__linux_vmx_vmptrst(UINT64 * VmcsPhysicalAddress)
+{
+ __asm__ __volatile__(
+ "vmptrst %[addr]"
+ :
+ : [addr] "m"(*VmcsPhysicalAddress)
+ : "memory");
+}
+
+/**
+ * @brief Linux inline-asm helper for VMPTRLD
+ * Returns 0=success, 1=VMfail valid (ZF), 2=VMfail invalid (CF)
+ */
+static inline UCHAR
+__linux_vmx_vmptrld(UINT64 * VmcsPhysicalAddress)
+{
+ unsigned char cf, zf;
+ __asm__ __volatile__(
+ "vmptrld %[addr] \n\t"
+ "setc %[cf] \n\t"
+ "setz %[zf] \n\t"
+ : [cf] "=qm"(cf),
+ [zf] "=qm"(zf)
+ : [addr] "m"(*VmcsPhysicalAddress)
+ : "cc", "memory");
+ return cf ? 2 : (zf ? 1 : 0);
+}
+
+/**
+ * @brief Linux inline-asm helper for VMCLEAR
+ * Returns 0=success, 1=VMfail valid (ZF), 2=VMfail invalid (CF)
+ */
+static inline UCHAR
+__linux_vmx_vmclear(UINT64 * VmcsPhysicalAddress)
+{
+ unsigned char cf, zf;
+ __asm__ __volatile__(
+ "vmclear %[addr] \n\t"
+ "setc %[cf] \n\t"
+ "setz %[zf] \n\t"
+ : [cf] "=qm"(cf),
+ [zf] "=qm"(zf)
+ : [addr] "m"(*VmcsPhysicalAddress)
+ : "cc", "memory");
+ return cf ? 2 : (zf ? 1 : 0);
+}
+
+/**
+ * @brief Linux inline-asm helper for VMXON
+ * Returns 0=success, 1=VMfail valid (ZF), 2=VMfail invalid (CF)
+ */
+static inline UCHAR
+__linux_vmx_vmxon(UINT64 * VmxonRegionPhysicalAddress)
+{
+ unsigned char cf, zf;
+ __asm__ __volatile__(
+ "vmxon %[addr] \n\t"
+ "setc %[cf] \n\t"
+ "setz %[zf] \n\t"
+ : [cf] "=qm"(cf),
+ [zf] "=qm"(zf)
+ : [addr] "m"(*VmxonRegionPhysicalAddress)
+ : "cc", "memory");
+ return cf ? 2 : (zf ? 1 : 0);
+}
+
#endif // defined(__linux__)
/**
@@ -253,3 +327,130 @@ VmxVmwrite16(size_t Field,
# error "Unsupported platform"
#endif
}
+
+/**
+ * @brief VMX VMPTRST instruction
+ *
+ * @param VmcsPhysicalAddress
+ *
+ * @return VOID
+ */
+inline VOID
+VmxVmptrst(UINT64 * VmcsPhysicalAddress)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __vmx_vmptrst(VmcsPhysicalAddress);
+#elif defined(__linux__)
+ __linux_vmx_vmptrst(VmcsPhysicalAddress);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMRESUME instruction
+ *
+ * @return VOID
+ */
+inline VOID
+VmxVmresume(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __vmx_vmresume();
+#elif defined(__linux__)
+ __asm__ __volatile__("vmresume" ::: "cc", "memory");
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMXOFF instruction
+ *
+ * @return VOID
+ */
+inline VOID
+VmxVmxoff(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __vmx_off();
+#elif defined(__linux__)
+ __asm__ __volatile__("vmxoff" ::: "cc", "memory");
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMLAUNCH instruction
+ *
+ * @return VOID
+ */
+inline VOID
+VmxVmlaunch(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __vmx_vmlaunch();
+#elif defined(__linux__)
+ __asm__ __volatile__("vmlaunch" ::: "cc", "memory");
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMPTRLD instruction
+ *
+ * @param VmcsPhysicalAddress
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmptrld(UINT64 * VmcsPhysicalAddress)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmptrld(VmcsPhysicalAddress);
+#elif defined(__linux__)
+ return __linux_vmx_vmptrld(VmcsPhysicalAddress);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMCLEAR instruction
+ *
+ * @param VmcsPhysicalAddress
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmclear(UINT64 * VmcsPhysicalAddress)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_vmclear(VmcsPhysicalAddress);
+#elif defined(__linux__)
+ return __linux_vmx_vmclear(VmcsPhysicalAddress);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief VMX VMXON instruction
+ *
+ * @param VmxonRegionPhysicalAddress
+ *
+ * @return UCHAR
+ */
+inline UCHAR
+VmxVmxon(UINT64 * VmxonRegionPhysicalAddress)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __vmx_on(VmxonRegionPhysicalAddress);
+#elif defined(__linux__)
+ return __linux_vmx_vmxon(VmxonRegionPhysicalAddress);
+#else
+# error "Unsupported platform"
+#endif
+}
diff --git a/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h b/hyperdbg/include/platform/kernel/header/PlatformIntrinsicsVmx.h
similarity index 64%
rename from hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
rename to hyperdbg/include/platform/kernel/header/PlatformIntrinsicsVmx.h
index 64c2e885..882c78ba 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformIntrinsicsVmx.h
@@ -1,5 +1,5 @@
/**
- * @file PlatformIntrinsics.h
+ * @file PlatformIntrinsicsVmx.h
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Cross platform APIs for intrinsic functions
* @details
@@ -17,9 +17,54 @@
#endif // defined(__linux__)
//////////////////////////////////////////////////
-// Functions //
+// VMX Instructions //
//////////////////////////////////////////////////
+//
+// VMPTRST
+//
+extern inline VOID
+VmxVmptrst(UINT64 * VmcsPhysicalAddress);
+
+//
+// VMPTRLD
+//
+extern inline UCHAR
+VmxVmptrld(UINT64 * VmcsPhysicalAddress);
+
+//
+// VMCLEAR
+//
+extern inline UCHAR
+VmxVmclear(UINT64 * VmcsPhysicalAddress);
+
+//
+// VMXON
+//
+extern inline UCHAR
+VmxVmxon(UINT64 * VmxonRegionPhysicalAddress);
+
+//
+// VMLAUNCH
+//
+extern inline VOID
+ VmxVmlaunch(VOID);
+
+//
+// VMRESUME
+//
+extern inline VOID
+ VmxVmresume(VOID);
+
+//
+// VMXOFF
+//
+extern inline VOID
+ VmxVmxoff(VOID);
+
+//
+// VMREAD
+//
extern inline UCHAR
VmxVmread64(size_t Field, UINT64 FieldValue);
@@ -38,6 +83,9 @@ VmxVmread32P(size_t Field, UINT32 * FieldValue);
extern inline UCHAR
VmxVmread16P(size_t Field, UINT16 * FieldValue);
+//
+// VMWRITE
+//
extern inline UCHAR
VmxVmwrite64(size_t Field, UINT64 FieldValue);
diff --git a/hyperdbg/linux/mock/kernel/Makefile b/hyperdbg/linux/mock/kernel/Makefile
index bdf38e55..a780931f 100644
--- a/hyperdbg/linux/mock/kernel/Makefile
+++ b/hyperdbg/linux/mock/kernel/Makefile
@@ -3,21 +3,21 @@ PWD := $(shell pwd)
obj-m := HyperDbg.o
HyperDbg-objs := mock.o \
PlatformMem.o \
- PlatformIntrinsics.o
+ PlatformIntrinsicsVmx.o
ccflags-y += -I$(PWD)/../../../include
ccflags-y += -I$(PWD)/../../../include/platform/kernel/header
ccflags-y += -I$(PWD)/../../../include/platform/kernel/code
-all: clean PlatformMem.c PlatformIntrinsics.c
+all: clean PlatformMem.c PlatformIntrinsicsVmx.c
$(MAKE) -C $(KDIR) M=$(PWD) modules
PlatformMem.c:
cp ../../../include/platform/kernel/code/PlatformMem.c $(PWD)/PlatformMem.c
-PlatformIntrinsics.c:
- cp ../../../include/platform/kernel/code/PlatformIntrinsics.c $(PWD)/PlatformIntrinsics.c
+PlatformIntrinsicsVmx.c:
+ cp ../../../include/platform/kernel/code/PlatformIntrinsicsVmx.c $(PWD)/PlatformIntrinsicsVmx.c
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
rm -f $(PWD)/PlatformMem.c
- rm -f $(PWD)/PlatformIntrinsics.c
\ No newline at end of file
+ rm -f $(PWD)/PlatformIntrinsicsVmx.c
\ No newline at end of file
diff --git a/hyperdbg/linux/mock/kernel/pch.h b/hyperdbg/linux/mock/kernel/pch.h
index 2c08ec14..52f370ff 100644
--- a/hyperdbg/linux/mock/kernel/pch.h
+++ b/hyperdbg/linux/mock/kernel/pch.h
@@ -35,4 +35,4 @@
// Platform headers
//
#include "../../../include/platform/kernel/header/PlatformMem.h"
-#include "../../../include/platform/kernel/header/PlatformIntrinsics.h"
+#include "../../../include/platform/kernel/header/PlatformIntrinsicsVmx.h"
From 8b593489e7960306f633240eb9816889c1c09d95 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 3 May 2026 01:03:19 +0200
Subject: [PATCH 159/323] change functions of LBR
---
.../hwdbg/script/script_definitions.scala | 2 +-
hyperdbg/hypertrace/code/api/LbrApi.c | 66 +-
hyperdbg/hypertrace/code/lbr/Lbr.c | 66 +-
hyperdbg/hypertrace/header/lbr/Lbr.h | 5 +-
.../include/SDK/headers/RequestStructures.h | 11 +-
.../headers/ScriptEngineCommonDefinitions.h | 112 +-
.../commands/extension-commands/lbr.cpp | 256 +--
hyperdbg/script-engine/code/parse-table.c | 1509 ++++++++---------
hyperdbg/script-engine/header/parse-table.h | 10 +-
.../python/Boolean_Expression_Grammar.txt | 2 +-
hyperdbg/script-engine/python/Grammar.txt | 4 +-
hyperdbg/script-eval/code/Functions.c | 26 +-
hyperdbg/script-eval/code/ScriptEngineEval.c | 10 +-
.../header/ScriptEngineInternalHeader.h | 5 +-
14 files changed, 1091 insertions(+), 993 deletions(-)
diff --git a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
index f76514d9..b7255b10 100644
--- a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
+++ b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
@@ -45,6 +45,6 @@ object ScriptConstantTypes {
object ScriptEvalFunc {
object ScriptOperators extends ChiselEnum {
- val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncLbr_flush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncLbr_save, sFuncLbr_dump, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
+ val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncLbr_save, sFuncLbr_print_all, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
}
}
\ No newline at end of file
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 998f3fbd..0c1a7432 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -198,9 +198,9 @@ HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest
}
//
- // Broadcast disabling LBR on all cores
+ // Broadcast flushing LBR on all cores
//
- BroadcastDisableLbrOnAllCores();
+ BroadcastFlushLbrOnAllCores();
//
// Set successful status
@@ -310,6 +310,50 @@ HyperTraceLbrUpdateFilterOptions(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOp
return TRUE;
}
+/**
+ * @brief Query LBR tracing for HyperTrace
+ *
+ * @param HyperTraceOperationRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceLbrQuery(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
+{
+ //
+ // Check if LBR is already disabled or not
+ //
+ if (!g_LastBranchRecordEnabled)
+ {
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
+ return FALSE;
+ }
+
+ LogInfo("Querying LBR Buffer...\n");
+
+ //
+ // Query the LBR state and fill the request structure with the results
+ //
+ if (LbrQuery(HyperTraceOperationRequest->LbrTargetCore,
+ &HyperTraceOperationRequest->LbrTos,
+ &HyperTraceOperationRequest->NumberOfSavedEntries))
+ {
+ //
+ // The operation was successful
+ //
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
+ }
+ else
+ {
+ //
+ // The operation was NOT successful
+ //
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_INVALID_CORE_ID);
+ }
+
+ return TRUE;
+}
+
/**
* @brief Perform actions related to HyperTrace LBR
*
@@ -352,22 +396,6 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
break;
- case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE:
-
- LogInfo("HyperTrace: Saving LBR tracing...\n");
-
- HyperTraceLbrSave(LbrOperationRequest);
-
- break;
-
- case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP:
-
- LogInfo("HyperTrace: Showing LBR tracing...\n");
-
- HyperTraceLbrDump(LbrOperationRequest);
-
- break;
-
case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FLUSH:
LogInfo("HyperTrace: Flushing LBR tracing...\n");
@@ -382,8 +410,6 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
HyperTraceLbrUpdateFilterOptions(LbrOperationRequest);
- break;
-
default:
Status = FALSE;
LbrOperationRequest->KernelStatus = DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE;
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 2544464e..b197d519 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -867,7 +867,7 @@ LbrSave()
if (!g_ArchBasedLastBranchRecord)
{
xrdmsr(MSR_LBR_TOS, &LbrTos);
- State->Tos = (UINT32)LbrTos;
+ State->Tos = (UINT8)LbrTos;
}
//
@@ -881,6 +881,70 @@ LbrSave()
}
}
+/**
+ * @brief Query LBR branches
+ *
+ * @param CoreId The ID of the core for which to query LBR branches
+ * @param LbrTos Pointer to receive the current TOS index (legacy LBR) or 0 (arch LBR)
+ * @param NumberOfSavedEntries Pointer to receive the number of valid saved LBR entries in the current core's state structure
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrQuery(UINT32 CoreId, UINT8 * LbrTos, UINT8 * NumberOfSavedEntries)
+{
+ LBR_STACK_ENTRY * State;
+ UINT8 LocalNumberOfSavedEntries = 0;
+ ULONG ProcessorsCount = KeQueryActiveProcessorCount(0);
+
+ //
+ // Check if the provided CoreId is valid
+ //
+ if (CoreId >= ProcessorsCount)
+ {
+ return FALSE;
+ }
+
+ //
+ // Get the target processor LBR stack
+ //
+ State = &g_LbrStateList[CoreId];
+
+ //
+ // Read and store the current TOS index to know where the most recent branch is stored
+ // Note that there is no TOS index in ARCH LBR since everything is in order
+ //
+ if (!g_ArchBasedLastBranchRecord)
+ {
+ *LbrTos = State->Tos;
+ }
+ else
+ {
+ *LbrTos = 0; // For ARCH LBR, we can set TOS to 0 since entries are in order
+ }
+
+ //
+ // Dump LBR entries into the current core's state structure
+ //
+ for (ULONG i = 0; i < (ULONG)LbrCapacity; i++)
+ {
+ if (State->BranchEntry[i].From == NULL64_ZERO && State->BranchEntry[i].To == NULL64_ZERO)
+ {
+ LocalNumberOfSavedEntries++;
+ }
+ }
+
+ //
+ // Set the number of valid saved entries
+ //
+ *NumberOfSavedEntries = LocalNumberOfSavedEntries;
+
+ //
+ // Return TRUE to indicate the query was successful
+ //
+ return TRUE;
+}
+
/**
* @brief Dump collected LBR branches
*
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index db03e950..b5319b94 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -174,7 +174,7 @@ typedef struct _LBR_STACK_ENTRY
{
LBR_BRANCH_ENTRY BranchEntry[MAXIMUM_LBR_CAPACITY];
MSR_LBR_INFO LastBranchInfo[MAXIMUM_LBR_CAPACITY];
- UINT32 Tos;
+ UINT8 Tos;
} LBR_STACK_ENTRY, PLBR_STACK_ENTRY;
@@ -217,6 +217,9 @@ LbrCheckAndReadArchitecturalLbrDetails();
BOOLEAN
LbrStart(UINT64 FilterOptions);
+BOOLEAN
+LbrQuery(UINT32 CoreId, UINT8 * LbrTos, UINT8 * NumberOfSavedEntries);
+
VOID
LbrFilter(UINT64 FilterOptions);
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index e3a80d62..221a4176 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1245,13 +1245,17 @@ typedef enum _HYPERTRACE_LBR_OPERATION_REQUEST_TYPE
{
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE,
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE,
- HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE,
- HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP,
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FLUSH,
+
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FILTER,
+ // HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_QUERY,
+ // HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP,
+
} HYPERTRACE_LBR_OPERATION_REQUEST_TYPE;
+
+
/**
* @brief The structure of HyperTrace LBR result packet in HyperDbg
*
@@ -1260,6 +1264,9 @@ typedef struct _HYPERTRACE_LBR_OPERATION_PACKETS
{
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE LbrOperationType;
UINT32 LbrFilterOptions;
+ UINT32 LbrTargetCore;
+ UINT8 LbrTos;
+ UINT8 NumberOfSavedEntries;
UINT32 KernelStatus;
} HYPERTRACE_LBR_OPERATION_PACKETS, *PHYPERTRACE_LBR_OPERATION_PACKETS;
diff --git a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
index ceb53e78..5b76a87e 100644
--- a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
+++ b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
@@ -143,61 +143,60 @@ static const char *const SymbolTypeNames[] = {
#define FUNC_PRINTF 46
#define FUNC_PAUSE 47
#define FUNC_FLUSH 48
-#define FUNC_LBR_FLUSH 49
-#define FUNC_EVENT_TRACE_STEP 50
-#define FUNC_EVENT_TRACE_STEP_IN 51
-#define FUNC_EVENT_TRACE_STEP_OUT 52
-#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP 53
-#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN 54
-#define FUNC_RDTSC 55
-#define FUNC_RDTSCP 56
-#define FUNC_LBR_SAVE 57
-#define FUNC_LBR_DUMP 58
-#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 59
-#define FUNC_EVENT_INJECT 60
-#define FUNC_POI 61
-#define FUNC_DB 62
-#define FUNC_DD 63
-#define FUNC_DW 64
-#define FUNC_DQ 65
-#define FUNC_NEG 66
-#define FUNC_HI 67
-#define FUNC_LOW 68
-#define FUNC_NOT 69
-#define FUNC_CHECK_ADDRESS 70
-#define FUNC_DISASSEMBLE_LEN 71
-#define FUNC_DISASSEMBLE_LEN32 72
-#define FUNC_DISASSEMBLE_LEN64 73
-#define FUNC_INTERLOCKED_INCREMENT 74
-#define FUNC_INTERLOCKED_DECREMENT 75
-#define FUNC_PHYSICAL_TO_VIRTUAL 76
-#define FUNC_VIRTUAL_TO_PHYSICAL 77
-#define FUNC_POI_PA 78
-#define FUNC_HI_PA 79
-#define FUNC_LOW_PA 80
-#define FUNC_DB_PA 81
-#define FUNC_DD_PA 82
-#define FUNC_DW_PA 83
-#define FUNC_DQ_PA 84
-#define FUNC_ED 85
-#define FUNC_EB 86
-#define FUNC_EQ 87
-#define FUNC_INTERLOCKED_EXCHANGE 88
-#define FUNC_INTERLOCKED_EXCHANGE_ADD 89
-#define FUNC_EB_PA 90
-#define FUNC_ED_PA 91
-#define FUNC_EQ_PA 92
-#define FUNC_INTERLOCKED_COMPARE_EXCHANGE 93
-#define FUNC_STRLEN 94
-#define FUNC_STRCMP 95
-#define FUNC_MEMCMP 96
-#define FUNC_STRNCMP 97
-#define FUNC_WCSLEN 98
-#define FUNC_WCSCMP 99
-#define FUNC_EVENT_INJECT_ERROR_CODE 100
-#define FUNC_MEMCPY 101
-#define FUNC_MEMCPY_PA 102
-#define FUNC_WCSNCMP 103
+#define FUNC_EVENT_TRACE_STEP 49
+#define FUNC_EVENT_TRACE_STEP_IN 50
+#define FUNC_EVENT_TRACE_STEP_OUT 51
+#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP 52
+#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN 53
+#define FUNC_RDTSC 54
+#define FUNC_RDTSCP 55
+#define FUNC_LBR_SAVE 56
+#define FUNC_LBR_PRINT_ALL 57
+#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 58
+#define FUNC_EVENT_INJECT 59
+#define FUNC_POI 60
+#define FUNC_DB 61
+#define FUNC_DD 62
+#define FUNC_DW 63
+#define FUNC_DQ 64
+#define FUNC_NEG 65
+#define FUNC_HI 66
+#define FUNC_LOW 67
+#define FUNC_NOT 68
+#define FUNC_CHECK_ADDRESS 69
+#define FUNC_DISASSEMBLE_LEN 70
+#define FUNC_DISASSEMBLE_LEN32 71
+#define FUNC_DISASSEMBLE_LEN64 72
+#define FUNC_INTERLOCKED_INCREMENT 73
+#define FUNC_INTERLOCKED_DECREMENT 74
+#define FUNC_PHYSICAL_TO_VIRTUAL 75
+#define FUNC_VIRTUAL_TO_PHYSICAL 76
+#define FUNC_POI_PA 77
+#define FUNC_HI_PA 78
+#define FUNC_LOW_PA 79
+#define FUNC_DB_PA 80
+#define FUNC_DD_PA 81
+#define FUNC_DW_PA 82
+#define FUNC_DQ_PA 83
+#define FUNC_ED 84
+#define FUNC_EB 85
+#define FUNC_EQ 86
+#define FUNC_INTERLOCKED_EXCHANGE 87
+#define FUNC_INTERLOCKED_EXCHANGE_ADD 88
+#define FUNC_EB_PA 89
+#define FUNC_ED_PA 90
+#define FUNC_EQ_PA 91
+#define FUNC_INTERLOCKED_COMPARE_EXCHANGE 92
+#define FUNC_STRLEN 93
+#define FUNC_STRCMP 94
+#define FUNC_MEMCMP 95
+#define FUNC_STRNCMP 96
+#define FUNC_WCSLEN 97
+#define FUNC_WCSCMP 98
+#define FUNC_EVENT_INJECT_ERROR_CODE 99
+#define FUNC_MEMCPY 100
+#define FUNC_MEMCPY_PA 101
+#define FUNC_WCSNCMP 102
static const char *const FunctionNames[] = {
"FUNC_UNDEFINED",
@@ -249,7 +248,6 @@ static const char *const FunctionNames[] = {
"FUNC_PRINTF",
"FUNC_PAUSE",
"FUNC_FLUSH",
-"FUNC_LBR_FLUSH",
"FUNC_EVENT_TRACE_STEP",
"FUNC_EVENT_TRACE_STEP_IN",
"FUNC_EVENT_TRACE_STEP_OUT",
@@ -258,7 +256,7 @@ static const char *const FunctionNames[] = {
"FUNC_RDTSC",
"FUNC_RDTSCP",
"FUNC_LBR_SAVE",
-"FUNC_LBR_DUMP",
+"FUNC_LBR_PRINT_ALL",
"FUNC_SPINLOCK_LOCK_CUSTOM_WAIT",
"FUNC_EVENT_INJECT",
"FUNC_POI",
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index d187706c..38963216 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -24,7 +24,7 @@ extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
VOID
CommandLbrHelp()
{
- ShowMessages("!lbr : enables and disables Last Branch Record (LBR).\n");
+ ShowMessages("!lbr : performs operation for Last Branch Record (LBR).\n");
ShowMessages("syntax : \t!lbr [Function (string)]\n");
ShowMessages("syntax : \t!lbr [filter FilterOptions (string)]\n");
@@ -32,8 +32,6 @@ CommandLbrHelp()
ShowMessages("\n");
ShowMessages("\t\te.g : !lbr enable\n");
ShowMessages("\t\te.g : !lbr disable\n");
- ShowMessages("\t\te.g : !lbr save\n");
- ShowMessages("\t\te.g : !lbr dump\n");
ShowMessages("\t\te.g : !lbr flush\n");
ShowMessages("\n");
@@ -131,6 +129,138 @@ HyperDbgPerformLbrOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrRequest)
{
return CommandLbrSendRequest(LbrRequest);
}
+/**
+ * @brief Parses simple (no-argument) LBR operations: enable, disable, flush
+ *
+ * @param CommandTokens
+ * @param LbrRequest
+ *
+ * @return BOOLEAN TRUE if parsed successfully
+ */
+BOOLEAN
+CommandLbrParseSimpleOperation(vector CommandTokens, HYPERTRACE_LBR_OPERATION_PACKETS * LbrRequest)
+{
+ if (CommandTokens.size() != 2)
+ {
+ return FALSE;
+ }
+
+ if (CompareLowerCaseStrings(CommandTokens.at(1), "enable"))
+ {
+ LbrRequest->LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "disable"))
+ {
+ LbrRequest->LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "flush"))
+ {
+ LbrRequest->LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FLUSH;
+ }
+ else
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/**
+ * @brief Parses the LBR filter operation and accumulates filter option flags
+ *
+ * @param CommandTokens
+ * @param LbrRequest
+ *
+ * @return BOOLEAN TRUE if parsed successfully
+ */
+BOOLEAN
+CommandLbrParseFilterOperation(vector CommandTokens, HYPERTRACE_LBR_OPERATION_PACKETS * LbrRequest)
+{
+ LbrRequest->LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FILTER;
+ LbrRequest->LbrFilterOptions = 0; // no options = capture everything
+
+ for (size_t i = 2; i < CommandTokens.size(); i++)
+ {
+ if (CompareLowerCaseStrings(CommandTokens.at(i), "kernel"))
+ {
+ LbrRequest->LbrFilterOptions |= LBR_KERNEL;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "user"))
+ {
+ LbrRequest->LbrFilterOptions |= LBR_USER;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "jcc"))
+ {
+ LbrRequest->LbrFilterOptions |= LBR_JCC;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "rel_call"))
+ {
+ LbrRequest->LbrFilterOptions |= LBR_REL_CALL;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "ind_call"))
+ {
+ LbrRequest->LbrFilterOptions |= LBR_IND_CALL;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "return"))
+ {
+ LbrRequest->LbrFilterOptions |= LBR_RETURN;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "ind_jmp"))
+ {
+ LbrRequest->LbrFilterOptions |= LBR_IND_JMP;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "rel_jmp"))
+ {
+ LbrRequest->LbrFilterOptions |= LBR_REL_JMP;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "far"))
+ {
+ LbrRequest->LbrFilterOptions |= LBR_FAR;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "call_stack"))
+ {
+ LbrRequest->LbrFilterOptions |= LBR_CALL_STACK;
+ }
+ else
+ {
+ ShowMessages("unknown filter option '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(i)).c_str());
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+/**
+ * @brief Displays the success message appropriate for the completed LBR operation
+ *
+ * @param LbrRequest
+ *
+ * @return VOID
+ */
+VOID
+CommandLbrShowSuccessMessage(const HYPERTRACE_LBR_OPERATION_PACKETS * LbrRequest)
+{
+ switch (LbrRequest->LbrOperationType)
+ {
+ case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE:
+ ShowMessages("LBR enabled successfully\n");
+ break;
+ case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE:
+ ShowMessages("LBR disabled successfully\n");
+ break;
+ case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FLUSH:
+ ShowMessages("LBR branches are flushed\n");
+ break;
+ case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FILTER:
+ ShowMessages("LBR filter options are updated successfully\n");
+ break;
+ default:
+ ShowMessages("unknown LBR operation type\n");
+ break;
+ }
+}
/**
* @brief !lbr command handler
@@ -143,100 +273,36 @@ HyperDbgPerformLbrOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrRequest)
VOID
CommandLbr(vector CommandTokens, string Command)
{
- HYPERTRACE_LBR_OPERATION_PACKETS LbrRequest = {0};
+ HYPERTRACE_LBR_OPERATION_PACKETS LbrRequest = {0};
+ BOOLEAN ParseResult = FALSE;
if (CommandTokens.size() == 1)
{
ShowMessages("incorrect use of the '%s'\n\n",
GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
-
CommandLbrHelp();
return;
}
//
- // Parse the LBR operation type
+ // Dispatch to the appropriate parser based on the subcommand
//
- if (CompareLowerCaseStrings(CommandTokens.at(1), "enable") && CommandTokens.size() == 2)
+ if (CompareLowerCaseStrings(CommandTokens.at(1), "enable") ||
+ CompareLowerCaseStrings(CommandTokens.at(1), "disable") ||
+ CompareLowerCaseStrings(CommandTokens.at(1), "flush"))
{
- LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE;
- }
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "disable") && CommandTokens.size() == 2)
- {
- LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE;
- }
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "save") && CommandTokens.size() == 2)
- {
- LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE;
- }
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "dump") && CommandTokens.size() == 2)
- {
- LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP;
- }
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "flush") && CommandTokens.size() == 2)
- {
- LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FLUSH;
+ ParseResult = CommandLbrParseSimpleOperation(CommandTokens, &LbrRequest);
}
else if (CompareLowerCaseStrings(CommandTokens.at(1), "filter"))
{
- LbrRequest.LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FILTER;
- LbrRequest.LbrFilterOptions = 0; // filter without any option means capture everything
-
- //
- // Parse filter options
- //
- for (size_t i = 2; i < CommandTokens.size(); i++)
- {
- if (CompareLowerCaseStrings(CommandTokens.at(i), "kernel"))
- {
- LbrRequest.LbrFilterOptions |= LBR_KERNEL;
- }
- else if (CompareLowerCaseStrings(CommandTokens.at(i), "user"))
- {
- LbrRequest.LbrFilterOptions |= LBR_USER;
- }
- else if (CompareLowerCaseStrings(CommandTokens.at(i), "jcc"))
- {
- LbrRequest.LbrFilterOptions |= LBR_JCC;
- }
- else if (CompareLowerCaseStrings(CommandTokens.at(i), "rel_call"))
- {
- LbrRequest.LbrFilterOptions |= LBR_REL_CALL;
- }
- else if (CompareLowerCaseStrings(CommandTokens.at(i), "ind_call"))
- {
- LbrRequest.LbrFilterOptions |= LBR_IND_CALL;
- }
- else if (CompareLowerCaseStrings(CommandTokens.at(i), "return"))
- {
- LbrRequest.LbrFilterOptions |= LBR_RETURN;
- }
- else if (CompareLowerCaseStrings(CommandTokens.at(i), "ind_jmp"))
- {
- LbrRequest.LbrFilterOptions |= LBR_IND_JMP;
- }
- else if (CompareLowerCaseStrings(CommandTokens.at(i), "rel_jmp"))
- {
- LbrRequest.LbrFilterOptions |= LBR_REL_JMP;
- }
- else if (CompareLowerCaseStrings(CommandTokens.at(i), "far"))
- {
- LbrRequest.LbrFilterOptions |= LBR_FAR;
- }
- else if (CompareLowerCaseStrings(CommandTokens.at(i), "call_stack"))
- {
- LbrRequest.LbrFilterOptions |= LBR_CALL_STACK;
- }
- else
- {
- ShowMessages("unknown filter option '%s'\n\n",
- GetCaseSensitiveStringFromCommandToken(CommandTokens.at(i)).c_str());
- CommandLbrHelp();
- return;
- }
- }
+ ParseResult = CommandLbrParseFilterOperation(CommandTokens, &LbrRequest);
}
else
+ {
+ ParseResult = FALSE;
+ }
+
+ if (!ParseResult)
{
ShowMessages("incorrect use of the '%s'\n\n",
GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
@@ -249,38 +315,10 @@ CommandLbr(vector CommandTokens, string Command)
//
if (CommandLbrSendRequest(&LbrRequest))
{
- if (LbrRequest.LbrOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE)
- {
- ShowMessages("LBR enabled successfully\n");
- }
- else if (LbrRequest.LbrOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE)
- {
- ShowMessages("LBR disabled successfully\n");
- }
- else if (LbrRequest.LbrOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_SAVE)
- {
- ShowMessages("LBR branches are saved\n");
- }
- else if (LbrRequest.LbrOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DUMP)
- {
- ShowMessages("LBR branches are shown\n");
- }
- else if (LbrRequest.LbrOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FLUSH)
- {
- ShowMessages("LBR branches are flush\n");
- }
- else if (LbrRequest.LbrOperationType == HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FILTER)
- {
- ShowMessages("LBR filter options are updated successfully\n");
- }
- else
- {
- ShowMessages("unknown LBR operation type\n");
- }
+ CommandLbrShowSuccessMessage(&LbrRequest);
}
else
{
ShowErrorMessage(LbrRequest.KernelStatus);
- return;
}
}
diff --git a/hyperdbg/script-engine/code/parse-table.c b/hyperdbg/script-engine/code/parse-table.c
index 5647b26b..c538a010 100644
--- a/hyperdbg/script-engine/code/parse-table.c
+++ b/hyperdbg/script-engine/code/parse-table.c
@@ -142,7 +142,6 @@ const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
- {NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "VA"},
{NON_TERMINAL, "VA"},
{NON_TERMINAL, "IF_STATEMENT"},
@@ -367,7 +366,6 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "printf"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "STRING"},{SEMANTIC_RULE, "@VARGSTART"},{NON_TERMINAL, "VA"},{SEMANTIC_RULE, "@PRINTF"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "pause"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@PAUSE"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "flush"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@FLUSH"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "lbr_flush"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_FLUSH"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_step"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_STEP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_step_in"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_STEP_IN"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_step_out"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_STEP_OUT"},{SPECIAL_TOKEN, ")"}},
@@ -376,7 +374,7 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "rdtsc"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSC"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "rdtscp"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSCP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_SAVE"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_DUMP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "lbr_print_all"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_PRINT_ALL"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "spinlock_lock_custom_wait"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@SPINLOCK_LOCK_CUSTOM_WAIT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_inject"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_INJECT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
@@ -483,7 +481,7 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "rdtsc"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSC"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "rdtscp"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSCP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_SAVE"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_DUMP"},{SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "lbr_print_all"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_PRINT_ALL"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "db"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DB"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "dd"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DD"},{SPECIAL_TOKEN, ")"}},
@@ -652,7 +650,6 @@ const unsigned int RhsSize[RULES_COUNT]=
4,
4,
4,
-4,
5,
5,
5,
@@ -841,263 +838,262 @@ const unsigned int RhsSize[RULES_COUNT]=
};
const char* NoneTerminalMap[NONETERMINAL_COUNT]=
{
+"DO_WHILE_STATEMENT",
+"VARIABLE_TYPE2",
+"INIT_LIST",
+"E1",
+"CALL_FUNC_STATEMENT",
+"E5'",
+"ARRAY_DIMS_READ2",
+"INC_DEC",
+"E1'",
+"STRING",
+"VARIABLE_TYPE6",
+"WstringNumber",
+"INIT_LIST_CONT",
+"VARIABLE_TYPE1",
+"S",
+"E5",
+"INIT_LIST_TAIL",
+"VARIABLE_TYPE4",
+"ARRAY_DIMS2",
+"ARRAY_DIMS_WRITE",
+"L_VALUE",
+"WSTRING",
+"VA2",
+"ASSIGNMENT_STATEMENT'",
+"ARRAY_DIMS",
+"ARRAY_DIMS_WRITE2",
+"SIMPLE_ASSIGNMENT",
+"E0'",
+"ARRAY_DIMS_WRITE_OPT",
+"VARIABLE_TYPE5",
+"VA",
+"ARRAY_DIMS_READ_OPT",
+"E3'",
+"E2",
+"IF_STATEMENT",
+"E2'",
+"RETURN",
+"INIT_ITEM",
+"ELSIF_STATEMENT'",
+"CONST_NUMBER",
+"MULTIPLE_ASSIGNMENT",
+"WHILE_STATEMENT",
"ARRAY_DIMS_READ",
"ARRAY_INIT",
"ELSE_STATEMENT",
-"INC_DEC'",
-"ARRAY_DIMS_READ2",
-"E1'",
+"FOR_STATEMENT",
"VARIABLE_TYPE3",
-"RETURN",
-"VA",
-"INIT_LIST",
-"L_VALUE",
-"INIT_ITEM",
+"E3",
+"E12",
+"ASSIGNMENT_STATEMENT",
+"E4",
+"StringNumber",
+"E4'",
+"EXPRESSION",
+"ELSIF_STATEMENT",
+"MULTIPLE_ASSIGNMENT2",
+"VA3",
+"S2",
"STATEMENT",
"END_OF_IF",
-"ELSIF_STATEMENT",
-"SIMPLE_ASSIGNMENT",
-"E0'",
-"CALL_FUNC_STATEMENT",
-"E2'",
-"STRING",
-"VARIABLE_TYPE1",
-"ARRAY_DIMS",
-"ARRAY_DIMS_READ_OPT",
-"ARRAY_DIMS2",
-"ARRAY_DIMS_WRITE_OPT",
-"S2",
-"WHILE_STATEMENT",
-"StringNumber",
-"INC_DEC",
-"E12",
-"VA3",
-"FOR_STATEMENT",
-"E5'",
-"ASSIGNMENT_STATEMENT",
-"CONST_NUMBER",
-"MULTIPLE_ASSIGNMENT",
-"VARIABLE_TYPE2",
-"VARIABLE_TYPE6",
-"DO_WHILE_STATEMENT",
-"EXPRESSION",
-"E3",
-"VARIABLE_TYPE4",
-"E2",
-"WSTRING",
-"E5",
-"STATEMENT2",
-"VARIABLE_TYPE5",
-"INIT_LIST_TAIL",
-"E4",
-"ARRAY_DIMS_WRITE",
-"E4'",
-"ELSIF_STATEMENT'",
-"WstringNumber",
-"ASSIGNMENT_STATEMENT'",
-"IF_STATEMENT",
-"E3'",
-"E1",
-"ARRAY_DIMS_WRITE2",
+"INC_DEC'",
"BOOLEAN_EXPRESSION",
-"INIT_LIST_CONT",
-"VA2",
-"S",
-"MULTIPLE_ASSIGNMENT2"
+"STATEMENT2"
};
const char* TerminalMap[TERMINAL_COUNT]=
{
-"_decimal",
-"|=",
-"flush",
-"{",
-"+",
-"interlocked_exchange",
-"reference",
-"do",
-"&=",
-"check_address",
-"_local_id",
-"interlocked_exchange_add",
"spinlock_lock",
-"|",
-"if",
-"lbr_dump",
-"physical_to_virtual",
-"for",
-"disassemble_len",
-"_script_variable_type",
-"hi_pa",
-"_pseudo_register",
-"_wstring",
-">>",
-"return",
-"continue",
-"event_trace_instrumentation_step_in",
-"(",
-"lbr_flush",
-"event_disable",
-"db",
-"memcpy_pa",
-"dq",
-"spinlock_lock_custom_wait",
-",",
-"wcsncmp",
-"strlen",
-"_hex",
-"event_enable",
-"db_pa",
-"_string",
-"--",
-"hi",
-"neg",
-"interlocked_decrement",
-"interlocked_compare_exchange",
-"eb_pa",
-"&",
-"%=",
-"_function_id",
-"eq",
-"break",
-"while",
-"eb",
-"ed_pa",
-"virtual_to_physical",
-"}",
-"low_pa",
-"_global_id",
-"disassemble_len64",
-"#include",
-"printf",
-"dw",
-"event_trace_step",
"event_trace_step_in",
+"reference",
"else",
-"dd",
-"elsif",
-"not",
-"interlocked_increment",
-"microsleep",
-"_binary",
-"eq_pa",
-"disassemble_len32",
-"event_inject",
-"_function_parameter_id",
-"test_statement",
-"spinlock_unlock",
-"event_trace_step_out",
-"=",
+"+",
"*=",
-">>=",
-"~",
-"^=",
-"-=",
-"<<=",
-"strcmp",
-"_register",
-"wcscmp",
-"pause",
-"%",
-"lbr_save",
-"event_inject_error_code",
-"/",
-"strncmp",
-"memcmp",
-"formats",
-"]",
-"rdtscp",
-"event_sc",
-")",
-"_octal",
-"ed",
-"-",
-"*",
+"event_enable",
+"check_address",
+"return",
+"do",
"[",
-"++",
-";",
-"dd_pa",
-"event_clear",
-"/=",
-"print",
-"^",
-"event_trace_instrumentation_step",
-"poi_pa",
-"dq_pa",
-"low",
-"+=",
-"wcslen",
+"_global_id",
+"spinlock_unlock",
+"{",
+"|=",
"<<",
-"rdtsc",
-"poi",
+"_octal",
+"event_sc",
+"eb_pa",
+"disassemble_len32",
+"strcmp",
+"lbr_print_all",
"memcpy",
+"disassemble_len64",
+"while",
+"event_inject",
+"rdtsc",
+"eq",
+"_string",
+"&",
+"event_disable",
+"interlocked_compare_exchange",
+"low",
+"db",
+"(",
+",",
+"ed",
+">>",
+"db_pa",
+"ed_pa",
+"formats",
+"wcslen",
+"strlen",
+">>=",
+"|",
+"-",
+"<<=",
+"memcmp",
+"event_trace_instrumentation_step",
+"interlocked_exchange_add",
+"spinlock_lock_custom_wait",
+"interlocked_decrement",
+"disassemble_len",
+"_function_parameter_id",
"$",
-"dw_pa"
+"dq",
+"break",
+"printf",
+"_binary",
+"_function_id",
+";",
+"dw_pa",
+"wcsncmp",
+"/",
+"_script_variable_type",
+"if",
+"event_clear",
+"wcscmp",
+")",
+"continue",
+"eq_pa",
+"for",
+"dd",
+"poi_pa",
+"_register",
+"low_pa",
+"eb",
+"dd_pa",
+"physical_to_virtual",
+"_decimal",
+"_pseudo_register",
+"neg",
+"*",
+"pause",
+"dw",
+"+=",
+"=",
+"memcpy_pa",
+"}",
+"event_inject_error_code",
+"]",
+"flush",
+"++",
+"_wstring",
+"poi",
+"hi",
+"virtual_to_physical",
+"/=",
+"~",
+"event_trace_step_out",
+"event_trace_instrumentation_step_in",
+"interlocked_increment",
+"dq_pa",
+"_local_id",
+"_hex",
+"elsif",
+"lbr_save",
+"%",
+"not",
+"strncmp",
+"print",
+"^=",
+"event_trace_step",
+"interlocked_exchange",
+"^",
+"--",
+"-=",
+"%=",
+"hi_pa",
+"test_statement",
+"microsleep",
+"#include",
+"&=",
+"rdtscp"
};
const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]=
{
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,148 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 },
- {2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,163 ,167 ,2147483648 ,169 ,162 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,171 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,251 ,251 ,250 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,28 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {43 ,2147483648 ,2147483648 ,42 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 },
- {2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,5 ,2147483648 ,9 ,7 ,9 ,9 ,2147483648 ,3 ,9 ,9 ,6 ,9 ,12 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,8 ,9 ,10 ,4 ,9 ,9 ,9 ,2147483648 ,9 ,7 ,9 ,13 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,7 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,7 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,7 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 },
- {2147483648 ,2147483648 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 },
- {2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,145 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,126 ,113 ,2147483648 ,2147483648 ,107 ,2147483648 ,127 ,79 ,2147483648 ,2147483648 ,95 ,114 ,2147483648 ,108 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,86 ,76 ,99 ,140 ,102 ,96 ,2147483648 ,141 ,132 ,2147483648 ,75 ,119 ,2147483648 ,2147483648 ,104 ,103 ,112 ,131 ,128 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,124 ,129 ,115 ,2147483648 ,118 ,2147483648 ,110 ,2147483648 ,83 ,101 ,87 ,88 ,2147483648 ,100 ,2147483648 ,106 ,111 ,82 ,2147483648 ,130 ,109 ,97 ,2147483648 ,78 ,80 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,137 ,84 ,2147483648 ,94 ,138 ,2147483648 ,135 ,134 ,74 ,2147483648 ,93 ,81 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,77 ,2147483648 ,73 ,2147483648 ,90 ,116 ,122 ,105 ,2147483648 ,136 ,2147483648 ,92 ,98 ,139 ,2147483648 ,121 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,248 ,248 ,247 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,56 ,2147483648 ,56 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,15 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,16 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {273 ,2147483648 ,2147483648 ,2147483648 ,273 ,273 ,273 ,2147483648 ,2147483648 ,273 ,273 ,273 ,2147483648 ,2147483648 ,2147483648 ,273 ,273 ,2147483648 ,273 ,2147483648 ,273 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,273 ,2147483648 ,273 ,2147483648 ,2147483648 ,273 ,273 ,273 ,2147483648 ,273 ,274 ,2147483648 ,273 ,273 ,273 ,273 ,273 ,273 ,2147483648 ,273 ,273 ,2147483648 ,2147483648 ,273 ,273 ,273 ,2147483648 ,273 ,273 ,273 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,273 ,273 ,2147483648 ,273 ,273 ,273 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,273 ,273 ,273 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,273 ,273 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,273 ,273 ,273 ,273 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,273 ,273 ,2147483648 ,273 ,2147483648 ,273 ,273 ,2147483648 ,2147483648 ,273 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {256 ,2147483648 ,2147483648 ,2147483648 ,259 ,231 ,218 ,2147483648 ,2147483648 ,212 ,245 ,232 ,2147483648 ,2147483648 ,2147483648 ,202 ,219 ,2147483648 ,213 ,2147483648 ,222 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,204 ,2147483648 ,207 ,2147483648 ,2147483648 ,243 ,237 ,256 ,2147483648 ,224 ,2147483648 ,2147483648 ,209 ,208 ,217 ,236 ,233 ,262 ,2147483648 ,246 ,230 ,2147483648 ,2147483648 ,229 ,234 ,220 ,2147483648 ,223 ,245 ,215 ,2147483648 ,2147483648 ,206 ,2147483648 ,2147483648 ,2147483648 ,205 ,2147483648 ,211 ,216 ,2147483648 ,256 ,235 ,214 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,238 ,245 ,242 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,240 ,239 ,2147483648 ,2147483648 ,200 ,2147483648 ,2147483648 ,256 ,228 ,258 ,261 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 ,227 ,210 ,2147483648 ,241 ,2147483648 ,199 ,203 ,2147483648 ,2147483648 ,226 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,198 ,197 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {177 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,177 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,177 },
- {186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {194 ,2147483648 ,2147483648 ,2147483648 ,194 ,194 ,194 ,2147483648 ,2147483648 ,194 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,194 ,2147483648 ,194 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,194 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,194 ,194 ,194 ,194 ,194 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,194 ,194 ,194 ,2147483648 ,194 ,194 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,194 ,2147483648 ,194 ,194 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,194 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,194 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,194 ,194 ,2147483648 ,194 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,194 },
- {2147483648 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,23 ,19 ,2147483648 ,23 ,21 ,23 ,23 ,2147483648 ,17 ,23 ,23 ,20 ,23 ,26 ,23 ,2147483648 ,2147483648 ,2147483648 ,27 ,25 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,22 ,23 ,24 ,18 ,23 ,23 ,23 ,2147483648 ,23 ,21 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,21 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,21 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,21 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,190 ,2147483648 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,2147483648 ,147 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 },
- {275 ,2147483648 ,2147483648 ,2147483648 ,275 ,275 ,275 ,2147483648 ,2147483648 ,275 ,275 ,275 ,2147483648 ,2147483648 ,2147483648 ,275 ,275 ,2147483648 ,275 ,2147483648 ,275 ,275 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,275 ,2147483648 ,275 ,2147483648 ,2147483648 ,275 ,275 ,275 ,2147483648 ,275 ,2147483648 ,2147483648 ,275 ,275 ,275 ,275 ,275 ,275 ,2147483648 ,275 ,275 ,2147483648 ,2147483648 ,275 ,275 ,275 ,2147483648 ,275 ,275 ,275 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,275 ,275 ,2147483648 ,275 ,275 ,275 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,275 ,275 ,275 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,275 ,275 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,275 ,275 ,275 ,275 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,275 ,275 ,2147483648 ,275 ,2147483648 ,275 ,275 ,2147483648 ,2147483648 ,275 },
- {2147483648 ,72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,65 ,69 ,2147483648 ,71 ,64 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 },
- {2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,59 ,2147483648 ,59 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,47 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 },
- {270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,270 ,2147483648 ,269 ,270 ,270 ,270 ,270 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,270 ,270 ,2147483648 ,270 ,2147483648 ,270 ,270 ,2147483648 ,2147483648 ,270 },
- {2147483648 ,2147483648 ,0 ,1 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2 ,0 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,41 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 },
+ {2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,179 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 },
+ {79 ,87 ,112 ,2147483648 ,2147483648 ,2147483648 ,75 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,127 ,108 ,132 ,94 ,138 ,109 ,2147483648 ,96 ,91 ,124 ,2147483648 ,2147483648 ,76 ,130 ,104 ,98 ,2147483648 ,2147483648 ,122 ,2147483648 ,118 ,128 ,74 ,135 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,89 ,126 ,95 ,111 ,107 ,2147483648 ,2147483648 ,101 ,2147483648 ,83 ,2147483648 ,2147483648 ,2147483648 ,120 ,140 ,2147483648 ,2147483648 ,2147483648 ,77 ,136 ,2147483648 ,2147483648 ,129 ,2147483648 ,99 ,115 ,2147483648 ,117 ,123 ,119 ,113 ,2147483648 ,2147483648 ,102 ,2147483648 ,84 ,100 ,2147483648 ,2147483648 ,139 ,2147483648 ,137 ,2147483648 ,85 ,2147483648 ,2147483648 ,97 ,103 ,114 ,2147483648 ,2147483648 ,88 ,90 ,110 ,121 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,105 ,134 ,73 ,2147483648 ,86 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,78 ,82 ,2147483648 ,2147483648 ,92 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,250 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,181 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,274 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 },
+ {2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,46 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,1 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 },
+ {2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,193 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,268 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,269 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,69 ,2147483648 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,61 ,64 ,67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,178 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,247 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,188 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,182 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,184 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,28 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,29 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 },
+ {2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,42 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,43 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 },
+ {146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {148 ,148 ,148 ,147 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,148 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,185 ,185 ,185 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 },
+ {2147483648 ,2147483648 ,217 ,2147483648 ,258 ,2147483648 ,2147483648 ,211 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,232 ,213 ,237 ,201 ,2147483648 ,214 ,2147483648 ,2147483648 ,198 ,229 ,2147483648 ,261 ,2147483648 ,235 ,209 ,203 ,243 ,2147483648 ,227 ,2147483648 ,223 ,233 ,2147483648 ,240 ,236 ,2147483648 ,2147483648 ,257 ,2147483648 ,238 ,2147483648 ,231 ,2147483648 ,216 ,212 ,244 ,2147483648 ,206 ,2147483648 ,2147483648 ,255 ,245 ,2147483648 ,225 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,234 ,2147483648 ,204 ,220 ,244 ,222 ,228 ,224 ,218 ,255 ,256 ,207 ,260 ,2147483648 ,205 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,202 ,208 ,219 ,2147483648 ,259 ,2147483648 ,2147483648 ,215 ,226 ,244 ,255 ,2147483648 ,200 ,2147483648 ,210 ,239 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,199 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,189 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 },
+ {2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,273 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,272 ,272 ,272 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,192 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,176 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 },
+ {145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,144 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,15 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,16 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 },
+ {9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,5 ,2147483648 ,7 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,4 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,9 ,10 ,9 ,2147483648 ,8 ,2147483648 ,9 ,9 ,2147483648 ,12 ,3 ,9 ,9 ,2147483648 ,11 ,9 ,6 ,9 ,9 ,7 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,7 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,13 ,2147483648 ,9 },
+ {149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,158 ,161 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,27 ,19 ,2147483648 ,21 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,18 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,21 ,2147483648 ,23 ,24 ,23 ,2147483648 ,22 ,2147483648 ,23 ,23 ,2147483648 ,26 ,17 ,23 ,23 ,2147483648 ,25 ,23 ,20 ,23 ,23 ,21 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,21 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,21 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 }
};
const char* KeywordList[]= {
"print",
@@ -1113,7 +1109,6 @@ const char* KeywordList[]= {
"printf",
"pause",
"flush",
-"lbr_flush",
"event_trace_step",
"event_trace_step_in",
"event_trace_step_out",
@@ -1122,7 +1117,7 @@ const char* KeywordList[]= {
"rdtsc",
"rdtscp",
"lbr_save",
-"lbr_dump",
+"lbr_print_all",
"spinlock_lock_custom_wait",
"event_inject",
"poi",
@@ -1172,7 +1167,7 @@ const char* KeywordList[]= {
"rdtsc",
"rdtscp",
"lbr_save",
-"lbr_dump",
+"lbr_print_all",
"poi",
"db",
"dd",
@@ -1333,7 +1328,6 @@ const char* TwoOpFunc4[] = {
const char* ZeroOpFunc1[] = {
"@PAUSE",
"@FLUSH",
-"@LBR_FLUSH",
"@EVENT_TRACE_STEP",
"@EVENT_TRACE_STEP_IN",
"@EVENT_TRACE_STEP_OUT",
@@ -1344,7 +1338,7 @@ const char* ZeroOpFunc2[] = {
"@RDTSC",
"@RDTSCP",
"@LBR_SAVE",
-"@LBR_DUMP",
+"@LBR_PRINT_ALL",
};
const char* VarArgFunc1[] = {
"@PRINTF"
@@ -1398,7 +1392,6 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@PRINTF", FUNC_PRINTF},
{"@PAUSE", FUNC_PAUSE},
{"@FLUSH", FUNC_FLUSH},
-{"@LBR_FLUSH", FUNC_LBR_FLUSH},
{"@EVENT_TRACE_STEP", FUNC_EVENT_TRACE_STEP},
{"@EVENT_TRACE_STEP_IN", FUNC_EVENT_TRACE_STEP_IN},
{"@EVENT_TRACE_STEP_OUT", FUNC_EVENT_TRACE_STEP_OUT},
@@ -1407,7 +1400,7 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@RDTSC", FUNC_RDTSC},
{"@RDTSCP", FUNC_RDTSCP},
{"@LBR_SAVE", FUNC_LBR_SAVE},
-{"@LBR_DUMP", FUNC_LBR_DUMP},
+{"@LBR_PRINT_ALL", FUNC_LBR_PRINT_ALL},
{"@SPINLOCK_LOCK_CUSTOM_WAIT", FUNC_SPINLOCK_LOCK_CUSTOM_WAIT},
{"@EVENT_INJECT", FUNC_EVENT_INJECT},
{"@POI", FUNC_POI},
@@ -1457,7 +1450,7 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@RDTSC", FUNC_RDTSC},
{"@RDTSCP", FUNC_RDTSCP},
{"@LBR_SAVE", FUNC_LBR_SAVE},
-{"@LBR_DUMP", FUNC_LBR_DUMP},
+{"@LBR_PRINT_ALL", FUNC_LBR_PRINT_ALL},
{"@POI", FUNC_POI},
{"@DB", FUNC_DB},
{"@DD", FUNC_DD},
@@ -1831,7 +1824,7 @@ const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "disassemble_len32"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN32"}},
{{KEYWORD, "disassemble_len64"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN64"}},
{{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_SAVE"}},
- {{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_DUMP"}},
+ {{KEYWORD, "lbr_print_all"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_PRINT_ALL"}},
{{KEYWORD, "interlocked_increment"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"}},
{{KEYWORD, "interlocked_decrement"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"}},
{{KEYWORD, "reference"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@REFERENCE"}},
@@ -2006,119 +1999,119 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
};
const char* LalrNoneTerminalMap[NONETERMINAL_COUNT]=
{
-"B3",
-"BE",
-"E10",
-"B2",
-"EXP",
-"ARRAY2",
-"B1",
-"STRING",
-"ARRAY3",
-"CMP",
-"StringNumber",
-"E12",
-"VA3",
-"B6",
-"E3",
-"E13",
-"WSTRING",
-"E5",
"ARRAY1",
-"ARRAY4",
-"B5",
-"B4",
-"E4",
+"CMP",
+"STRING",
"WstringNumber",
+"B5",
+"S",
+"E5",
+"B6",
+"ARRAY4",
+"WSTRING",
+"ARRAY2",
"VA2",
-"S"
+"E10",
+"EXP",
+"B1",
+"B2",
+"E12",
+"E3",
+"B4",
+"ARRAY3",
+"E4",
+"BE",
+"E13",
+"StringNumber",
+"VA3",
+"B3"
};
const char* LalrTerminalMap[TERMINAL_COUNT]=
{
-"_decimal",
-"+",
-"interlocked_exchange",
"reference",
-"check_address",
-"_local_id",
-"interlocked_exchange_add",
-"|",
-"lbr_dump",
-"physical_to_virtual",
-"disassemble_len",
-"hi_pa",
-"_pseudo_register",
-"_wstring",
-">>",
-"(",
-">=",
-"db",
-"==",
-"dq",
-",",
-"wcsncmp",
-"strlen",
-"_hex",
-"db_pa",
-"_string",
"!=",
-"hi",
-"neg",
-"interlocked_decrement",
-"interlocked_compare_exchange",
-"eb_pa",
-"&",
-"eq",
-"_function_id",
-"eb",
-"ed_pa",
-"virtual_to_physical",
-"low_pa",
-"_global_id",
-"disassemble_len64",
-"dw",
-"dd",
-"not",
-"interlocked_increment",
-"_binary",
-"eq_pa",
-"disassemble_len32",
-"_function_parameter_id",
-"~",
-"strcmp",
-"_register",
-"wcscmp",
-"%",
-">",
-"lbr_save",
-"/",
-"strncmp",
-"memcmp",
-"]",
-")",
-"||",
-"_octal",
-"<=",
-"ed",
-"-",
-"*",
-"[",
-"dd_pa",
"&&",
-"^",
-"poi_pa",
-"dq_pa",
-"low",
-"wcslen",
-"<",
+"+",
+"check_address",
+"[",
+"_global_id",
"<<",
-"poi",
+"_octal",
+"eb_pa",
+"disassemble_len32",
+"strcmp",
+"lbr_print_all",
+"disassemble_len64",
+"eq",
+"_string",
+"&",
+"interlocked_compare_exchange",
+"low",
+"db",
+"(",
+",",
+">>",
+"ed",
+"db_pa",
+"ed_pa",
+"wcslen",
+"strlen",
+"|",
+"-",
+"memcmp",
+"interlocked_exchange_add",
+"interlocked_decrement",
+"disassemble_len",
+">=",
+"_function_parameter_id",
"$",
-"dw_pa"
+"dq",
+"_binary",
+"_function_id",
+"dw_pa",
+"wcsncmp",
+"/",
+"wcscmp",
+")",
+"eq_pa",
+"dd",
+"poi_pa",
+"_register",
+"low_pa",
+"eb",
+"dd_pa",
+"physical_to_virtual",
+"_decimal",
+"_pseudo_register",
+"neg",
+"*",
+"dw",
+"<",
+"]",
+"_wstring",
+"poi",
+"hi",
+"virtual_to_physical",
+"~",
+"<=",
+"interlocked_increment",
+"dq_pa",
+"_local_id",
+"_hex",
+"%",
+"lbr_save",
+"not",
+"strncmp",
+"==",
+"||",
+"^",
+"interlocked_exchange",
+">",
+"hi_pa"
};
const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{
- {5 ,2 ,14 ,4 ,10 ,18 ,3 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,8 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,7 ,6 ,12 ,2147483648 ,2147483648 ,1 },
+ {17 ,9 ,2147483648 ,2147483648 ,7 ,1 ,13 ,8 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,3 ,4 ,15 ,11 ,6 ,2147483648 ,12 ,2 ,16 ,2147483648 ,2147483648 ,5 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2136,11 +2129,13 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2148,6 +2143,7 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2155,10 +2151,8 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2168,19 +2162,17 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,9 ,2147483648 ,2147483648 ,7 ,2147483648 ,13 ,8 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,3 ,4 ,15 ,11 ,6 ,2147483648 ,12 ,132 ,16 ,2147483648 ,2147483648 ,5 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {5 ,134 ,14 ,4 ,10 ,18 ,3 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,8 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,7 ,6 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2189,6 +2181,7 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2196,76 +2189,76 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {5 ,2147483648 ,14 ,148 ,10 ,18 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,8 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,7 ,6 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {149 ,2147483648 ,14 ,2147483648 ,10 ,18 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,8 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,7 ,6 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,10 ,18 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,8 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,7 ,150 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,10 ,18 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,8 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,151 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,10 ,18 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,15 ,2147483648 ,152 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,153 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,154 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,155 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,156 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,157 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,158 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,161 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,162 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,166 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,167 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,170 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,171 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,172 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,173 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,9 ,2147483648 ,2147483648 ,7 ,2147483648 ,13 ,8 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,2147483648 ,148 ,15 ,11 ,6 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,5 },
+ {17 ,9 ,2147483648 ,2147483648 ,7 ,2147483648 ,13 ,8 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,2147483648 ,2147483648 ,15 ,11 ,6 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,149 },
+ {17 ,9 ,2147483648 ,2147483648 ,7 ,2147483648 ,13 ,8 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,2147483648 ,2147483648 ,15 ,11 ,150 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,9 ,2147483648 ,2147483648 ,151 ,2147483648 ,13 ,8 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,152 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,153 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,154 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,155 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,156 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,157 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,158 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,167 ,14 ,166 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,170 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,174 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,175 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,176 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,177 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,178 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,180 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,182 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,183 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,184 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,185 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,186 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,187 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,188 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,171 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,172 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,189 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,190 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,178 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,191 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,192 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,193 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,194 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,195 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,196 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,198 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,199 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,173 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,174 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,175 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,177 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,179 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,180 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,182 ,18 ,2147483648 ,14 ,181 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,200 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,201 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,202 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,203 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,185 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,186 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,187 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,188 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,189 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,190 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,191 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,192 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,193 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,194 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,195 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,196 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,182 ,18 ,2147483648 ,14 ,197 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,199 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,200 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,201 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,202 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,175 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,203 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,204 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,205 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,206 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,207 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,204 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,205 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,206 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,207 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,209 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,210 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,175 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,211 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,213 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,182 ,18 ,2147483648 ,14 ,212 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,214 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,215 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,216 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,217 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,209 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,195 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,210 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,211 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,212 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,178 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,213 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,214 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,195 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,215 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,216 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,217 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,218 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,219 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,220 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,221 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,222 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,223 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,218 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,219 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,220 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,221 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,222 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,223 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2284,9 +2277,9 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2343,57 +2336,57 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,275 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,275 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,276 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,276 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,175 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,277 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,277 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,178 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,278 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,278 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,182 ,18 ,2147483648 ,14 ,212 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,280 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,281 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,282 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,283 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,284 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,178 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,279 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,280 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,175 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,285 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,281 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,286 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,175 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,287 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,182 ,18 ,2147483648 ,14 ,212 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,289 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,290 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,282 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,214 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,195 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,283 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,284 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,178 ,18 ,2147483648 ,179 ,2147483648 ,2147483648 ,285 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,214 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,195 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,286 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,287 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,288 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,289 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,290 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2410,20 +2403,20 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,307 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,307 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,308 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,309 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,14 ,2147483648 ,310 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,11 ,16 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,12 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,308 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,309 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,310 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2436,321 +2429,321 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
};
const int LalrActionTable[LALR_STATE_COUNT][LALR_TERMINAL_COUNT]=
{
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,-13 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,2147483648 ,-13 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,90 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,89 ,2147483648 ,-21 ,2147483648 },
- {2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 },
- {2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,-27 ,2147483648 ,93 ,2147483648 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,94 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 },
- {2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 },
- {2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {23 ,2147483648 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,2147483648 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,2147483648 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,-108 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 },
- {2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 },
- {23 ,2147483648 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,2147483648 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,2147483648 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {23 ,2147483648 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,2147483648 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,2147483648 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {23 ,2147483648 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,2147483648 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,2147483648 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {23 ,2147483648 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,2147483648 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,2147483648 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,-97 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,-111 ,98 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,197 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,197 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,197 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 },
- {2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 },
- {2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 },
- {2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,-25 ,2147483648 ,93 ,2147483648 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,94 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 },
- {2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,-26 ,2147483648 ,93 ,2147483648 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,94 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 },
- {2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 },
- {2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 },
- {2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,-111 ,98 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 },
- {2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,81 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,-10 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,-12 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,87 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,84 ,-13 ,-13 ,2147483648 ,88 ,2147483648 },
+ {2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,-20 ,2147483648 ,-20 ,2147483648 },
+ {2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,-21 ,2147483648 ,-21 ,2147483648 },
+ {2147483648 ,-24 ,-24 ,91 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 },
+ {2147483648 ,-27 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 },
+ {2147483648 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 },
+ {2147483648 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,2147483648 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,2147483648 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,2147483648 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,2147483648 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,2147483648 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,2147483648 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,2147483648 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,2147483648 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,2147483648 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,2147483648 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,2147483648 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,2147483648 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-108 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,2147483648 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,2147483648 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,2147483648 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,2147483648 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-94 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-93 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,2147483648 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,2147483648 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,2147483648 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,2147483648 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,-97 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-111 ,-111 ,-111 ,2147483648 ,98 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 },
+ {2147483648 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,184 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,184 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,184 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,81 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,-9 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,-11 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,-16 ,2147483648 ,-16 ,2147483648 },
+ {2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,-18 ,2147483648 ,-18 ,2147483648 },
+ {2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,-17 ,2147483648 ,-17 ,2147483648 },
+ {2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,-15 ,2147483648 ,-15 ,2147483648 },
+ {2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,-19 ,2147483648 ,-19 ,2147483648 },
+ {2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,-14 ,2147483648 ,-14 ,2147483648 },
+ {2147483648 ,-23 ,-23 ,91 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 },
+ {2147483648 ,-22 ,-22 ,91 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 },
+ {2147483648 ,-25 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 },
+ {2147483648 ,-26 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 },
+ {2147483648 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 },
+ {2147483648 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 },
+ {2147483648 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-111 ,-111 ,-111 ,2147483648 ,98 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 },
+ {2147483648 ,-107 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 },
- {2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 },
- {2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 },
- {2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 },
- {2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 },
- {2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 },
- {2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 },
- {2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 },
- {2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 },
- {2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 },
- {2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 },
- {2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 },
- {2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 },
- {2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 },
- {2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 },
- {2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 },
- {2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 },
- {2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 },
- {2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 },
- {2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 },
- {2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 },
- {2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 },
- {2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 },
- {2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,197 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,181 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,197 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 },
- {2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,299 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,300 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,301 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,302 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 },
- {2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 },
- {2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 },
- {2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 },
- {2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 },
- {2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {23 ,22 ,64 ,55 ,35 ,27 ,29 ,2147483648 ,60 ,72 ,53 ,31 ,28 ,2147483648 ,2147483648 ,62 ,2147483648 ,26 ,2147483648 ,61 ,2147483648 ,68 ,39 ,75 ,38 ,2147483648 ,2147483648 ,66 ,19 ,43 ,24 ,46 ,50 ,51 ,65 ,73 ,74 ,45 ,32 ,54 ,76 ,70 ,20 ,69 ,25 ,52 ,77 ,56 ,42 ,37 ,30 ,36 ,63 ,2147483648 ,2147483648 ,49 ,2147483648 ,67 ,44 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,71 ,40 ,57 ,2147483648 ,58 ,2147483648 ,2147483648 ,34 ,48 ,59 ,47 ,2147483648 ,2147483648 ,21 ,2147483648 ,41 },
- {2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 },
- {2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 },
- {2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 },
- {2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,311 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,312 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,313 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,314 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 },
- {2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 },
- {2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 },
- {2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 }
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-95 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 },
+ {2147483648 ,-110 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 },
+ {2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 },
+ {2147483648 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 },
+ {2147483648 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 },
+ {2147483648 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,184 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 },
+ {2147483648 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 },
+ {2147483648 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 },
+ {2147483648 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 },
+ {2147483648 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 },
+ {2147483648 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 },
+ {2147483648 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 },
+ {2147483648 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 },
+ {2147483648 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 },
+ {2147483648 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 },
+ {2147483648 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 },
+ {2147483648 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 },
+ {2147483648 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 },
+ {2147483648 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,184 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 },
+ {2147483648 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 },
+ {2147483648 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 },
+ {2147483648 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 },
+ {2147483648 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 },
+ {2147483648 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 },
+ {2147483648 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,299 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,300 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,301 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,302 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 },
+ {2147483648 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 },
+ {2147483648 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 },
+ {2147483648 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 },
+ {2147483648 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 },
+ {2147483648 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 },
+ {2147483648 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 },
+ {2147483648 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
+ {2147483648 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,311 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,312 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,313 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,314 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 },
+ {2147483648 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 },
+ {2147483648 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 },
+ {2147483648 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 }
};
const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{
@@ -2807,7 +2800,7 @@ const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{SEMANTIC_RULE, "@DISASSEMBLE_LEN32"},
{SEMANTIC_RULE, "@DISASSEMBLE_LEN64"},
{SEMANTIC_RULE, "@LBR_SAVE"},
- {SEMANTIC_RULE, "@LBR_DUMP"},
+ {SEMANTIC_RULE, "@LBR_PRINT_ALL"},
{SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"},
{SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"},
{SEMANTIC_RULE, "@REFERENCE"},
diff --git a/hyperdbg/script-engine/header/parse-table.h b/hyperdbg/script-engine/header/parse-table.h
index 9e7024b8..66a2ecfe 100644
--- a/hyperdbg/script-engine/header/parse-table.h
+++ b/hyperdbg/script-engine/header/parse-table.h
@@ -1,19 +1,19 @@
#pragma once
#ifndef PARSE_TABLE_H
#define PARSE_TABLE_H
-#define RULES_COUNT 277
-#define TERMINAL_COUNT 125
+#define RULES_COUNT 276
+#define TERMINAL_COUNT 124
#define NONETERMINAL_COUNT 63
#define START_VARIABLE "S"
#define MAX_RHS_LEN 15
-#define KEYWORD_LIST_LENGTH 114
+#define KEYWORD_LIST_LENGTH 113
#define OPERATORS_ONE_OPERAND_LIST_LENGTH 3
#define OPERATORS_TWO_OPERAND_LIST_LENGTH 16
#define REGISTER_MAP_LIST_LENGTH 120
#define PSEUDO_REGISTER_MAP_LIST_LENGTH 16
#define SCRIPT_VARIABLE_TYPE_LIST_LENGTH 10
#define ASSIGNMENT_OPERATOR_LIST_LENGTH 10
-#define SEMANTIC_RULES_MAP_LIST_LENGTH 159
+#define SEMANTIC_RULES_MAP_LIST_LENGTH 158
#define THREEOPFUNC1_LENGTH 1
#define THREEOPFUNC2_LENGTH 3
#define TWOOPFUNC1_LENGTH 8
@@ -26,7 +26,7 @@
#define THREEOPFUNC4_LENGTH 1
#define ONEOPFUNC4_LENGTH 1
#define TWOOPFUNC4_LENGTH 1
-#define ZEROOPFUNC1_LENGTH 8
+#define ZEROOPFUNC1_LENGTH 7
#define ZEROOPFUNC2_LENGTH 4
#define VARARGFUNC1_LENGTH 1
extern const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT];
diff --git a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
index dc4169f6..e50eeb09 100644
--- a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
+++ b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
@@ -1,5 +1,5 @@
# OneOpFunc1 input is a number and returns a number.
-.OneOpFunc1->poi db dd dw dq neg hi low not check_address strlen wcslen disassemble_len disassemble_len32 disassemble_len64 lbr_save lbr_dump interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa
+.OneOpFunc1->poi db dd dw dq neg hi low not check_address strlen wcslen disassemble_len disassemble_len32 disassemble_len64 lbr_save lbr_print_all interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa
# TwoOpFunc1 inputs are two numbers and returns a number.
.TwoOpFunc1->ed eb eq interlocked_exchange interlocked_exchange_add wcscmp eb_pa ed_pa eq_pa
diff --git a/hyperdbg/script-engine/python/Grammar.txt b/hyperdbg/script-engine/python/Grammar.txt
index 6658f4a8..1f48be19 100644
--- a/hyperdbg/script-engine/python/Grammar.txt
+++ b/hyperdbg/script-engine/python/Grammar.txt
@@ -35,10 +35,10 @@
# TwoOpFunc4 the two inputs are numbers or wstrings and returns a number.
.TwoOpFunc4->wcscmp
-.ZeroOpFunc1->pause flush lbr_flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in
+.ZeroOpFunc1->pause flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in
# ZeroOpFunc2 no input and returns a number
-.ZeroOpFunc2->rdtsc rdtscp lbr_save lbr_dump
+.ZeroOpFunc2->rdtsc rdtscp lbr_save lbr_print_all
.VarArgFunc1->printf
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index cd25fe9a..cbf9238d 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -2037,12 +2037,12 @@ ScriptEngineFunctionLbrSave()
}
/**
- * @brief Implementation of lbr_dump function
+ * @brief Implementation of lbr_print_all function
*
* @return BOOLEAN
*/
BOOLEAN
-ScriptEngineFunctionLbrDump()
+ScriptEngineFunctionLbrPrintAll()
{
#ifdef SCRIPT_ENGINE_USER_MODE
ShowMessages("err, it's not possible to call lbr_dump function in the user-mode\n");
@@ -2058,25 +2058,3 @@ ScriptEngineFunctionLbrDump()
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
-
-/**
- * @brief Implementation of lbr_flush function
- *
- * @return VOID
- */
-VOID
-ScriptEngineFunctionLbrFlush()
-{
-#ifdef SCRIPT_ENGINE_USER_MODE
- ShowMessages("err, it's not possible to call lbr_flush function in the user-mode\n");
-#endif // SCRIPT_ENGINE_USER_MODE
-
-#ifdef SCRIPT_ENGINE_KERNEL_MODE
-
- //
- // Depending if we are in VMX-root then a VMCALL is issued by default instead, otherwise the VMCALL is ignored
- //
- HyperTraceLbrFlush(NULL);
-
-#endif // SCRIPT_ENGINE_KERNEL_MODE
-}
diff --git a/hyperdbg/script-eval/code/ScriptEngineEval.c b/hyperdbg/script-eval/code/ScriptEngineEval.c
index 95113ed2..e7332efa 100644
--- a/hyperdbg/script-eval/code/ScriptEngineEval.c
+++ b/hyperdbg/script-eval/code/ScriptEngineEval.c
@@ -747,23 +747,17 @@ ScriptEngineExecute(PGUEST_REGS GuestRegs,
SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
break;
- case FUNC_LBR_DUMP:
+ case FUNC_LBR_PRINT_ALL:
Des = (PSYMBOL)((unsigned long long)CodeBuffer->Head +
(unsigned long long)(*Indx * sizeof(SYMBOL)));
*Indx = *Indx + 1;
- DesVal = ScriptEngineFunctionLbrDump();
+ DesVal = ScriptEngineFunctionLbrPrintAll();
SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
break;
- case FUNC_LBR_FLUSH:
-
- ScriptEngineFunctionLbrFlush();
-
- break;
-
case FUNC_FLUSH:
ScriptEngineFunctionFlush();
diff --git a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
index 286c1dbd..c8997276 100644
--- a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
+++ b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
@@ -263,14 +263,11 @@ ScriptEngineFunctionEventTraceInstrumentationStep();
VOID
ScriptEngineFunctionEventTraceStepIn();
-VOID
-ScriptEngineFunctionLbrFlush();
-
BOOLEAN
ScriptEngineFunctionLbrSave();
BOOLEAN
-ScriptEngineFunctionLbrDump();
+ScriptEngineFunctionLbrPrintAll();
UINT64
ScriptEngineFunctionStrcmp(const char * Address1, const char * Address2);
From 19b9ebe3fd662b1418bc22171cad385343c4cd2a Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 3 May 2026 01:25:39 +0200
Subject: [PATCH 160/323] add lbrdump command
---
hyperdbg/hypertrace/code/api/LbrApi.c | 52 ++------------
hyperdbg/hypertrace/code/lbr/Lbr.c | 68 +------------------
hyperdbg/hypertrace/header/lbr/Lbr.h | 7 +-
.../include/SDK/headers/RequestStructures.h | 5 --
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 2 +-
.../commands/extension-commands/lbr.cpp | 1 +
.../commands/extension-commands/lbrdump.cpp | 53 +++++++++++++++
.../code/debugger/core/interpreter.cpp | 3 +
hyperdbg/libhyperdbg/header/commands.h | 6 ++
hyperdbg/libhyperdbg/header/help.h | 3 +
hyperdbg/libhyperdbg/libhyperdbg.vcxproj | 1 +
.../libhyperdbg/libhyperdbg.vcxproj.filters | 3 +
hyperdbg/script-eval/code/Functions.c | 2 +-
13 files changed, 80 insertions(+), 126 deletions(-)
create mode 100644 hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 0c1a7432..32068771 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -38,7 +38,7 @@ HyperTraceLbrExamplePerformTrace()
LogInfo("Dumping LBR Buffer...\n");
LbrStop();
- LbrDump(); // This will print the collected LBR branches to the log
+ LbrPrintAll(); // This will print the collected LBR branches to the log
}
}
@@ -245,14 +245,14 @@ HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
}
/**
- * @brief Dump LBR tracing for HyperTrace
+ * @brief Print all LBR tracing for HyperTrace
*
* @param HyperTraceOperationRequest
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
+HyperTraceLbrPrintAll(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
{
//
// Check if LBR is already disabled or not
@@ -268,7 +268,7 @@ HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
//
// This will print the collected LBR branches to the log
//
- LbrDump();
+ LbrPrintAll();
//
// The operation was successful
@@ -310,50 +310,6 @@ HyperTraceLbrUpdateFilterOptions(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOp
return TRUE;
}
-/**
- * @brief Query LBR tracing for HyperTrace
- *
- * @param HyperTraceOperationRequest
- *
- * @return BOOLEAN
- */
-BOOLEAN
-HyperTraceLbrQuery(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
-{
- //
- // Check if LBR is already disabled or not
- //
- if (!g_LastBranchRecordEnabled)
- {
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
- return FALSE;
- }
-
- LogInfo("Querying LBR Buffer...\n");
-
- //
- // Query the LBR state and fill the request structure with the results
- //
- if (LbrQuery(HyperTraceOperationRequest->LbrTargetCore,
- &HyperTraceOperationRequest->LbrTos,
- &HyperTraceOperationRequest->NumberOfSavedEntries))
- {
- //
- // The operation was successful
- //
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
- }
- else
- {
- //
- // The operation was NOT successful
- //
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_INVALID_CORE_ID);
- }
-
- return TRUE;
-}
-
/**
* @brief Perform actions related to HyperTrace LBR
*
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index b197d519..c1345f87 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -882,76 +882,12 @@ LbrSave()
}
/**
- * @brief Query LBR branches
- *
- * @param CoreId The ID of the core for which to query LBR branches
- * @param LbrTos Pointer to receive the current TOS index (legacy LBR) or 0 (arch LBR)
- * @param NumberOfSavedEntries Pointer to receive the number of valid saved LBR entries in the current core's state structure
- *
- * @return BOOLEAN
- */
-BOOLEAN
-LbrQuery(UINT32 CoreId, UINT8 * LbrTos, UINT8 * NumberOfSavedEntries)
-{
- LBR_STACK_ENTRY * State;
- UINT8 LocalNumberOfSavedEntries = 0;
- ULONG ProcessorsCount = KeQueryActiveProcessorCount(0);
-
- //
- // Check if the provided CoreId is valid
- //
- if (CoreId >= ProcessorsCount)
- {
- return FALSE;
- }
-
- //
- // Get the target processor LBR stack
- //
- State = &g_LbrStateList[CoreId];
-
- //
- // Read and store the current TOS index to know where the most recent branch is stored
- // Note that there is no TOS index in ARCH LBR since everything is in order
- //
- if (!g_ArchBasedLastBranchRecord)
- {
- *LbrTos = State->Tos;
- }
- else
- {
- *LbrTos = 0; // For ARCH LBR, we can set TOS to 0 since entries are in order
- }
-
- //
- // Dump LBR entries into the current core's state structure
- //
- for (ULONG i = 0; i < (ULONG)LbrCapacity; i++)
- {
- if (State->BranchEntry[i].From == NULL64_ZERO && State->BranchEntry[i].To == NULL64_ZERO)
- {
- LocalNumberOfSavedEntries++;
- }
- }
-
- //
- // Set the number of valid saved entries
- //
- *NumberOfSavedEntries = LocalNumberOfSavedEntries;
-
- //
- // Return TRUE to indicate the query was successful
- //
- return TRUE;
-}
-
-/**
- * @brief Dump collected LBR branches
+ * @brief Print all collected LBR branches
*
* @return VOID
*/
VOID
-LbrDump()
+LbrPrintAll()
{
ULONG CurrentIdx;
LBR_STACK_ENTRY * State;
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index b5319b94..edff3a66 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -174,7 +174,7 @@ typedef struct _LBR_STACK_ENTRY
{
LBR_BRANCH_ENTRY BranchEntry[MAXIMUM_LBR_CAPACITY];
MSR_LBR_INFO LastBranchInfo[MAXIMUM_LBR_CAPACITY];
- UINT8 Tos;
+ UINT8 Tos;
} LBR_STACK_ENTRY, PLBR_STACK_ENTRY;
@@ -217,9 +217,6 @@ LbrCheckAndReadArchitecturalLbrDetails();
BOOLEAN
LbrStart(UINT64 FilterOptions);
-BOOLEAN
-LbrQuery(UINT32 CoreId, UINT8 * LbrTos, UINT8 * NumberOfSavedEntries);
-
VOID
LbrFilter(UINT64 FilterOptions);
@@ -233,4 +230,4 @@ VOID
LbrSave();
VOID
-LbrDump();
+LbrPrintAll();
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 221a4176..dea11683 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1254,8 +1254,6 @@ typedef enum _HYPERTRACE_LBR_OPERATION_REQUEST_TYPE
} HYPERTRACE_LBR_OPERATION_REQUEST_TYPE;
-
-
/**
* @brief The structure of HyperTrace LBR result packet in HyperDbg
*
@@ -1264,9 +1262,6 @@ typedef struct _HYPERTRACE_LBR_OPERATION_PACKETS
{
HYPERTRACE_LBR_OPERATION_REQUEST_TYPE LbrOperationType;
UINT32 LbrFilterOptions;
- UINT32 LbrTargetCore;
- UINT8 LbrTos;
- UINT8 NumberOfSavedEntries;
UINT32 KernelStatus;
} HYPERTRACE_LBR_OPERATION_PACKETS, *PHYPERTRACE_LBR_OPERATION_PACKETS;
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 6c08d31c..7ead33ff 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -40,7 +40,7 @@ IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceLbrDump(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
+HyperTraceLbrPrintAll(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index 38963216..91f4b499 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -25,6 +25,7 @@ VOID
CommandLbrHelp()
{
ShowMessages("!lbr : performs operation for Last Branch Record (LBR).\n");
+ ShowMessages("for dumping LBR entries, you can use the '!lbrdump' command\n");
ShowMessages("syntax : \t!lbr [Function (string)]\n");
ShowMessages("syntax : \t!lbr [filter FilterOptions (string)]\n");
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
new file mode 100644
index 00000000..ab724e1f
--- /dev/null
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
@@ -0,0 +1,53 @@
+/**
+ * @file lbrdump.cpp
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief !lbrdump command
+ * @details
+ * @version 0.19
+ * @date 2026-05-03
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+//
+// Global Variables
+//
+extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
+
+/**
+ * @brief help of the !lbrdump command
+ *
+ * @return VOID
+ */
+VOID
+CommandLbrdumpHelp()
+{
+ ShowMessages("!lbrdump : dumps Last Branch Record (LBR).\n");
+
+ ShowMessages("syntax : \t!lbrdump [core CoreId (hex)]\n");
+
+ ShowMessages("\n");
+ ShowMessages("\t\te.g : !lbrdump core 1\n");
+}
+
+/**
+ * @brief !lbrdump command handler
+ *
+ * @param CommandTokens
+ * @param Command
+ *
+ * @return VOID
+ */
+VOID
+CommandLbrdump(vector CommandTokens, string Command)
+{
+ if (CommandTokens.size() != 1)
+ {
+ ShowMessages("incorrect use of the '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
+ CommandLbrdumpHelp();
+ return;
+ }
+}
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
index 18b115a6..e598cb32 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
@@ -1631,6 +1631,9 @@ InitializeCommandsDictionary()
g_CommandsList["!lbr"] = {&CommandLbr, &CommandLbrHelp, DEBUGGER_COMMAND_LBR_ATTRIBUTES};
+ g_CommandsList["!lbrdump"] = {&CommandLbrdump, &CommandLbrdumpHelp, DEBUGGER_COMMAND_LBRDUMP_ATTRIBUTES};
+ g_CommandsList["!lbrdmp"] = {&CommandLbrdump, &CommandLbrdumpHelp, DEBUGGER_COMMAND_LBRDUMP_ATTRIBUTES};
+
g_CommandsList["!pt"] = {&CommandPt, &CommandPtHelp, DEBUGGER_COMMAND_PT_ATTRIBUTES};
//
diff --git a/hyperdbg/libhyperdbg/header/commands.h b/hyperdbg/libhyperdbg/header/commands.h
index 0972d80d..6fda4686 100644
--- a/hyperdbg/libhyperdbg/header/commands.h
+++ b/hyperdbg/libhyperdbg/header/commands.h
@@ -480,6 +480,9 @@ typedef std::map CommandType;
#define DEBUGGER_COMMAND_LBR_ATTRIBUTES \
NULL
+#define DEBUGGER_COMMAND_LBRDUMP_ATTRIBUTES \
+ DEBUGGER_COMMAND_ATTRIBUTE_LOCAL_COMMAND_IN_DEBUGGER_MODE
+
#define DEBUGGER_COMMAND_PT_ATTRIBUTES \
NULL
@@ -772,6 +775,9 @@ CommandSmi(vector CommandTokens, string Command);
VOID
CommandLbr(vector CommandTokens, string Command);
+VOID
+CommandLbrdump(vector CommandTokens, string Command);
+
VOID
CommandPt(vector CommandTokens, string Command);
diff --git a/hyperdbg/libhyperdbg/header/help.h b/hyperdbg/libhyperdbg/header/help.h
index f00d748f..70340e54 100644
--- a/hyperdbg/libhyperdbg/header/help.h
+++ b/hyperdbg/libhyperdbg/header/help.h
@@ -312,6 +312,9 @@ CommandSmiHelp();
VOID
CommandLbrHelp();
+VOID
+CommandLbrdumpHelp();
+
VOID
CommandPtHelp();
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
index e2f1b9c9..208441b8 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
@@ -178,6 +178,7 @@
+
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
index e1641543..c520e640 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
@@ -601,6 +601,9 @@
code\debugger\commands\extension-commands
+
+ code\debugger\commands\extension-commands
+
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index cbf9238d..84eabfa1 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -2054,7 +2054,7 @@ ScriptEngineFunctionLbrPrintAll()
//
// Depending if we are in VMX-root then a VMCALL is issued by default instead, otherwise the VMCALL is ignored
//
- return HyperTraceLbrDump(NULL);
+ return HyperTraceLbrPrintAll(NULL);
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
From ea74b06286c395a282f02f4ad331bb9eef5d34d4 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 3 May 2026 01:45:02 +0200
Subject: [PATCH 161/323] apply automatic save for printing lbr records
---
CHANGELOG.md | 3 +
.../hwdbg/script/script_definitions.scala | 2 +-
hyperdbg/hypertrace/code/api/LbrApi.c | 13 +-
hyperdbg/hypertrace/code/lbr/Lbr.c | 4 +-
hyperdbg/hypertrace/header/lbr/Lbr.h | 2 +-
.../headers/ScriptEngineCommonDefinitions.h | 4 +-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 2 +-
hyperdbg/script-engine/code/parse-table.c | 1476 ++++++++---------
.../python/Boolean_Expression_Grammar.txt | 2 +-
hyperdbg/script-engine/python/Grammar.txt | 2 +-
hyperdbg/script-eval/code/Functions.c | 4 +-
hyperdbg/script-eval/code/ScriptEngineEval.c | 4 +-
.../header/ScriptEngineInternalHeader.h | 2 +-
13 files changed, 764 insertions(+), 756 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d7db8b3c..59f7585f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,9 @@ New release of the HyperDbg Debugger.
- HyperTrace now enables/disables VM-entry/VM-exit controls for Load and Save IA32_DEBUGCTL MSR
- Added Legacy LBR support to the HyperTrace module
- Added Architectural LBR support to the HyperTrace module
+- Added the '!lbr' command for performing different Last Branch Record (LBR) operations ([link](https://docs.hyperdbg.org/commands/extension-commands/lbr))
+- Added the '!lbrdump' command for dumping saved Last Branch Record (LBR) entries ([link](https://docs.hyperdbg.org/commands/extension-commands/lbrdmp))
+- Added **lbr_save()** and **lbr_print()** functions in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracings/lbr_save))([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracings/lbr_print))
- Added mock application for compiling SDK for Linux
- HyperDbg SDK now compiles on Linux (GCC) for both user-mode and kernel-mode
- VMX instructions are ported to platform-independent files to support Linux
diff --git a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
index b7255b10..bb5bda96 100644
--- a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
+++ b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
@@ -45,6 +45,6 @@ object ScriptConstantTypes {
object ScriptEvalFunc {
object ScriptOperators extends ChiselEnum {
- val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncLbr_save, sFuncLbr_print_all, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
+ val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncLbr_save, sFuncLbr_print, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
}
}
\ No newline at end of file
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 32068771..093d72c8 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -38,7 +38,7 @@ HyperTraceLbrExamplePerformTrace()
LogInfo("Dumping LBR Buffer...\n");
LbrStop();
- LbrPrintAll(); // This will print the collected LBR branches to the log
+ LbrPrint(); // This will print the collected LBR branches to the log
}
}
@@ -245,14 +245,14 @@ HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
}
/**
- * @brief Print all LBR tracing for HyperTrace
+ * @brief Print LBR tracing for HyperTrace
*
* @param HyperTraceOperationRequest
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrPrintAll(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
+HyperTraceLbrPrint(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
{
//
// Check if LBR is already disabled or not
@@ -265,10 +265,15 @@ HyperTraceLbrPrintAll(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequ
LogInfo("Dumping LBR Buffer...\n");
+ //
+ // Save the LBR state
+ //
+ LbrSave();
+
//
// This will print the collected LBR branches to the log
//
- LbrPrintAll();
+ LbrPrint();
//
// The operation was successful
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index c1345f87..7dbc5852 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -882,12 +882,12 @@ LbrSave()
}
/**
- * @brief Print all collected LBR branches
+ * @brief Print collected LBR branches
*
* @return VOID
*/
VOID
-LbrPrintAll()
+LbrPrint()
{
ULONG CurrentIdx;
LBR_STACK_ENTRY * State;
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index edff3a66..21c5aa25 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -230,4 +230,4 @@ VOID
LbrSave();
VOID
-LbrPrintAll();
+LbrPrint();
diff --git a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
index 5b76a87e..0a7f6876 100644
--- a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
+++ b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
@@ -151,7 +151,7 @@ static const char *const SymbolTypeNames[] = {
#define FUNC_RDTSC 54
#define FUNC_RDTSCP 55
#define FUNC_LBR_SAVE 56
-#define FUNC_LBR_PRINT_ALL 57
+#define FUNC_LBR_PRINT 57
#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 58
#define FUNC_EVENT_INJECT 59
#define FUNC_POI 60
@@ -256,7 +256,7 @@ static const char *const FunctionNames[] = {
"FUNC_RDTSC",
"FUNC_RDTSCP",
"FUNC_LBR_SAVE",
-"FUNC_LBR_PRINT_ALL",
+"FUNC_LBR_PRINT",
"FUNC_SPINLOCK_LOCK_CUSTOM_WAIT",
"FUNC_EVENT_INJECT",
"FUNC_POI",
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 7ead33ff..dda09475 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -40,7 +40,7 @@ IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceLbrPrintAll(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
+HyperTraceLbrPrint(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
diff --git a/hyperdbg/script-engine/code/parse-table.c b/hyperdbg/script-engine/code/parse-table.c
index c538a010..b908d6b2 100644
--- a/hyperdbg/script-engine/code/parse-table.c
+++ b/hyperdbg/script-engine/code/parse-table.c
@@ -374,7 +374,7 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "rdtsc"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSC"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "rdtscp"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSCP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_SAVE"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "lbr_print_all"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_PRINT_ALL"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "lbr_print"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_PRINT"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "spinlock_lock_custom_wait"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@SPINLOCK_LOCK_CUSTOM_WAIT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_inject"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_INJECT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
@@ -481,7 +481,7 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "rdtsc"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSC"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "rdtscp"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSCP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_SAVE"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "lbr_print_all"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_PRINT_ALL"},{SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "lbr_print"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_PRINT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "db"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DB"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "dd"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DD"},{SPECIAL_TOKEN, ")"}},
@@ -838,262 +838,262 @@ const unsigned int RhsSize[RULES_COUNT]=
};
const char* NoneTerminalMap[NONETERMINAL_COUNT]=
{
-"DO_WHILE_STATEMENT",
-"VARIABLE_TYPE2",
-"INIT_LIST",
-"E1",
-"CALL_FUNC_STATEMENT",
-"E5'",
-"ARRAY_DIMS_READ2",
-"INC_DEC",
-"E1'",
-"STRING",
-"VARIABLE_TYPE6",
-"WstringNumber",
-"INIT_LIST_CONT",
-"VARIABLE_TYPE1",
-"S",
-"E5",
-"INIT_LIST_TAIL",
-"VARIABLE_TYPE4",
-"ARRAY_DIMS2",
-"ARRAY_DIMS_WRITE",
-"L_VALUE",
-"WSTRING",
-"VA2",
-"ASSIGNMENT_STATEMENT'",
-"ARRAY_DIMS",
-"ARRAY_DIMS_WRITE2",
-"SIMPLE_ASSIGNMENT",
-"E0'",
-"ARRAY_DIMS_WRITE_OPT",
-"VARIABLE_TYPE5",
-"VA",
-"ARRAY_DIMS_READ_OPT",
-"E3'",
-"E2",
-"IF_STATEMENT",
-"E2'",
-"RETURN",
-"INIT_ITEM",
-"ELSIF_STATEMENT'",
-"CONST_NUMBER",
"MULTIPLE_ASSIGNMENT",
-"WHILE_STATEMENT",
-"ARRAY_DIMS_READ",
-"ARRAY_INIT",
-"ELSE_STATEMENT",
-"FOR_STATEMENT",
+"DO_WHILE_STATEMENT",
+"ARRAY_DIMS",
+"ARRAY_DIMS_WRITE_OPT",
+"ARRAY_DIMS_WRITE",
+"ELSIF_STATEMENT",
+"VA2",
+"S2",
+"ASSIGNMENT_STATEMENT'",
+"StringNumber",
+"MULTIPLE_ASSIGNMENT2",
+"END_OF_IF",
+"ARRAY_DIMS_READ_OPT",
+"CALL_FUNC_STATEMENT",
+"WSTRING",
+"STATEMENT2",
"VARIABLE_TYPE3",
+"BOOLEAN_EXPRESSION",
+"ARRAY_DIMS_READ2",
+"EXPRESSION",
+"ARRAY_DIMS2",
+"WHILE_STATEMENT",
+"E1",
+"INC_DEC'",
+"SIMPLE_ASSIGNMENT",
+"RETURN",
"E3",
"E12",
"ASSIGNMENT_STATEMENT",
-"E4",
-"StringNumber",
-"E4'",
-"EXPRESSION",
-"ELSIF_STATEMENT",
-"MULTIPLE_ASSIGNMENT2",
-"VA3",
-"S2",
+"INIT_LIST",
+"VA",
+"WstringNumber",
+"E3'",
+"VARIABLE_TYPE4",
+"L_VALUE",
+"ARRAY_INIT",
+"VARIABLE_TYPE1",
+"INIT_LIST_CONT",
+"VARIABLE_TYPE2",
+"S",
+"VARIABLE_TYPE6",
+"E5'",
+"STRING",
+"ARRAY_DIMS_READ",
"STATEMENT",
-"END_OF_IF",
-"INC_DEC'",
-"BOOLEAN_EXPRESSION",
-"STATEMENT2"
+"E5",
+"ARRAY_DIMS_WRITE2",
+"ELSIF_STATEMENT'",
+"E1'",
+"E4'",
+"E2",
+"INIT_LIST_TAIL",
+"INIT_ITEM",
+"FOR_STATEMENT",
+"CONST_NUMBER",
+"E2'",
+"INC_DEC",
+"VA3",
+"E0'",
+"IF_STATEMENT",
+"VARIABLE_TYPE5",
+"E4",
+"ELSE_STATEMENT"
};
const char* TerminalMap[TERMINAL_COUNT]=
{
-"spinlock_lock",
-"event_trace_step_in",
-"reference",
-"else",
-"+",
-"*=",
-"event_enable",
-"check_address",
-"return",
-"do",
-"[",
-"_global_id",
-"spinlock_unlock",
-"{",
-"|=",
-"<<",
-"_octal",
-"event_sc",
-"eb_pa",
-"disassemble_len32",
-"strcmp",
-"lbr_print_all",
-"memcpy",
-"disassemble_len64",
-"while",
-"event_inject",
-"rdtsc",
-"eq",
-"_string",
-"&",
-"event_disable",
-"interlocked_compare_exchange",
-"low",
-"db",
-"(",
-",",
-"ed",
-">>",
-"db_pa",
"ed_pa",
-"formats",
-"wcslen",
-"strlen",
-">>=",
-"|",
-"-",
-"<<=",
-"memcmp",
-"event_trace_instrumentation_step",
-"interlocked_exchange_add",
-"spinlock_lock_custom_wait",
-"interlocked_decrement",
-"disassemble_len",
-"_function_parameter_id",
-"$",
-"dq",
-"break",
-"printf",
-"_binary",
-"_function_id",
-";",
-"dw_pa",
-"wcsncmp",
-"/",
-"_script_variable_type",
-"if",
-"event_clear",
-"wcscmp",
-")",
"continue",
-"eq_pa",
-"for",
-"dd",
-"poi_pa",
-"_register",
-"low_pa",
-"eb",
-"dd_pa",
-"physical_to_virtual",
-"_decimal",
-"_pseudo_register",
-"neg",
-"*",
-"pause",
-"dw",
"+=",
-"=",
-"memcpy_pa",
-"}",
-"event_inject_error_code",
-"]",
-"flush",
-"++",
+"db",
+"low",
+"formats",
+"%",
+"rdtscp",
"_wstring",
+"printf",
+"_function_parameter_id",
+"_string",
+")",
+"event_sc",
+"_register",
+"memcmp",
+"db_pa",
+"-",
+"^",
+"poi_pa",
+"memcpy",
+"$",
+"strcmp",
+"=",
+"_hex",
+"lbr_print",
+"&",
+",",
+"eb",
+"event_clear",
+"event_trace_instrumentation_step_in",
+"disassemble_len",
+"event_enable",
+"dd_pa",
+"interlocked_exchange_add",
+"_local_id",
+"rdtsc",
"poi",
-"hi",
+"spinlock_lock",
+"dq",
+"eb_pa",
+"event_trace_instrumentation_step",
+"disassemble_len32",
+"physical_to_virtual",
+"_binary",
"virtual_to_physical",
+"interlocked_decrement",
+"interlocked_compare_exchange",
+"]",
+"<<",
+"^=",
+"interlocked_increment",
+"eq",
+"--",
+"flush",
+"event_trace_step_out",
+"*",
+"|=",
+"_octal",
+"test_statement",
+"hi_pa",
+"event_disable",
+"wcsncmp",
+"_function_id",
+"++",
+"dw_pa",
+"strncmp",
+"_decimal",
+"microsleep",
+"event_trace_step",
+"not",
+"while",
+"pause",
+"|",
"/=",
"~",
-"event_trace_step_out",
-"event_trace_instrumentation_step_in",
-"interlocked_increment",
"dq_pa",
-"_local_id",
-"_hex",
-"elsif",
-"lbr_save",
-"%",
-"not",
-"strncmp",
+">>=",
+">>",
"print",
-"^=",
-"event_trace_step",
-"interlocked_exchange",
-"^",
-"--",
+"reference",
+"ed",
+"spinlock_lock_custom_wait",
"-=",
-"%=",
-"hi_pa",
-"test_statement",
-"microsleep",
-"#include",
+"/",
+"}",
+"for",
+"interlocked_exchange",
+"_script_variable_type",
+"check_address",
+"return",
+"wcslen",
+"memcpy_pa",
+"spinlock_unlock",
+"strlen",
+"(",
+"{",
+"event_trace_step_in",
+"<<=",
+"event_inject",
"&=",
-"rdtscp"
+"%=",
+"if",
+"low_pa",
+"else",
+"disassemble_len64",
+"event_inject_error_code",
+"#include",
+"dd",
+"_global_id",
+"[",
+"dw",
+"elsif",
+"*=",
+"+",
+"lbr_save",
+"do",
+"hi",
+"eq_pa",
+"wcscmp",
+"break",
+";",
+"_pseudo_register",
+"neg"
};
const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]=
{
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,41 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 },
- {2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,179 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 },
- {79 ,87 ,112 ,2147483648 ,2147483648 ,2147483648 ,75 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,127 ,108 ,132 ,94 ,138 ,109 ,2147483648 ,96 ,91 ,124 ,2147483648 ,2147483648 ,76 ,130 ,104 ,98 ,2147483648 ,2147483648 ,122 ,2147483648 ,118 ,128 ,74 ,135 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,89 ,126 ,95 ,111 ,107 ,2147483648 ,2147483648 ,101 ,2147483648 ,83 ,2147483648 ,2147483648 ,2147483648 ,120 ,140 ,2147483648 ,2147483648 ,2147483648 ,77 ,136 ,2147483648 ,2147483648 ,129 ,2147483648 ,99 ,115 ,2147483648 ,117 ,123 ,119 ,113 ,2147483648 ,2147483648 ,102 ,2147483648 ,84 ,100 ,2147483648 ,2147483648 ,139 ,2147483648 ,137 ,2147483648 ,85 ,2147483648 ,2147483648 ,97 ,103 ,114 ,2147483648 ,2147483648 ,88 ,90 ,110 ,121 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,105 ,134 ,73 ,2147483648 ,86 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,78 ,82 ,2147483648 ,2147483648 ,92 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,250 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,181 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,274 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 },
- {2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,46 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,1 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 },
- {2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,193 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,268 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,269 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,69 ,2147483648 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,61 ,64 ,67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,178 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,247 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,188 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,182 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,184 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,28 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,29 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 },
- {2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,42 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,43 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 },
- {146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {148 ,148 ,148 ,147 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,148 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,185 ,185 ,185 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 },
- {2147483648 ,2147483648 ,217 ,2147483648 ,258 ,2147483648 ,2147483648 ,211 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,232 ,213 ,237 ,201 ,2147483648 ,214 ,2147483648 ,2147483648 ,198 ,229 ,2147483648 ,261 ,2147483648 ,235 ,209 ,203 ,243 ,2147483648 ,227 ,2147483648 ,223 ,233 ,2147483648 ,240 ,236 ,2147483648 ,2147483648 ,257 ,2147483648 ,238 ,2147483648 ,231 ,2147483648 ,216 ,212 ,244 ,2147483648 ,206 ,2147483648 ,2147483648 ,255 ,245 ,2147483648 ,225 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,234 ,2147483648 ,204 ,220 ,244 ,222 ,228 ,224 ,218 ,255 ,256 ,207 ,260 ,2147483648 ,205 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,202 ,208 ,219 ,2147483648 ,259 ,2147483648 ,2147483648 ,215 ,226 ,244 ,255 ,2147483648 ,200 ,2147483648 ,210 ,239 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,199 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,189 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 },
- {2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,273 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,272 ,272 ,272 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,192 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,176 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 },
- {145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,144 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,145 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,15 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,16 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 },
- {9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,5 ,2147483648 ,7 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,4 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,9 ,10 ,9 ,2147483648 ,8 ,2147483648 ,9 ,9 ,2147483648 ,12 ,3 ,9 ,9 ,2147483648 ,11 ,9 ,6 ,9 ,9 ,7 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,7 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,13 ,2147483648 ,9 },
- {149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,158 ,161 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,27 ,19 ,2147483648 ,21 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,18 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,21 ,2147483648 ,23 ,24 ,23 ,2147483648 ,22 ,2147483648 ,23 ,23 ,2147483648 ,26 ,17 ,23 ,23 ,2147483648 ,25 ,23 ,20 ,23 ,23 ,21 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,21 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,21 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 }
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,144 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 },
+ {269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,268 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 },
+ {14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,16 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,15 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 },
+ {2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,71 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,2147483648 ,72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,68 ,2147483648 ,70 ,67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,273 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,2147483648 ,272 ,272 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 },
+ {149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 },
+ {128 ,2147483648 ,2147483648 ,98 ,104 ,74 ,2147483648 ,92 ,2147483648 ,83 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,133 ,118 ,2147483648 ,2147483648 ,115 ,138 ,2147483648 ,132 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,123 ,77 ,90 ,107 ,75 ,119 ,126 ,2147483648 ,91 ,97 ,79 ,101 ,127 ,89 ,108 ,113 ,2147483648 ,114 ,111 ,130 ,2147483648 ,2147483648 ,2147483648 ,110 ,124 ,2147483648 ,85 ,88 ,2147483648 ,2147483648 ,2147483648 ,78 ,116 ,76 ,140 ,2147483648 ,2147483648 ,120 ,134 ,2147483648 ,82 ,86 ,105 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,73 ,112 ,122 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,106 ,2147483648 ,135 ,139 ,80 ,131 ,2147483648 ,2147483648 ,87 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,109 ,137 ,2147483648 ,99 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,103 ,129 ,136 ,2147483648 ,2147483648 ,2147483648 ,102 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,25 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,21 ,2147483648 ,2147483648 ,23 ,21 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,21 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,21 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,22 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,18 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,20 ,23 ,26 ,23 ,27 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,17 ,23 ,2147483648 ,23 ,23 ,2147483648 ,23 ,21 ,2147483648 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,19 ,23 ,23 ,23 ,24 ,2147483648 ,2147483648 ,23 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 },
+ {176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 },
+ {2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,167 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,155 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 },
+ {29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,28 ,29 ,29 },
+ {185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,2147483648 ,185 ,185 },
+ {233 ,2147483648 ,2147483648 ,203 ,209 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,244 ,238 ,223 ,257 ,2147483648 ,220 ,2147483648 ,2147483648 ,237 ,2147483648 ,255 ,201 ,261 ,2147483648 ,228 ,2147483648 ,2147483648 ,212 ,2147483648 ,224 ,231 ,244 ,198 ,202 ,2147483648 ,206 ,232 ,2147483648 ,213 ,218 ,255 ,219 ,216 ,235 ,2147483648 ,2147483648 ,2147483648 ,215 ,229 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,255 ,2147483648 ,221 ,2147483648 ,242 ,245 ,2147483648 ,225 ,239 ,255 ,2147483648 ,2147483648 ,210 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,226 ,2147483648 ,2147483648 ,2147483648 ,217 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,211 ,2147483648 ,240 ,2147483648 ,2147483648 ,236 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,2147483648 ,214 ,2147483648 ,2147483648 ,204 ,244 ,2147483648 ,205 ,2147483648 ,2147483648 ,258 ,200 ,2147483648 ,208 ,234 ,241 ,2147483648 ,2147483648 ,256 ,207 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,275 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,2147483648 ,274 ,274 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,188 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,47 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,1 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {9 ,11 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,7 ,2147483648 ,2147483648 ,9 ,7 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,7 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,7 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,8 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,4 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,6 ,9 ,12 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,3 ,9 ,2147483648 ,9 ,9 ,13 ,9 ,7 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,5 ,9 ,9 ,9 ,10 ,2147483648 ,2147483648 ,9 },
+ {193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 },
+ {2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 },
+ {182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,183 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 },
+ {148 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,148 ,2147483648 ,2147483648 ,148 ,148 ,147 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 }
};
const char* KeywordList[]= {
"print",
@@ -1117,7 +1117,7 @@ const char* KeywordList[]= {
"rdtsc",
"rdtscp",
"lbr_save",
-"lbr_print_all",
+"lbr_print",
"spinlock_lock_custom_wait",
"event_inject",
"poi",
@@ -1167,7 +1167,7 @@ const char* KeywordList[]= {
"rdtsc",
"rdtscp",
"lbr_save",
-"lbr_print_all",
+"lbr_print",
"poi",
"db",
"dd",
@@ -1338,7 +1338,7 @@ const char* ZeroOpFunc2[] = {
"@RDTSC",
"@RDTSCP",
"@LBR_SAVE",
-"@LBR_PRINT_ALL",
+"@LBR_PRINT",
};
const char* VarArgFunc1[] = {
"@PRINTF"
@@ -1400,7 +1400,7 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@RDTSC", FUNC_RDTSC},
{"@RDTSCP", FUNC_RDTSCP},
{"@LBR_SAVE", FUNC_LBR_SAVE},
-{"@LBR_PRINT_ALL", FUNC_LBR_PRINT_ALL},
+{"@LBR_PRINT", FUNC_LBR_PRINT},
{"@SPINLOCK_LOCK_CUSTOM_WAIT", FUNC_SPINLOCK_LOCK_CUSTOM_WAIT},
{"@EVENT_INJECT", FUNC_EVENT_INJECT},
{"@POI", FUNC_POI},
@@ -1450,7 +1450,7 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@RDTSC", FUNC_RDTSC},
{"@RDTSCP", FUNC_RDTSCP},
{"@LBR_SAVE", FUNC_LBR_SAVE},
-{"@LBR_PRINT_ALL", FUNC_LBR_PRINT_ALL},
+{"@LBR_PRINT", FUNC_LBR_PRINT},
{"@POI", FUNC_POI},
{"@DB", FUNC_DB},
{"@DD", FUNC_DD},
@@ -1824,7 +1824,7 @@ const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "disassemble_len32"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN32"}},
{{KEYWORD, "disassemble_len64"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN64"}},
{{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_SAVE"}},
- {{KEYWORD, "lbr_print_all"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_PRINT_ALL"}},
+ {{KEYWORD, "lbr_print"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_PRINT"}},
{{KEYWORD, "interlocked_increment"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"}},
{{KEYWORD, "interlocked_decrement"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"}},
{{KEYWORD, "reference"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@REFERENCE"}},
@@ -1999,119 +1999,119 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
};
const char* LalrNoneTerminalMap[NONETERMINAL_COUNT]=
{
-"ARRAY1",
-"CMP",
-"STRING",
-"WstringNumber",
-"B5",
-"S",
-"E5",
-"B6",
-"ARRAY4",
-"WSTRING",
-"ARRAY2",
-"VA2",
-"E10",
-"EXP",
"B1",
-"B2",
-"E12",
-"E3",
-"B4",
-"ARRAY3",
-"E4",
-"BE",
+"CMP",
"E13",
+"B5",
+"VA2",
+"BE",
"StringNumber",
+"B4",
+"WSTRING",
+"ARRAY1",
+"E3",
+"E12",
+"WstringNumber",
+"B2",
+"S",
+"STRING",
+"ARRAY2",
+"E5",
+"ARRAY3",
+"B6",
+"E10",
+"ARRAY4",
+"EXP",
"VA3",
-"B3"
+"B3",
+"E4"
};
const char* LalrTerminalMap[TERMINAL_COUNT]=
{
-"reference",
-"!=",
-"&&",
-"+",
-"check_address",
-"[",
-"_global_id",
-"<<",
-"_octal",
-"eb_pa",
-"disassemble_len32",
-"strcmp",
-"lbr_print_all",
-"disassemble_len64",
-"eq",
-"_string",
-"&",
-"interlocked_compare_exchange",
-"low",
-"db",
-"(",
-",",
-">>",
-"ed",
-"db_pa",
"ed_pa",
-"wcslen",
-"strlen",
-"|",
-"-",
-"memcmp",
-"interlocked_exchange_add",
-"interlocked_decrement",
-"disassemble_len",
-">=",
+"db",
+"low",
+"%",
+"!=",
+"<",
+"_wstring",
"_function_parameter_id",
+"_string",
+")",
+"_register",
+"memcmp",
+"db_pa",
+"-",
+"^",
+"poi_pa",
"$",
+"strcmp",
+"_hex",
+"lbr_print",
+"&",
+",",
+"eb",
+"disassemble_len",
+"dd_pa",
+"interlocked_exchange_add",
+"_local_id",
+"||",
+"poi",
"dq",
+"eb_pa",
+"<=",
+"disassemble_len32",
+"physical_to_virtual",
"_binary",
+"virtual_to_physical",
+"interlocked_decrement",
+"interlocked_compare_exchange",
+"]",
+">",
+"<<",
+"interlocked_increment",
+"eq",
+"*",
+"_octal",
+"hi_pa",
+"&&",
+"wcsncmp",
"_function_id",
"dw_pa",
-"wcsncmp",
-"/",
-"wcscmp",
-")",
-"eq_pa",
-"dd",
-"poi_pa",
-"_register",
-"low_pa",
-"eb",
-"dd_pa",
-"physical_to_virtual",
-"_decimal",
-"_pseudo_register",
-"neg",
-"*",
-"dw",
-"<",
-"]",
-"_wstring",
-"poi",
-"hi",
-"virtual_to_physical",
-"~",
-"<=",
-"interlocked_increment",
-"dq_pa",
-"_local_id",
-"_hex",
-"%",
-"lbr_save",
-"not",
"strncmp",
+"_decimal",
+"not",
+"|",
+"~",
"==",
-"||",
-"^",
+"dq_pa",
+">>",
+"reference",
+"ed",
+"/",
"interlocked_exchange",
-">",
-"hi_pa"
+"check_address",
+"wcslen",
+"strlen",
+"(",
+"low_pa",
+">=",
+"disassemble_len64",
+"_global_id",
+"dd",
+"[",
+"dw",
+"+",
+"lbr_save",
+"hi",
+"eq_pa",
+"wcscmp",
+"_pseudo_register",
+"neg"
};
const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{
- {17 ,9 ,2147483648 ,2147483648 ,7 ,1 ,13 ,8 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,3 ,4 ,15 ,11 ,6 ,2147483648 ,12 ,2 ,16 ,2147483648 ,2147483648 ,5 },
+ {3 ,9 ,16 ,7 ,2147483648 ,2 ,2147483648 ,6 ,2147483648 ,17 ,11 ,15 ,2147483648 ,4 ,1 ,2147483648 ,18 ,13 ,2147483648 ,8 ,14 ,2147483648 ,10 ,2147483648 ,5 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2129,24 +2129,23 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {3 ,9 ,16 ,7 ,2147483648 ,111 ,2147483648 ,6 ,2147483648 ,17 ,11 ,15 ,2147483648 ,4 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,8 ,14 ,2147483648 ,10 ,2147483648 ,5 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2158,6 +2157,8 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2171,17 +2172,16 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,9 ,2147483648 ,2147483648 ,7 ,2147483648 ,13 ,8 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,3 ,4 ,15 ,11 ,6 ,2147483648 ,12 ,132 ,16 ,2147483648 ,2147483648 ,5 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2189,76 +2189,76 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,9 ,2147483648 ,2147483648 ,7 ,2147483648 ,13 ,8 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,2147483648 ,148 ,15 ,11 ,6 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,5 },
- {17 ,9 ,2147483648 ,2147483648 ,7 ,2147483648 ,13 ,8 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,2147483648 ,2147483648 ,15 ,11 ,6 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,149 },
- {17 ,9 ,2147483648 ,2147483648 ,7 ,2147483648 ,13 ,8 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,2147483648 ,2147483648 ,15 ,11 ,150 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,9 ,2147483648 ,2147483648 ,151 ,2147483648 ,13 ,8 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,152 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,10 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,153 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,154 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,155 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,156 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,157 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,158 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,167 ,14 ,166 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,170 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,9 ,16 ,7 ,2147483648 ,2147483648 ,2147483648 ,6 ,2147483648 ,17 ,11 ,15 ,2147483648 ,148 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,8 ,14 ,2147483648 ,10 ,2147483648 ,5 ,12 },
+ {2147483648 ,9 ,16 ,7 ,2147483648 ,2147483648 ,2147483648 ,6 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,8 ,14 ,2147483648 ,10 ,2147483648 ,149 ,12 },
+ {2147483648 ,9 ,16 ,7 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,8 ,14 ,2147483648 ,10 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,9 ,16 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,8 ,14 ,2147483648 ,10 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,9 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,152 ,14 ,2147483648 ,10 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,153 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,154 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,155 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,156 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,157 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,158 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,161 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,162 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,166 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,170 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,171 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,172 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,173 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,177 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,178 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,179 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,180 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,181 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,182 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,17 ,11 ,15 ,185 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,183 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,171 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,172 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,173 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,174 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,175 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,177 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,179 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,180 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,182 ,18 ,2147483648 ,14 ,181 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,188 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,189 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,190 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,191 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,173 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,193 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,173 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,195 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,196 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,185 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,186 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,187 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,188 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,189 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,190 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,191 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,192 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,193 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,194 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,195 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,196 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,182 ,18 ,2147483648 ,14 ,197 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,199 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,200 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,201 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,202 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,175 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,203 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,204 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,205 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,206 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,207 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,209 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,210 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,175 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,211 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,213 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,182 ,18 ,2147483648 ,14 ,212 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,214 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,215 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,216 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,217 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,197 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,199 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,200 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,201 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,202 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,203 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,204 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,205 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,206 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,207 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,208 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,209 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,210 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,211 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,212 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,218 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,219 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,220 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,221 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,222 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,223 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,213 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,214 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,215 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,216 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,217 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,218 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,17 ,11 ,15 ,220 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,219 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,17 ,11 ,15 ,222 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,221 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,223 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2277,9 +2277,9 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2336,57 +2336,57 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,275 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,275 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,276 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,173 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,277 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,175 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,277 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,278 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,278 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,182 ,18 ,2147483648 ,14 ,212 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,280 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,17 ,11 ,15 ,279 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,183 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,281 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,282 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,283 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,284 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,280 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,173 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,282 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,173 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,283 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,284 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,285 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,175 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,285 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,286 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,287 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,288 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,286 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,175 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,287 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,182 ,18 ,2147483648 ,14 ,212 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,289 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,290 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,289 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,17 ,11 ,15 ,290 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,183 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2403,20 +2403,20 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,307 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,307 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,308 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,309 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,308 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,310 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,309 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
- {17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,14 ,310 ,2147483648 ,2147483648 ,15 ,11 ,2147483648 ,2147483648 ,12 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2429,321 +2429,321 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
};
const int LalrActionTable[LALR_STATE_COUNT][LALR_TERMINAL_COUNT]=
{
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,81 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,-10 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,-12 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,87 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,84 ,-13 ,-13 ,2147483648 ,88 ,2147483648 },
- {2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,-20 ,2147483648 ,-20 ,2147483648 },
- {2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,-21 ,2147483648 ,-21 ,2147483648 },
- {2147483648 ,-24 ,-24 ,91 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 },
- {2147483648 ,-27 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 },
- {2147483648 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 },
- {2147483648 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,2147483648 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,2147483648 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,2147483648 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,2147483648 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,2147483648 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,2147483648 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,2147483648 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,2147483648 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,2147483648 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,2147483648 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,2147483648 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,2147483648 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-108 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,2147483648 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,2147483648 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,2147483648 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,2147483648 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-94 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-93 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,2147483648 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,2147483648 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,2147483648 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,2147483648 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,-97 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-111 ,-111 ,-111 ,2147483648 ,98 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 },
- {2147483648 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,184 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,184 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,184 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,81 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,-9 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,-11 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,-16 ,2147483648 ,-16 ,2147483648 },
- {2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,-18 ,2147483648 ,-18 ,2147483648 },
- {2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,-17 ,2147483648 ,-17 ,2147483648 },
- {2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,-15 ,2147483648 ,-15 ,2147483648 },
- {2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,-19 ,2147483648 ,-19 ,2147483648 },
- {2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,-14 ,2147483648 ,-14 ,2147483648 },
- {2147483648 ,-23 ,-23 ,91 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 },
- {2147483648 ,-22 ,-22 ,91 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 },
- {2147483648 ,-25 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 },
- {2147483648 ,-26 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 },
- {2147483648 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 },
- {2147483648 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 },
- {2147483648 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-111 ,-111 ,-111 ,2147483648 ,98 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 },
- {2147483648 ,-107 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,85 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,92 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,93 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,2147483648 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,2147483648 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,2147483648 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,2147483648 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,2147483648 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,2147483648 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,2147483648 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,2147483648 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,2147483648 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,2147483648 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,2147483648 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,2147483648 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,2147483648 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,2147483648 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,2147483648 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,2147483648 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,2147483648 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,2147483648 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,2147483648 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,2147483648 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,-97 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,186 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,186 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,186 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,92 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,92 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,93 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,93 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-95 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 },
- {2147483648 ,-110 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 },
- {2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 },
- {2147483648 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 },
- {2147483648 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 },
- {2147483648 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,184 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 },
- {2147483648 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 },
- {2147483648 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 },
- {2147483648 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 },
- {2147483648 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 },
- {2147483648 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 },
- {2147483648 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 },
- {2147483648 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 },
- {2147483648 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 },
- {2147483648 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 },
- {2147483648 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 },
- {2147483648 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 },
- {2147483648 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 },
- {2147483648 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,178 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,184 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 },
- {2147483648 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 },
- {2147483648 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 },
- {2147483648 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 },
- {2147483648 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 },
- {2147483648 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 },
- {2147483648 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,299 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,300 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,301 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,302 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,186 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,186 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,299 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,300 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,301 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,302 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 },
- {2147483648 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 },
- {2147483648 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 },
- {2147483648 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 },
- {2147483648 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 },
- {2147483648 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 },
- {2147483648 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 },
- {2147483648 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {76 ,2147483648 ,2147483648 ,19 ,27 ,2147483648 ,39 ,2147483648 ,24 ,61 ,34 ,63 ,30 ,35 ,36 ,2147483648 ,23 ,65 ,22 ,45 ,60 ,2147483648 ,2147483648 ,42 ,48 ,21 ,47 ,46 ,2147483648 ,20 ,28 ,43 ,40 ,53 ,2147483648 ,52 ,2147483648 ,51 ,57 ,37 ,25 ,64 ,2147483648 ,31 ,2147483648 ,44 ,49 ,29 ,66 ,74 ,68 ,75 ,55 ,41 ,50 ,73 ,32 ,38 ,2147483648 ,2147483648 ,2147483648 ,69 ,62 ,72 ,70 ,2147483648 ,58 ,56 ,26 ,71 ,2147483648 ,67 ,59 ,54 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,77 },
- {2147483648 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,311 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,312 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,313 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,314 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 },
- {2147483648 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 },
- {2147483648 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 },
- {2147483648 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 }
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
+ {2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,311 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,312 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,313 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,314 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
};
const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{
@@ -2800,7 +2800,7 @@ const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{SEMANTIC_RULE, "@DISASSEMBLE_LEN32"},
{SEMANTIC_RULE, "@DISASSEMBLE_LEN64"},
{SEMANTIC_RULE, "@LBR_SAVE"},
- {SEMANTIC_RULE, "@LBR_PRINT_ALL"},
+ {SEMANTIC_RULE, "@LBR_PRINT"},
{SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"},
{SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"},
{SEMANTIC_RULE, "@REFERENCE"},
diff --git a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
index e50eeb09..197bd931 100644
--- a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
+++ b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
@@ -1,5 +1,5 @@
# OneOpFunc1 input is a number and returns a number.
-.OneOpFunc1->poi db dd dw dq neg hi low not check_address strlen wcslen disassemble_len disassemble_len32 disassemble_len64 lbr_save lbr_print_all interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa
+.OneOpFunc1->poi db dd dw dq neg hi low not check_address strlen wcslen disassemble_len disassemble_len32 disassemble_len64 lbr_save lbr_print interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa
# TwoOpFunc1 inputs are two numbers and returns a number.
.TwoOpFunc1->ed eb eq interlocked_exchange interlocked_exchange_add wcscmp eb_pa ed_pa eq_pa
diff --git a/hyperdbg/script-engine/python/Grammar.txt b/hyperdbg/script-engine/python/Grammar.txt
index 1f48be19..3f27546b 100644
--- a/hyperdbg/script-engine/python/Grammar.txt
+++ b/hyperdbg/script-engine/python/Grammar.txt
@@ -38,7 +38,7 @@
.ZeroOpFunc1->pause flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in
# ZeroOpFunc2 no input and returns a number
-.ZeroOpFunc2->rdtsc rdtscp lbr_save lbr_print_all
+.ZeroOpFunc2->rdtsc rdtscp lbr_save lbr_print
.VarArgFunc1->printf
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index 84eabfa1..5679d6ea 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -2042,7 +2042,7 @@ ScriptEngineFunctionLbrSave()
* @return BOOLEAN
*/
BOOLEAN
-ScriptEngineFunctionLbrPrintAll()
+ScriptEngineFunctionLbrPrint()
{
#ifdef SCRIPT_ENGINE_USER_MODE
ShowMessages("err, it's not possible to call lbr_dump function in the user-mode\n");
@@ -2054,7 +2054,7 @@ ScriptEngineFunctionLbrPrintAll()
//
// Depending if we are in VMX-root then a VMCALL is issued by default instead, otherwise the VMCALL is ignored
//
- return HyperTraceLbrPrintAll(NULL);
+ return HyperTraceLbrPrint(NULL);
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
diff --git a/hyperdbg/script-eval/code/ScriptEngineEval.c b/hyperdbg/script-eval/code/ScriptEngineEval.c
index e7332efa..3b987490 100644
--- a/hyperdbg/script-eval/code/ScriptEngineEval.c
+++ b/hyperdbg/script-eval/code/ScriptEngineEval.c
@@ -747,13 +747,13 @@ ScriptEngineExecute(PGUEST_REGS GuestRegs,
SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
break;
- case FUNC_LBR_PRINT_ALL:
+ case FUNC_LBR_PRINT:
Des = (PSYMBOL)((unsigned long long)CodeBuffer->Head +
(unsigned long long)(*Indx * sizeof(SYMBOL)));
*Indx = *Indx + 1;
- DesVal = ScriptEngineFunctionLbrPrintAll();
+ DesVal = ScriptEngineFunctionLbrPrint();
SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
break;
diff --git a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
index c8997276..237771b8 100644
--- a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
+++ b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
@@ -267,7 +267,7 @@ BOOLEAN
ScriptEngineFunctionLbrSave();
BOOLEAN
-ScriptEngineFunctionLbrPrintAll();
+ScriptEngineFunctionLbrPrint();
UINT64
ScriptEngineFunctionStrcmp(const char * Address1, const char * Address2);
From 09416e7fe19bbee05aeaa36b31738febceedb834 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 4 May 2026 00:29:54 +0200
Subject: [PATCH 162/323] add lbrdump command and sdk function
---
.../hwdbg/script/script_definitions.scala | 2 +-
.../hyperkd/code/debugger/kernel-level/Kd.c | 18 +-
hyperdbg/hyperkd/code/driver/Ioctl.c | 44 +
hyperdbg/hypertrace/code/api/LbrApi.c | 94 +-
hyperdbg/hypertrace/code/lbr/Lbr.c | 24 +-
.../header/globals/GlobalVariables.h | 6 +
hyperdbg/hypertrace/header/lbr/Lbr.h | 71 -
hyperdbg/include/SDK/HyperDbgSdk.h | 25 +-
hyperdbg/include/SDK/headers/Connection.h | 4 +-
hyperdbg/include/SDK/headers/Ioctls.h | 9 +-
hyperdbg/include/SDK/headers/LbrDefinitions.h | 69 +
.../include/SDK/headers/RequestStructures.h | 30 +
.../headers/ScriptEngineCommonDefinitions.h | 94 +-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 6 +
.../SDK/imports/user/HyperDbgLibImports.h | 7 +
.../commands/extension-commands/lbr.cpp | 74 +-
.../commands/extension-commands/lbrdump.cpp | 208 ++-
.../code/debugger/core/debugger.cpp | 4 +-
.../code/debugger/core/interpreter.cpp | 5 +-
.../code/debugger/kernel-level/kd.cpp | 16 +-
.../kernel-level/kernel-listening.cpp | 14 +-
hyperdbg/libhyperdbg/code/export/export.cpp | 13 +
hyperdbg/libhyperdbg/header/debugger.h | 5 +-
hyperdbg/libhyperdbg/header/kd.h | 2 +-
hyperdbg/script-engine/code/parse-table.c | 1511 +++++++++--------
hyperdbg/script-engine/header/parse-table.h | 16 +-
.../python/Boolean_Expression_Grammar.txt | 2 +-
hyperdbg/script-engine/python/Grammar.txt | 2 +-
hyperdbg/script-eval/code/ScriptEngineEval.c | 1 +
29 files changed, 1396 insertions(+), 980 deletions(-)
diff --git a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
index bb5bda96..a5515f05 100644
--- a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
+++ b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
@@ -45,6 +45,6 @@ object ScriptConstantTypes {
object ScriptEvalFunc {
object ScriptOperators extends ChiselEnum {
- val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncLbr_save, sFuncLbr_print, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
+ val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncLbr_save, sFuncLbr_dump, sFuncLbr_print, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
}
}
\ No newline at end of file
diff --git a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
index e20841c3..c1c0b55c 100644
--- a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
+++ b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
@@ -2186,7 +2186,7 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
PDEBUGGEE_BP_PACKET BpPacket;
PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS PtePacket;
PSMI_OPERATION_PACKETS SmiOperationPacket;
- PHYPERTRACE_LBR_OPERATION_PACKETS HyperTraceLbrOperationPacket;
+ PHYPERTRACE_LBR_DUMP_PACKETS HyperTraceLbrdumpPacket;
PHYPERTRACE_PT_OPERATION_PACKETS HyperTracePtOperationPacket;
PDEBUGGER_APIC_REQUEST ApicPacket;
PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS IdtEntryPacket;
@@ -2903,22 +2903,22 @@ KdDispatchAndPerformCommandsFromDebugger(PROCESSOR_DEBUGGING_STATE * DbgState)
break;
- case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_LBR_OPERATION:
+ case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_LBR_DUMP:
- HyperTraceLbrOperationPacket = (HYPERTRACE_LBR_OPERATION_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
+ HyperTraceLbrdumpPacket = (HYPERTRACE_LBR_DUMP_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
//
- // Perform the HyperTrace LBR operations (it's in vmx-root)
+ // Perform the HyperTrace LBR dump (it's in vmx-root)
//
- HyperTraceLbrPerformOperation(HyperTraceLbrOperationPacket);
+ HyperTraceLbrPerformDump(HyperTraceLbrdumpPacket);
//
- // Send the result of the HyperTrace LBR back to the debuggee
+ // Send the result of the HyperTrace LBR dump back to the debuggee
//
KdResponsePacketToDebugger(DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGEE_TO_DEBUGGER,
- DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_LBR_OPERATION_REQUESTS,
- (CHAR *)HyperTraceLbrOperationPacket,
- SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS);
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_LBR_DUMP_REQUESTS,
+ (CHAR *)HyperTraceLbrdumpPacket,
+ SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS);
break;
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index 1bbb0e43..e95cf6c8 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -60,6 +60,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
PDEBUGGER_GENERAL_ACTION DebuggerNewActionRequest;
PSMI_OPERATION_PACKETS SmiOperationRequest;
PHYPERTRACE_LBR_OPERATION_PACKETS HyperTraceLbrOperationRequest;
+ PHYPERTRACE_LBR_DUMP_PACKETS HyperTraceLbrdumpRequest;
PHYPERTRACE_PT_OPERATION_PACKETS HyperTracePtOperationRequest;
PVOID BufferToStoreThreadsAndProcessesDetails;
NTSTATUS Status;
@@ -1299,6 +1300,49 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
break;
+ case IOCTL_PERFORM_HYPERTRACE_LBR_DUMP:
+
+ //
+ // First validate the parameters.
+ //
+ if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS ||
+ Irp->AssociatedIrp.SystemBuffer == NULL)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ LogError("Err, invalid parameter to IOCTL dispatcher");
+ break;
+ }
+
+ InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
+ OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
+
+ if (!InBuffLength || !OutBuffLength)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place
+ //
+ HyperTraceLbrdumpRequest = (PHYPERTRACE_LBR_DUMP_PACKETS)Irp->AssociatedIrp.SystemBuffer;
+
+ //
+ // Perform the HyperTrace LBR dump operation
+ //
+ HyperTraceLbrPerformDump(HyperTraceLbrdumpRequest);
+
+ Irp->IoStatus.Information = SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS;
+ Status = STATUS_SUCCESS;
+
+ //
+ // Avoid zeroing it
+ //
+ DoNotChangeInformation = TRUE;
+
+ break;
+
case IOCTL_PERFORM_HYPERTRACE_PT_OPERATION:
//
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 093d72c8..60b6db7e 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -197,6 +197,11 @@ HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest
return FALSE;
}
+ //
+ // Disabling LBR
+ //
+ g_LastBranchRecordEnabled = FALSE;
+
//
// Broadcast flushing LBR on all cores
//
@@ -316,7 +321,86 @@ HyperTraceLbrUpdateFilterOptions(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOp
}
/**
- * @brief Perform actions related to HyperTrace LBR
+ * @brief Perform actions related to HyperTrace LBR dumping
+ *
+ * @param LbrDumpRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceLbrPerformDump(HYPERTRACE_LBR_DUMP_PACKETS * LbrDumpRequest)
+{
+ ULONG ProcessorsCount;
+
+ //
+ // Check if the hypertrace module is initialized before performing any dump operation
+ //
+ if (!g_HyperTraceCallbacksInitialized)
+ {
+ LbrDumpRequest->KernelStatus = DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED;
+ return FALSE;
+ }
+
+ //
+ // Check if LBR is enabled or not before dumping
+ //
+ if (!g_LastBranchRecordEnabled)
+ {
+ LbrDumpRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_DISABLED;
+ return FALSE;
+ }
+
+ //
+ // Get the number of processors in the system to validate the requested core id for dumping
+ //
+ ProcessorsCount = KeQueryActiveProcessorCount(0);
+
+ //
+ // Check if core id is valid
+ //
+ if (LbrDumpRequest->CoreId >= ProcessorsCount)
+ {
+ LbrDumpRequest->KernelStatus = DEBUGGER_ERROR_INVALID_CORE_ID;
+ return FALSE;
+ }
+
+ //
+ // Check if next core is valid in the case of dumping all cores
+ //
+ if (LbrDumpRequest->CoreId == ProcessorsCount - 1)
+ {
+ LbrDumpRequest->NextCoreIsValid = FALSE;
+ }
+ else
+ {
+ LbrDumpRequest->NextCoreIsValid = TRUE;
+ }
+
+ //
+ // Set ARCH or LEGACY LBR flag in the dump request structure based on the type of LBR supported by the CPU
+ //
+ LbrDumpRequest->ArchBasedLBR = g_ArchBasedLastBranchRecord;
+
+ //
+ // Set the current LBR capacity in the dump request structure based on the type of LBR supported by the CPU
+ //
+ LbrDumpRequest->CurrentLbrCapacity = (UINT8)g_LbrCapacity;
+
+ //
+ // Copy the LBR stack entries of the requested core into the dump request structure to be sent back to usermode
+ //
+ RtlCopyMemory(&LbrDumpRequest->LbrStack, &g_LbrStateList[LbrDumpRequest->CoreId], sizeof(LBR_STACK_ENTRY));
+
+ //
+ // Set successful status
+ //
+ LbrDumpRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+
+ return TRUE;
+}
+
+/**
+ * @brief Perform actions related to HyperTrace LBR operations
*
* @param LbrOperationRequest
*
@@ -343,7 +427,7 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
{
case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_ENABLE:
- LogInfo("HyperTrace: Enabling LBR tracing...\n");
+ // LogInfo("HyperTrace: Enabling LBR tracing...\n");
HyperTraceLbrEnable(LbrOperationRequest);
@@ -351,7 +435,7 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_DISABLE:
- LogInfo("HyperTrace: Disabling LBR tracing...\n");
+ // LogInfo("HyperTrace: Disabling LBR tracing...\n");
HyperTraceLbrDisable(LbrOperationRequest);
@@ -359,7 +443,7 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FLUSH:
- LogInfo("HyperTrace: Flushing LBR tracing...\n");
+ // LogInfo("HyperTrace: Flushing LBR tracing...\n");
HyperTraceLbrFlush(LbrOperationRequest);
@@ -367,7 +451,7 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
case HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FILTER:
- LogInfo("HyperTrace: Updating LBR filter options...\n");
+ // LogInfo("HyperTrace: Updating LBR filter options...\n");
HyperTraceLbrUpdateFilterOptions(LbrOperationRequest);
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 7dbc5852..c87e343d 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -147,14 +147,14 @@ LbrCheckAndReadArchitecturalLbrDetails()
HighestSetBit = i;
}
}
- LbrCapacity = 8 * (HighestSetBit + 1);
+ g_LbrCapacity = 8 * (HighestSetBit + 1);
}
else
{
//
// If LbrDepthMask is 0, it means the CPU supports architectural LBR but does not specify the depth, we can assume a default value (e.g., 16 or 32) or treat it as unsupported
//
- LbrCapacity = MAXIMUM_LBR_CAPACITY; // Assuming a default capacity of MAXIMUM_LBR_CAPACITY if not specified
+ g_LbrCapacity = MAXIMUM_LBR_CAPACITY; // Assuming a default capacity of MAXIMUM_LBR_CAPACITY if not specified
}
return TRUE;
@@ -181,12 +181,12 @@ LbrCheckAndReadLegacyLbrDetails()
{
if (Model == CPU_LBR_MAPS[i].Model)
{
- LbrCapacity = CPU_LBR_MAPS[i].LbrCapacity;
+ g_LbrCapacity = CPU_LBR_MAPS[i].LbrCapacity;
break;
}
}
- if (LbrCapacity == 0)
+ if (g_LbrCapacity == 0)
{
return FALSE;
}
@@ -315,7 +315,7 @@ LbrClearHardwareState()
//
// Clearing LBR TO and FROM MSRs
//
- for (ULONG i = 0; i < (ULONG)LbrCapacity; i++)
+ for (ULONG i = 0; i < (ULONG)g_LbrCapacity; i++)
{
xwrmsr(MSR_LBR_NHM_FROM + i, 0);
xwrmsr(MSR_LBR_NHM_TO + i, 0);
@@ -650,7 +650,7 @@ LbrStart(UINT64 FilterOptions)
IA32_LBR_CTL_REGISTER Ia32LbrCtl = {0};
ULONGLONG DbgCtlMsr = 0;
- if (LbrCapacity == 0)
+ if (g_LbrCapacity == 0)
{
LogInfo("LBR: Aborting, CPU model not supported.\n");
return FALSE;
@@ -873,7 +873,7 @@ LbrSave()
//
// Dump LBR entries into the current core's state structure
//
- for (ULONG i = 0; i < (ULONG)LbrCapacity; i++)
+ for (ULONG i = 0; i < (ULONG)g_LbrCapacity; i++)
{
xrdmsr(MSR_LBR_NHM_FROM + i, &State->BranchEntry[i].From);
xrdmsr(MSR_LBR_NHM_TO + i, &State->BranchEntry[i].To);
@@ -903,9 +903,9 @@ LbrPrint()
//
State = &g_LbrStateList[CurrentCore];
- LogInfo("LBR Chronological Trace");
+ Log("LBR Chronological Trace on core (decimal): %d\n", CurrentCore);
- for (ULONG i = 1; i <= LbrCapacity; i++)
+ for (ULONG i = 1; i <= g_LbrCapacity; i++)
{
if (g_ArchBasedLastBranchRecord)
{
@@ -916,13 +916,15 @@ LbrPrint()
}
else
{
- CurrentIdx = (ULONG)(State->Tos + i) % (ULONG)LbrCapacity;
+ CurrentIdx = (ULONG)(State->Tos + i) % (ULONG)g_LbrCapacity;
}
if (State->BranchEntry[CurrentIdx].From == 0)
+ {
continue;
+ }
- Log("[%2u] Branch Mispredicted: %s, Cycle Count (Decimal): %03d - From: %016llx To: %016llx\n",
+ Log("\t [%2u] Branch Mispredicted: %s, Cycle Count (Decimal): %03d - From: %016llx To: %016llx\n",
CurrentIdx,
State->LastBranchInfo[CurrentIdx].Mispred ? "true " : "false",
State->LastBranchInfo[CurrentIdx].CycleCount,
diff --git a/hyperdbg/hypertrace/header/globals/GlobalVariables.h b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
index d87ed5be..68a700b4 100644
--- a/hyperdbg/hypertrace/header/globals/GlobalVariables.h
+++ b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
@@ -58,3 +58,9 @@ BOOLEAN g_ProcessorTraceEnabled;
*
*/
LBR_STACK_ENTRY * g_LbrStateList;
+
+/**
+ * @brief The global variable to hold the LBR capacity of the current CPU
+ *
+ */
+ULONGLONG g_LbrCapacity;
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index 21c5aa25..50201731 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -86,44 +86,6 @@ typedef union _CPUID28_ECX
// MSR Structures //
//////////////////////////////////////////////////
-/**
- * MSR_LBR_INFO_x - Last Branch Record Info Register
- *
- */
-typedef union
-{
- struct
- {
- /** Bits 15:0 - Elapsed core clocks since last update to the LBR stack (saturating) */
- UINT64 CycleCount : 16;
-
- /** Bits 60:16 - Reserved (R/W) */
- UINT64 Reserved : 45;
-
- /**
- * Bit 61 - TSX Abort indicator.
- * When set:
- * LBR_FROM = EIP at the time of the TSX Abort
- * LBR_TO = EIP of the start of HLE region OR EIP of the RTM Abort Handler
- */
- UINT64 TsxAbort : 1;
-
- /** Bit 62 - When set, indicates the entry occurred in a TSX region */
- UINT64 InTsx : 1;
-
- /**
- * Bit 63 - Branch misprediction flag.
- * When set, the target of the branch was mispredicted and/or the
- * direction (taken/non-taken) was mispredicted.
- * When clear, the target branch was predicted.
- */
- UINT64 Mispred : 1;
- };
-
- UINT64 AsUInt;
-
-} MSR_LBR_INFO, *PMSR_LBR_INFO;
-
/**
* @brief The structure to hold the IA32_LBR_CTL MSR, which is used to enable and configure the LBR feature
* @details MSR Address: 0x14CEH (Hex) / 5326 (Dec)
@@ -151,33 +113,6 @@ typedef union _IA32_LBR_CTL_REGISTER
} IA32_LBR_CTL_REGISTER, *PIA32_LBR_CTL_REGISTER;
-//////////////////////////////////////////////////
-// Structures //
-//////////////////////////////////////////////////
-
-/**
- * @brief The structure to hold a single LBR entry (from and to addresses)
- *
- */
-typedef struct _LBR_BRANCH_ENTRY
-{
- ULONGLONG From;
- ULONGLONG To;
-
-} LBR_BRANCH_ENTRY, PLBR_BRANCH_ENTRY;
-
-/**
- * @brief The structure to hold the LBR stack for a single processor core, including the branch entries and the TOS index
- *
- */
-typedef struct _LBR_STACK_ENTRY
-{
- LBR_BRANCH_ENTRY BranchEntry[MAXIMUM_LBR_CAPACITY];
- MSR_LBR_INFO LastBranchInfo[MAXIMUM_LBR_CAPACITY];
- UINT8 Tos;
-
-} LBR_STACK_ENTRY, PLBR_STACK_ENTRY;
-
//////////////////////////////////////////////////
// Global Variables //
//////////////////////////////////////////////////
@@ -198,12 +133,6 @@ typedef struct _CPU_LBR_MAP
*/
extern CPU_LBR_MAP CPU_LBR_MAPS[];
-/**
- * @brief The global variable to hold the LBR capacity of the current CPU
- *
- */
-ULONGLONG LbrCapacity;
-
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
diff --git a/hyperdbg/include/SDK/HyperDbgSdk.h b/hyperdbg/include/SDK/HyperDbgSdk.h
index 71bafe53..3e00bb86 100644
--- a/hyperdbg/include/SDK/HyperDbgSdk.h
+++ b/hyperdbg/include/SDK/HyperDbgSdk.h
@@ -1,16 +1,5 @@
#pragma once
-#include "SDK/headers/Constants.h"
-#include "SDK/headers/BasicTypes.h"
-#include "SDK/headers/ErrorCodes.h"
-#include "SDK/headers/Connection.h"
-#include "SDK/headers/DataTypes.h"
-#include "SDK/headers/Ioctls.h"
-#include "SDK/headers/Events.h"
-#include "SDK/headers/RequestStructures.h"
-#include "SDK/headers/Symbols.h"
-#include "SDK/headers/HardwareDebugger.h"
-
//
// Devices
//
@@ -21,6 +10,20 @@
//
#include "SDK/headers/LbrDefinitions.h"
+//
+// General SDK Headers
+//
+#include "SDK/headers/Constants.h"
+#include "SDK/headers/BasicTypes.h"
+#include "SDK/headers/ErrorCodes.h"
+#include "SDK/headers/Connection.h"
+#include "SDK/headers/DataTypes.h"
+#include "SDK/headers/Ioctls.h"
+#include "SDK/headers/Events.h"
+#include "SDK/headers/RequestStructures.h"
+#include "SDK/headers/Symbols.h"
+#include "SDK/headers/HardwareDebugger.h"
+
//
// Asserts
//
diff --git a/hyperdbg/include/SDK/headers/Connection.h b/hyperdbg/include/SDK/headers/Connection.h
index 98945d42..aac62f47 100644
--- a/hyperdbg/include/SDK/headers/Connection.h
+++ b/hyperdbg/include/SDK/headers/Connection.h
@@ -101,7 +101,7 @@ typedef enum _DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_QUERY_PCIDEVINFO,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_READ_IDT_ENTRIES,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_SMI_OPERATION,
- DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_LBR_OPERATION,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_LBR_DUMP,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_PT_OPERATION,
//
@@ -141,7 +141,7 @@ typedef enum _DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_PCIDEVINFO,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_QUERY_IDT_ENTRIES_REQUESTS,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_SMI_OPERATION_REQUESTS,
- DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_LBR_OPERATION_REQUESTS,
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_LBR_DUMP_REQUESTS,
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_PT_OPERATION_REQUESTS,
//
diff --git a/hyperdbg/include/SDK/headers/Ioctls.h b/hyperdbg/include/SDK/headers/Ioctls.h
index b7973de3..ff4baae2 100644
--- a/hyperdbg/include/SDK/headers/Ioctls.h
+++ b/hyperdbg/include/SDK/headers/Ioctls.h
@@ -338,9 +338,16 @@
#define IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0x827, METHOD_BUFFERED, FILE_ANY_ACCESS)
+/**
+ * @brief ioctl, to perform HyperTrace LBR dump
+ *
+ */
+#define IOCTL_PERFORM_HYPERTRACE_LBR_DUMP \
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x828, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
/**
* @brief ioctl, to perform HyperTrace PT operations
*
*/
#define IOCTL_PERFORM_HYPERTRACE_PT_OPERATION \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x828, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x829, METHOD_BUFFERED, FILE_ANY_ACCESS)
diff --git a/hyperdbg/include/SDK/headers/LbrDefinitions.h b/hyperdbg/include/SDK/headers/LbrDefinitions.h
index 6510de2d..47bee331 100644
--- a/hyperdbg/include/SDK/headers/LbrDefinitions.h
+++ b/hyperdbg/include/SDK/headers/LbrDefinitions.h
@@ -57,3 +57,72 @@
*
*/
#define MAXIMUM_LBR_CAPACITY 0x20 // 32 entries, which is the maximum supported by modern Intel CPUs
+
+//////////////////////////////////////////////////
+// MSR Structures //
+//////////////////////////////////////////////////
+
+/**
+ * MSR_LBR_INFO_x - Last Branch Record Info Register
+ *
+ */
+typedef union
+{
+ struct
+ {
+ /** Bits 15:0 - Elapsed core clocks since last update to the LBR stack (saturating) */
+ UINT64 CycleCount : 16;
+
+ /** Bits 60:16 - Reserved (R/W) */
+ UINT64 Reserved : 45;
+
+ /**
+ * Bit 61 - TSX Abort indicator.
+ * When set:
+ * LBR_FROM = EIP at the time of the TSX Abort
+ * LBR_TO = EIP of the start of HLE region OR EIP of the RTM Abort Handler
+ */
+ UINT64 TsxAbort : 1;
+
+ /** Bit 62 - When set, indicates the entry occurred in a TSX region */
+ UINT64 InTsx : 1;
+
+ /**
+ * Bit 63 - Branch misprediction flag.
+ * When set, the target of the branch was mispredicted and/or the
+ * direction (taken/non-taken) was mispredicted.
+ * When clear, the target branch was predicted.
+ */
+ UINT64 Mispred : 1;
+ };
+
+ UINT64 AsUInt;
+
+} MSR_LBR_INFO, *PMSR_LBR_INFO;
+
+//////////////////////////////////////////////////
+// Structures //
+//////////////////////////////////////////////////
+
+/**
+ * @brief The structure to hold a single LBR entry (from and to addresses)
+ *
+ */
+typedef struct _LBR_BRANCH_ENTRY
+{
+ ULONGLONG From;
+ ULONGLONG To;
+
+} LBR_BRANCH_ENTRY, PLBR_BRANCH_ENTRY;
+
+/**
+ * @brief The structure to hold the LBR stack for a single processor core, including the branch entries and the TOS index
+ *
+ */
+typedef struct _LBR_STACK_ENTRY
+{
+ LBR_BRANCH_ENTRY BranchEntry[MAXIMUM_LBR_CAPACITY];
+ MSR_LBR_INFO LastBranchInfo[MAXIMUM_LBR_CAPACITY];
+ UINT8 Tos;
+
+} LBR_STACK_ENTRY, PLBR_STACK_ENTRY;
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index dea11683..1680cae4 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1275,6 +1275,36 @@ typedef struct _HYPERTRACE_LBR_OPERATION_PACKETS
// ==============================================================================================
+/**
+ * @brief The structure of HyperTrace LBR dump result packet in HyperDbg
+ *
+ */
+typedef struct _HYPERTRACE_LBR_DUMP_PACKETS
+{
+ UINT32 CoreId;
+ BOOLEAN NextCoreIsValid; // In the case of dumping all cores, this flag indicates whether the next core number is valid
+ BOOLEAN ArchBasedLBR; // Whether the LBR is architecture-based (like Intel CET) or not (like Intel LBR or AMD IBS)
+ LBR_STACK_ENTRY LbrStack;
+ UINT8 CurrentLbrCapacity;
+ UINT32 KernelStatus;
+
+} HYPERTRACE_LBR_DUMP_PACKETS, *PHYPERTRACE_LBR_DUMP_PACKETS;
+
+/**
+ * @brief In the case of dumping all cores, this value is used to specify that all cores should be dumped
+ *
+ */
+#define HYPERTRACE_LBR_DUMP_ALL_CORES 0xffffffff
+
+/**
+ * @brief Debugger size of HYPERTRACE_LBR_DUMP_PACKETS
+ *
+ */
+#define SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS \
+ sizeof(HYPERTRACE_LBR_DUMP_PACKETS)
+
+// ==============================================================================================
+
/**
* @brief Perform actions related to HyperTrace for PT
*
diff --git a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
index 0a7f6876..085375da 100644
--- a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
+++ b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
@@ -151,52 +151,53 @@ static const char *const SymbolTypeNames[] = {
#define FUNC_RDTSC 54
#define FUNC_RDTSCP 55
#define FUNC_LBR_SAVE 56
-#define FUNC_LBR_PRINT 57
-#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 58
-#define FUNC_EVENT_INJECT 59
-#define FUNC_POI 60
-#define FUNC_DB 61
-#define FUNC_DD 62
-#define FUNC_DW 63
-#define FUNC_DQ 64
-#define FUNC_NEG 65
-#define FUNC_HI 66
-#define FUNC_LOW 67
-#define FUNC_NOT 68
-#define FUNC_CHECK_ADDRESS 69
-#define FUNC_DISASSEMBLE_LEN 70
-#define FUNC_DISASSEMBLE_LEN32 71
-#define FUNC_DISASSEMBLE_LEN64 72
-#define FUNC_INTERLOCKED_INCREMENT 73
-#define FUNC_INTERLOCKED_DECREMENT 74
-#define FUNC_PHYSICAL_TO_VIRTUAL 75
-#define FUNC_VIRTUAL_TO_PHYSICAL 76
-#define FUNC_POI_PA 77
-#define FUNC_HI_PA 78
-#define FUNC_LOW_PA 79
-#define FUNC_DB_PA 80
-#define FUNC_DD_PA 81
-#define FUNC_DW_PA 82
-#define FUNC_DQ_PA 83
-#define FUNC_ED 84
-#define FUNC_EB 85
-#define FUNC_EQ 86
-#define FUNC_INTERLOCKED_EXCHANGE 87
-#define FUNC_INTERLOCKED_EXCHANGE_ADD 88
-#define FUNC_EB_PA 89
-#define FUNC_ED_PA 90
-#define FUNC_EQ_PA 91
-#define FUNC_INTERLOCKED_COMPARE_EXCHANGE 92
-#define FUNC_STRLEN 93
-#define FUNC_STRCMP 94
-#define FUNC_MEMCMP 95
-#define FUNC_STRNCMP 96
-#define FUNC_WCSLEN 97
-#define FUNC_WCSCMP 98
-#define FUNC_EVENT_INJECT_ERROR_CODE 99
-#define FUNC_MEMCPY 100
-#define FUNC_MEMCPY_PA 101
-#define FUNC_WCSNCMP 102
+#define FUNC_LBR_DUMP 57
+#define FUNC_LBR_PRINT 58
+#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 59
+#define FUNC_EVENT_INJECT 60
+#define FUNC_POI 61
+#define FUNC_DB 62
+#define FUNC_DD 63
+#define FUNC_DW 64
+#define FUNC_DQ 65
+#define FUNC_NEG 66
+#define FUNC_HI 67
+#define FUNC_LOW 68
+#define FUNC_NOT 69
+#define FUNC_CHECK_ADDRESS 70
+#define FUNC_DISASSEMBLE_LEN 71
+#define FUNC_DISASSEMBLE_LEN32 72
+#define FUNC_DISASSEMBLE_LEN64 73
+#define FUNC_INTERLOCKED_INCREMENT 74
+#define FUNC_INTERLOCKED_DECREMENT 75
+#define FUNC_PHYSICAL_TO_VIRTUAL 76
+#define FUNC_VIRTUAL_TO_PHYSICAL 77
+#define FUNC_POI_PA 78
+#define FUNC_HI_PA 79
+#define FUNC_LOW_PA 80
+#define FUNC_DB_PA 81
+#define FUNC_DD_PA 82
+#define FUNC_DW_PA 83
+#define FUNC_DQ_PA 84
+#define FUNC_ED 85
+#define FUNC_EB 86
+#define FUNC_EQ 87
+#define FUNC_INTERLOCKED_EXCHANGE 88
+#define FUNC_INTERLOCKED_EXCHANGE_ADD 89
+#define FUNC_EB_PA 90
+#define FUNC_ED_PA 91
+#define FUNC_EQ_PA 92
+#define FUNC_INTERLOCKED_COMPARE_EXCHANGE 93
+#define FUNC_STRLEN 94
+#define FUNC_STRCMP 95
+#define FUNC_MEMCMP 96
+#define FUNC_STRNCMP 97
+#define FUNC_WCSLEN 98
+#define FUNC_WCSCMP 99
+#define FUNC_EVENT_INJECT_ERROR_CODE 100
+#define FUNC_MEMCPY 101
+#define FUNC_MEMCPY_PA 102
+#define FUNC_WCSNCMP 103
static const char *const FunctionNames[] = {
"FUNC_UNDEFINED",
@@ -256,6 +257,7 @@ static const char *const FunctionNames[] = {
"FUNC_RDTSC",
"FUNC_RDTSCP",
"FUNC_LBR_SAVE",
+"FUNC_LBR_DUMP",
"FUNC_LBR_PRINT",
"FUNC_SPINLOCK_LOCK_CUSTOM_WAIT",
"FUNC_EVENT_INJECT",
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index dda09475..7d7b8d2e 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -48,6 +48,12 @@ HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId);
+//
+// Perform operations related to HyperTrace LBR dumping
+//
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTraceLbrPerformDump(HYPERTRACE_LBR_DUMP_PACKETS * LbrDumpRequest);
+
//
// Perform operations related to HyperTrace LBR based on the request type and parameters
//
diff --git a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
index d00a2d37..75448bae 100644
--- a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
+++ b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
@@ -256,6 +256,13 @@ hyperdbg_u_get_idt_entry(INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS * idt_packet
IMPORT_EXPORT_LIBHYPERDBG BOOLEAN
hyperdbg_u_perform_smi_operation(SMI_OPERATION_PACKETS * SmiOperation);
+//
+// LBR related command
+// Exported functionality of the '!lbrdump' command
+//
+IMPORT_EXPORT_LIBHYPERDBG BOOLEAN
+hyperdbg_u_lbr_dump(HYPERTRACE_LBR_DUMP_PACKETS * LbrdumpRequest);
+
//
// Transparent mode related command
// Exported functionality of the '!hide', and '!unhide' commands
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index 91f4b499..b4ce1c0c 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -11,11 +11,6 @@
*/
#include "pch.h"
-//
-// Global Variables
-//
-extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
-
/**
* @brief help of the !lbr command
*
@@ -68,53 +63,36 @@ CommandLbrSendRequest(HYPERTRACE_LBR_OPERATION_PACKETS * LbrRequest)
BOOL Status;
ULONG ReturnedLength;
- if (g_IsSerialConnectedToRemoteDebuggee)
+ AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnFalse);
+
+ //
+ // Send IOCTL
+ //
+ Status = DeviceIoControl(
+ g_DeviceHandle, // Handle to device
+ IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION, // IO Control Code (IOCTL)
+ LbrRequest, // Input Buffer to driver.
+ SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS, // Input buffer length
+ LbrRequest, // Output Buffer from driver.
+ SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS, // Length of output buffer in bytes.
+ &ReturnedLength, // Bytes placed in buffer.
+ NULL // synchronous call
+ );
+
+ if (!Status)
{
- //
- // Send the request over serial kernel debugger
- //
- if (!KdSendHyperTraceLbrPacketsToDebuggee(LbrRequest, SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS))
- {
- return FALSE;
- }
- else
- {
- return TRUE;
- }
+ ShowMessages("ioctl failed with code 0x%x\n", GetLastError());
+
+ return FALSE;
+ }
+
+ if (LbrRequest->KernelStatus == DEBUGGER_OPERATION_WAS_SUCCESSFUL)
+ {
+ return TRUE;
}
else
{
- AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnFalse);
-
- //
- // Send IOCTL
- //
- Status = DeviceIoControl(
- g_DeviceHandle, // Handle to device
- IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION, // IO Control Code (IOCTL)
- LbrRequest, // Input Buffer to driver.
- SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS, // Input buffer length
- LbrRequest, // Output Buffer from driver.
- SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS, // Length of output buffer in bytes.
- &ReturnedLength, // Bytes placed in buffer.
- NULL // synchronous call
- );
-
- if (!Status)
- {
- ShowMessages("ioctl failed with code 0x%x\n", GetLastError());
-
- return FALSE;
- }
-
- if (LbrRequest->KernelStatus == DEBUGGER_OPERATION_WAS_SUCCESSFUL)
- {
- return TRUE;
- }
- else
- {
- return FALSE;
- }
+ return FALSE;
}
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
index ab724e1f..078e27f4 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
@@ -16,6 +16,61 @@
//
extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
+/**
+ * @brief Send LBR dump requests
+ *
+ * @param LbrdumpRequest
+ *
+ * @return VOID
+ */
+BOOLEAN
+HyperDbgLbrdumpSendRequest(HYPERTRACE_LBR_DUMP_PACKETS * LbrdumpRequest)
+{
+ BOOL Status;
+ ULONG ReturnedLength;
+
+ if (g_IsSerialConnectedToRemoteDebuggee)
+ {
+ //
+ // Send the request over serial kernel debugger
+ //
+ if (!KdSendHyperTraceLbrdumpPacketsToDebuggee(LbrdumpRequest, SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS))
+ {
+ return FALSE;
+ }
+ }
+ else
+ {
+ AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnFalse);
+
+ //
+ // Send IOCTL
+ //
+ Status = DeviceIoControl(
+ g_DeviceHandle, // Handle to device
+ IOCTL_PERFORM_HYPERTRACE_LBR_DUMP, // IO Control Code (IOCTL)
+ LbrdumpRequest, // Input Buffer to driver.
+ SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS, // Input buffer length
+ LbrdumpRequest, // Output Buffer from driver.
+ SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS, // Length of output buffer in bytes.
+ &ReturnedLength, // Bytes placed in buffer.
+ NULL // synchronous call
+ );
+
+ if (!Status)
+ {
+ ShowMessages("ioctl failed with code 0x%x\n", GetLastError());
+
+ return FALSE;
+ }
+ }
+
+ //
+ // Sending the request was successful
+ //
+ return TRUE;
+}
+
/**
* @brief help of the !lbrdump command
*
@@ -29,9 +84,63 @@ CommandLbrdumpHelp()
ShowMessages("syntax : \t!lbrdump [core CoreId (hex)]\n");
ShowMessages("\n");
+ ShowMessages("\t\te.g : !lbrdump\n");
ShowMessages("\t\te.g : !lbrdump core 1\n");
}
+/**
+ * @brief Print collected LBR branches
+ *
+ * @param LbrdumpRequest
+ *
+ * @return VOID
+ */
+VOID
+CommandLbrdumpPrint(HYPERTRACE_LBR_DUMP_PACKETS * LbrdumpRequest)
+{
+ ULONG CurrentIdx;
+ BOOLEAN IsCoreEmpty = TRUE;
+
+ ShowMessages("LBR Chronological Trace on core (decimal): %d\n\n", LbrdumpRequest->CoreId);
+
+ for (ULONG i = 1; i <= LbrdumpRequest->CurrentLbrCapacity; i++)
+ {
+ if (LbrdumpRequest->ArchBasedLBR)
+ {
+ //
+ // In ARCH LBR, there is not TOS index and everything is in order
+ //
+ CurrentIdx = i - 1;
+ }
+ else
+ {
+ CurrentIdx = (ULONG)(LbrdumpRequest->LbrStack.Tos + i) % (ULONG)LbrdumpRequest->CurrentLbrCapacity;
+ }
+
+ if (LbrdumpRequest->LbrStack.BranchEntry[CurrentIdx].From == 0)
+ {
+ continue;
+ }
+
+ IsCoreEmpty = FALSE;
+
+ ShowMessages("\t [%2u] Branch Mispredicted: %s, Cycle Count (Decimal): %03d - From: %016llx To: %016llx\n",
+ CurrentIdx,
+ LbrdumpRequest->LbrStack.LastBranchInfo[CurrentIdx].Mispred ? "true " : "false",
+ LbrdumpRequest->LbrStack.LastBranchInfo[CurrentIdx].CycleCount,
+ LbrdumpRequest->LbrStack.BranchEntry[CurrentIdx].From,
+ LbrdumpRequest->LbrStack.BranchEntry[CurrentIdx].To);
+ }
+
+ if (IsCoreEmpty)
+ {
+ ShowMessages("\t no LBR entries found for this core\n"
+ "\t you can use the 'lbr_save();' function in the script engine\n"
+ "\t on the target core to save the LBR entries before dumping\n\n"
+ "\t ===========================================================\n\n");
+ }
+}
+
/**
* @brief !lbrdump command handler
*
@@ -43,11 +152,108 @@ CommandLbrdumpHelp()
VOID
CommandLbrdump(vector CommandTokens, string Command)
{
- if (CommandTokens.size() != 1)
+ HYPERTRACE_LBR_DUMP_PACKETS LbrdumpRequest = {0};
+ UINT32 CoreId = 0;
+ BOOLEAN ContinueDumpingAllCores = TRUE;
+
+ if (CommandTokens.size() != 1 && CommandTokens.size() != 3)
{
ShowMessages("incorrect use of the '%s'\n\n",
GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
CommandLbrdumpHelp();
return;
}
+
+ if (CommandTokens.size() == 3)
+ {
+ if (CompareLowerCaseStrings(CommandTokens.at(1), "core"))
+ {
+ if (!ConvertTokenToUInt32(CommandTokens.at(2), &CoreId))
+ {
+ //
+ // Unknown parameter
+ //
+ ShowMessages("unknown parameter '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
+ CommandLbrdumpHelp();
+
+ return;
+ }
+ }
+ else
+ {
+ ShowMessages("incorrect use of the '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
+ CommandLbrdumpHelp();
+ return;
+ }
+ }
+ else
+ {
+ //
+ // If no core is specified, we can set the CoreId to a special value (e.g., 0xFFFFFFFF) to indicate that the dump should be performed for all cores
+ //
+ CoreId = HYPERTRACE_LBR_DUMP_ALL_CORES;
+ }
+
+ //
+ // If the CoreId is set to the special value for dumping all cores,
+ // we can set it to 0 to start dumping from the first core and rely on the NextCoreIsValid flag
+ // in the dump request structure to indicate whether there are more cores to be dumped or not in
+ // the driver response
+ //
+ if (CoreId == HYPERTRACE_LBR_DUMP_ALL_CORES)
+ {
+ LbrdumpRequest.CoreId = 0;
+ }
+ else
+ {
+ LbrdumpRequest.CoreId = CoreId;
+ }
+
+ while (ContinueDumpingAllCores)
+ {
+ //
+ // Send the LBR dump request
+ //
+ if (HyperDbgLbrdumpSendRequest(&LbrdumpRequest))
+ {
+ if (LbrdumpRequest.KernelStatus == DEBUGGER_OPERATION_WAS_SUCCESSFUL)
+ {
+ //
+ // Show entries of the LBR stack in the request structure which are filled by the driver in response to the dump request
+ //
+ CommandLbrdumpPrint(&LbrdumpRequest);
+
+ if (CoreId == HYPERTRACE_LBR_DUMP_ALL_CORES && LbrdumpRequest.NextCoreIsValid)
+ {
+ //
+ // If the NextCoreIsValid flag is set, it means there are more cores to be
+ // dumped in the case of dumping all cores, so we can update the CoreId
+ // in the dump request structure to the next core number for the next
+ // iteration of dumping
+ //
+ LbrdumpRequest.CoreId++;
+ }
+ else
+ {
+ //
+ // If the NextCoreIsValid flag is not set, it means there are no more
+ // cores to be dumped in the case of dumping all cores, so we can break the loop
+ //
+ ContinueDumpingAllCores = FALSE;
+ }
+ }
+ else
+ {
+ ShowErrorMessage(LbrdumpRequest.KernelStatus);
+ break;
+ }
+ }
+ else
+ {
+ ShowMessages("failed to send LBR dump request\n");
+ break;
+ }
+ }
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index d4ad8156..f45afd95 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -580,12 +580,12 @@ ShowErrorMessage(UINT32 Error)
break;
case DEBUGGER_ERROR_LBR_ALREADY_ENABLED:
- ShowMessages("err, LBR is already enabled (%x)\n",
+ ShowMessages("err, LBR is already enabled, you can disable it using the '!lbr' command (%x)\n",
Error);
break;
case DEBUGGER_ERROR_LBR_ALREADY_DISABLED:
- ShowMessages("err, LBR is already disabled (%x)\n",
+ ShowMessages("err, LBR is already disabled, you can enable it using the '!lbr' command (%x)\n",
Error);
break;
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
index e598cb32..1e10e18f 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
@@ -1631,8 +1631,9 @@ InitializeCommandsDictionary()
g_CommandsList["!lbr"] = {&CommandLbr, &CommandLbrHelp, DEBUGGER_COMMAND_LBR_ATTRIBUTES};
- g_CommandsList["!lbrdump"] = {&CommandLbrdump, &CommandLbrdumpHelp, DEBUGGER_COMMAND_LBRDUMP_ATTRIBUTES};
- g_CommandsList["!lbrdmp"] = {&CommandLbrdump, &CommandLbrdumpHelp, DEBUGGER_COMMAND_LBRDUMP_ATTRIBUTES};
+ g_CommandsList["!lbrdump"] = {&CommandLbrdump, &CommandLbrdumpHelp, DEBUGGER_COMMAND_LBRDUMP_ATTRIBUTES};
+ g_CommandsList["!lbrdmp"] = {&CommandLbrdump, &CommandLbrdumpHelp, DEBUGGER_COMMAND_LBRDUMP_ATTRIBUTES};
+ g_CommandsList["!lbrprint"] = {&CommandLbrdump, &CommandLbrdumpHelp, DEBUGGER_COMMAND_LBRDUMP_ATTRIBUTES};
g_CommandsList["!pt"] = {&CommandPt, &CommandPtHelp, DEBUGGER_COMMAND_PT_ATTRIBUTES};
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
index 11b008df..3a934726 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
@@ -1056,28 +1056,28 @@ KdSendSmiPacketsToDebuggee(PSMI_OPERATION_PACKETS SmiOperationRequest, UINT32 Ex
}
/**
- * @brief Send requests for HyperTrace LBR operation packet to the debuggee
+ * @brief Send requests for HyperTrace LBR dump packet to the debuggee
*
- * @param HyperTraceLbrOperationRequest
+ * @param HyperTraceLbrdumpRequest
*
* @return BOOLEAN
*/
BOOLEAN
-KdSendHyperTraceLbrPacketsToDebuggee(PHYPERTRACE_LBR_OPERATION_PACKETS HyperTraceLbrOperationRequest, UINT32 ExpectedRequestSize)
+KdSendHyperTraceLbrdumpPacketsToDebuggee(PHYPERTRACE_LBR_DUMP_PACKETS HyperTraceLbrdumpRequest, UINT32 ExpectedRequestSize)
{
//
// Set the request data
//
- DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_OPERATION_RESULT, HyperTraceLbrOperationRequest, ExpectedRequestSize);
+ DbgWaitSetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_DUMP_RESULT, HyperTraceLbrdumpRequest, ExpectedRequestSize);
//
// Send the LBR request packets
//
if (!KdCommandPacketAndBufferToDebuggee(
DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGER_TO_DEBUGGEE_EXECUTE_ON_VMX_ROOT,
- DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_LBR_OPERATION,
- (CHAR *)HyperTraceLbrOperationRequest,
- SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS))
+ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_PERFORM_HYPERTRACE_LBR_DUMP,
+ (CHAR *)HyperTraceLbrdumpRequest,
+ SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS))
{
return FALSE;
}
@@ -1085,7 +1085,7 @@ KdSendHyperTraceLbrPacketsToDebuggee(PHYPERTRACE_LBR_OPERATION_PACKETS HyperTrac
//
// Wait until the result of actions to HyperTrace LBR is received
//
- DbgWaitForKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_OPERATION_RESULT);
+ DbgWaitForKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_DUMP_RESULT);
return TRUE;
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
index e1821ac3..5293dd19 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
@@ -70,7 +70,7 @@ ListeningSerialPortInDebugger()
PDEBUGGER_SHORT_CIRCUITING_EVENT ShortCircuitingPacket;
PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS PtePacket;
PSMI_OPERATION_PACKETS SmiOperationPacket;
- PHYPERTRACE_LBR_OPERATION_PACKETS HyperTraceLbrOperationPacket;
+ PHYPERTRACE_LBR_DUMP_PACKETS HyperTraceLbrdumpPacket;
PHYPERTRACE_PT_OPERATION_PACKETS HyperTracePtOperationPacket;
PDEBUGGER_PAGE_IN_REQUEST PageinPacket;
PDEBUGGER_VA2PA_AND_PA2VA_COMMANDS Va2paPa2vaPacket;
@@ -1008,24 +1008,24 @@ StartAgain:
break;
- case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_LBR_OPERATION_REQUESTS:
+ case DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_HYPERTRACE_LBR_DUMP_REQUESTS:
- HyperTraceLbrOperationPacket = (HYPERTRACE_LBR_OPERATION_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
+ HyperTraceLbrdumpPacket = (HYPERTRACE_LBR_DUMP_PACKETS *)(((CHAR *)TheActualPacket) + sizeof(DEBUGGER_REMOTE_PACKET));
//
// Get the address and size of the caller
//
- DbgWaitGetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_OPERATION_RESULT, &CallerAddress, &CallerSize);
+ DbgWaitGetKernelRequestData(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_DUMP_RESULT, &CallerAddress, &CallerSize);
//
// Copy the memory buffer for the caller
//
- memcpy(CallerAddress, HyperTraceLbrOperationPacket, CallerSize);
+ memcpy(CallerAddress, HyperTraceLbrdumpPacket, CallerSize);
//
- // Signal the event relating to receiving result of HyperTrace LBR operation
+ // Signal the event relating to receiving result of HyperTrace LBR dump
//
- DbgReceivedKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_OPERATION_RESULT);
+ DbgReceivedKernelResponse(DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_DUMP_RESULT);
break;
diff --git a/hyperdbg/libhyperdbg/code/export/export.cpp b/hyperdbg/libhyperdbg/code/export/export.cpp
index d3382bca..b05a019a 100644
--- a/hyperdbg/libhyperdbg/code/export/export.cpp
+++ b/hyperdbg/libhyperdbg/code/export/export.cpp
@@ -828,3 +828,16 @@ hyperdbg_u_eval_expression(CHAR * Expr, PBOOLEAN HasError)
{
return ScriptEngineEvalSingleExpression(Expr, HasError);
}
+
+/**
+ * @brief Dump LBR stack
+ *
+ * @param LbrdumpRequest The LBR dump request packet
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+hyperdbg_u_lbr_dump(HYPERTRACE_LBR_DUMP_PACKETS * LbrdumpRequest)
+{
+ return HyperDbgLbrdumpSendRequest(LbrdumpRequest);
+}
diff --git a/hyperdbg/libhyperdbg/header/debugger.h b/hyperdbg/libhyperdbg/header/debugger.h
index 77a77ea9..1ecb7113 100644
--- a/hyperdbg/libhyperdbg/header/debugger.h
+++ b/hyperdbg/libhyperdbg/header/debugger.h
@@ -61,7 +61,7 @@
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_PCIDEVINFO_RESULT 0x1d
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_IDT_ENTRIES 0x1e
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_SMI_OPERATION_RESULT 0x1f
-#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_OPERATION_RESULT 0x20
+#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_LBR_DUMP_RESULT 0x20
#define DEBUGGER_SYNCRONIZATION_OBJECT_KERNEL_DEBUGGER_HYPERTRACE_PT_OPERATION_RESULT 0x21
//////////////////////////////////////////////////
@@ -312,3 +312,6 @@ HyperDbgEnableTransparentMode(UINT32 ProcessId, CHAR * ProcessName, BOOLEAN IsPr
BOOLEAN
HyperDbgDisableTransparentMode();
+
+BOOLEAN
+HyperDbgLbrdumpSendRequest(HYPERTRACE_LBR_DUMP_PACKETS * LbrdumpRequest);
diff --git a/hyperdbg/libhyperdbg/header/kd.h b/hyperdbg/libhyperdbg/header/kd.h
index 5c195f00..97f6670f 100644
--- a/hyperdbg/libhyperdbg/header/kd.h
+++ b/hyperdbg/libhyperdbg/header/kd.h
@@ -156,7 +156,7 @@ BOOLEAN
KdSendSmiPacketsToDebuggee(PSMI_OPERATION_PACKETS SmiOperationRequest, UINT32 ExpectedRequestSize);
BOOLEAN
-KdSendHyperTraceLbrPacketsToDebuggee(PHYPERTRACE_LBR_OPERATION_PACKETS HyperTraceLbrOperationRequest, UINT32 ExpectedRequestSize);
+KdSendHyperTraceLbrdumpPacketsToDebuggee(PHYPERTRACE_LBR_DUMP_PACKETS HyperTraceLbrdumpRequest, UINT32 ExpectedRequestSize);
BOOLEAN
KdSendHyperTracePtPacketsToDebuggee(PHYPERTRACE_PT_OPERATION_PACKETS HyperTracePtOperationRequest, UINT32 ExpectedRequestSize);
diff --git a/hyperdbg/script-engine/code/parse-table.c b/hyperdbg/script-engine/code/parse-table.c
index b908d6b2..9a124b1f 100644
--- a/hyperdbg/script-engine/code/parse-table.c
+++ b/hyperdbg/script-engine/code/parse-table.c
@@ -142,6 +142,7 @@ const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
+ {NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "VA"},
{NON_TERMINAL, "VA"},
{NON_TERMINAL, "IF_STATEMENT"},
@@ -247,6 +248,7 @@ const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
{NON_TERMINAL, "ARRAY_DIMS_READ_OPT"},
{NON_TERMINAL, "ARRAY_DIMS_READ_OPT"},
{NON_TERMINAL, "ARRAY_DIMS_READ"},
@@ -374,6 +376,7 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "rdtsc"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSC"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "rdtscp"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSCP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_SAVE"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_DUMP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "lbr_print"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_PRINT"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "spinlock_lock_custom_wait"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@SPINLOCK_LOCK_CUSTOM_WAIT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_inject"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_INJECT"},{SPECIAL_TOKEN, ")"}},
@@ -481,6 +484,7 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "rdtsc"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSC"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "rdtscp"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSCP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_SAVE"},{SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_DUMP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "lbr_print"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_PRINT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "db"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DB"},{SPECIAL_TOKEN, ")"}},
@@ -654,6 +658,7 @@ const unsigned int RhsSize[RULES_COUNT]=
5,
5,
5,
+5,
7,
7,
6,
@@ -761,6 +766,7 @@ const unsigned int RhsSize[RULES_COUNT]=
4,
4,
4,
+4,
5,
5,
5,
@@ -838,262 +844,263 @@ const unsigned int RhsSize[RULES_COUNT]=
};
const char* NoneTerminalMap[NONETERMINAL_COUNT]=
{
-"MULTIPLE_ASSIGNMENT",
-"DO_WHILE_STATEMENT",
-"ARRAY_DIMS",
-"ARRAY_DIMS_WRITE_OPT",
-"ARRAY_DIMS_WRITE",
-"ELSIF_STATEMENT",
-"VA2",
-"S2",
-"ASSIGNMENT_STATEMENT'",
-"StringNumber",
-"MULTIPLE_ASSIGNMENT2",
"END_OF_IF",
-"ARRAY_DIMS_READ_OPT",
-"CALL_FUNC_STATEMENT",
-"WSTRING",
-"STATEMENT2",
-"VARIABLE_TYPE3",
-"BOOLEAN_EXPRESSION",
-"ARRAY_DIMS_READ2",
-"EXPRESSION",
-"ARRAY_DIMS2",
-"WHILE_STATEMENT",
-"E1",
-"INC_DEC'",
-"SIMPLE_ASSIGNMENT",
-"RETURN",
-"E3",
-"E12",
-"ASSIGNMENT_STATEMENT",
-"INIT_LIST",
-"VA",
-"WstringNumber",
-"E3'",
-"VARIABLE_TYPE4",
-"L_VALUE",
-"ARRAY_INIT",
-"VARIABLE_TYPE1",
-"INIT_LIST_CONT",
-"VARIABLE_TYPE2",
-"S",
-"VARIABLE_TYPE6",
-"E5'",
-"STRING",
-"ARRAY_DIMS_READ",
-"STATEMENT",
-"E5",
-"ARRAY_DIMS_WRITE2",
-"ELSIF_STATEMENT'",
-"E1'",
-"E4'",
-"E2",
"INIT_LIST_TAIL",
+"VARIABLE_TYPE6",
+"ARRAY_DIMS_WRITE",
+"ARRAY_DIMS_READ2",
"INIT_ITEM",
+"ELSE_STATEMENT",
+"E3'",
+"ARRAY_DIMS2",
+"MULTIPLE_ASSIGNMENT2",
+"ASSIGNMENT_STATEMENT'",
+"STATEMENT2",
+"EXPRESSION",
+"RETURN",
+"S",
+"ARRAY_DIMS_WRITE2",
"FOR_STATEMENT",
-"CONST_NUMBER",
-"E2'",
-"INC_DEC",
+"ARRAY_DIMS_READ",
+"MULTIPLE_ASSIGNMENT",
+"STATEMENT",
"VA3",
-"E0'",
+"VA2",
+"BOOLEAN_EXPRESSION",
+"E5'",
+"ASSIGNMENT_STATEMENT",
+"VARIABLE_TYPE2",
+"INIT_LIST_CONT",
+"ELSIF_STATEMENT'",
+"CONST_NUMBER",
"IF_STATEMENT",
+"ARRAY_DIMS",
+"STRING",
+"E3",
+"E2",
+"E1'",
+"ARRAY_DIMS_READ_OPT",
+"VARIABLE_TYPE1",
+"E5",
+"INIT_LIST",
+"WSTRING",
+"WHILE_STATEMENT",
"VARIABLE_TYPE5",
+"VA",
+"E12",
+"ELSIF_STATEMENT",
+"SIMPLE_ASSIGNMENT",
+"E1",
+"E2'",
"E4",
-"ELSE_STATEMENT"
+"StringNumber",
+"INC_DEC",
+"VARIABLE_TYPE3",
+"WstringNumber",
+"S2",
+"ARRAY_DIMS_WRITE_OPT",
+"CALL_FUNC_STATEMENT",
+"ARRAY_INIT",
+"DO_WHILE_STATEMENT",
+"E4'",
+"VARIABLE_TYPE4",
+"INC_DEC'",
+"E0'",
+"L_VALUE"
};
const char* TerminalMap[TERMINAL_COUNT]=
{
-"ed_pa",
-"continue",
-"+=",
-"db",
-"low",
-"formats",
-"%",
-"rdtscp",
-"_wstring",
-"printf",
-"_function_parameter_id",
-"_string",
-")",
-"event_sc",
-"_register",
-"memcmp",
-"db_pa",
-"-",
-"^",
-"poi_pa",
-"memcpy",
-"$",
-"strcmp",
-"=",
-"_hex",
-"lbr_print",
-"&",
-",",
-"eb",
-"event_clear",
-"event_trace_instrumentation_step_in",
-"disassemble_len",
-"event_enable",
-"dd_pa",
-"interlocked_exchange_add",
-"_local_id",
-"rdtsc",
-"poi",
-"spinlock_lock",
-"dq",
-"eb_pa",
-"event_trace_instrumentation_step",
-"disassemble_len32",
-"physical_to_virtual",
-"_binary",
-"virtual_to_physical",
-"interlocked_decrement",
-"interlocked_compare_exchange",
-"]",
-"<<",
-"^=",
-"interlocked_increment",
-"eq",
-"--",
-"flush",
-"event_trace_step_out",
-"*",
-"|=",
-"_octal",
-"test_statement",
-"hi_pa",
-"event_disable",
-"wcsncmp",
-"_function_id",
"++",
-"dw_pa",
-"strncmp",
-"_decimal",
-"microsleep",
-"event_trace_step",
-"not",
-"while",
-"pause",
-"|",
-"/=",
-"~",
-"dq_pa",
-">>=",
-">>",
-"print",
-"reference",
+"disassemble_len",
"ed",
-"spinlock_lock_custom_wait",
-"-=",
-"/",
-"}",
-"for",
-"interlocked_exchange",
-"_script_variable_type",
-"check_address",
-"return",
-"wcslen",
-"memcpy_pa",
-"spinlock_unlock",
-"strlen",
-"(",
-"{",
-"event_trace_step_in",
-"<<=",
-"event_inject",
-"&=",
+",",
+"hi_pa",
+"--",
"%=",
-"if",
-"low_pa",
-"else",
-"disassemble_len64",
-"event_inject_error_code",
-"#include",
-"dd",
-"_global_id",
-"[",
-"dw",
-"elsif",
-"*=",
-"+",
-"lbr_save",
-"do",
-"hi",
-"eq_pa",
+"interlocked_exchange",
+"^=",
"wcscmp",
+"event_inject",
+"reference",
+"memcpy",
+"test_statement",
+"dq_pa",
+"event_trace_step_in",
+"else",
+"spinlock_lock_custom_wait",
+"&",
+"while",
+"(",
+"disassemble_len64",
+"virtual_to_physical",
+"ed_pa",
+"_binary",
+"return",
+"db",
+"not",
+"event_enable",
+"interlocked_exchange_add",
+"wcsncmp",
+"_register",
+"+",
+"if",
+"_octal",
+"dd_pa",
+"<<=",
+"+=",
+"eb",
"break",
-";",
+"hi",
+"_hex",
+"poi",
+"printf",
+"formats",
+"rdtsc",
+"disassemble_len32",
+")",
+"^",
+"_string",
+"_wstring",
+"<<",
+"eq",
+"microsleep",
+"print",
+"event_clear",
+"eb_pa",
+"event_trace_instrumentation_step_in",
+"lbr_save",
+"lbr_dump",
+"_global_id",
+"&=",
+"strcmp",
+"|=",
+"-",
+"-=",
+"spinlock_unlock",
+"_decimal",
+"memcmp",
+"*=",
+"_script_variable_type",
+"pause",
+"wcslen",
+"event_sc",
+"]",
+"dw",
+"eq_pa",
+"elsif",
+"do",
+"db_pa",
+"event_inject_error_code",
+"}",
+"$",
+"dq",
+">>=",
+"dw_pa",
+"continue",
+"_function_parameter_id",
+"#include",
+"spinlock_lock",
+"strlen",
+">>",
"_pseudo_register",
-"neg"
+"event_disable",
+"%",
+"lbr_print",
+"for",
+"dd",
+"|",
+"strncmp",
+"~",
+"*",
+"neg",
+"event_trace_step_out",
+"event_trace_instrumentation_step",
+";",
+"[",
+"/=",
+"poi_pa",
+"interlocked_increment",
+"_local_id",
+"low_pa",
+"interlocked_compare_exchange",
+"rdtscp",
+"=",
+"interlocked_decrement",
+"physical_to_virtual",
+"{",
+"_function_id",
+"flush",
+"/",
+"low",
+"memcpy_pa",
+"event_trace_step",
+"check_address"
};
const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]=
{
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,145 ,2147483648 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,145 ,2147483648 ,145 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,145 ,144 ,2147483648 ,2147483648 ,145 ,145 ,145 ,145 ,145 ,145 ,2147483648 ,2147483648 ,145 },
- {269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,268 ,2147483648 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,269 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,2147483648 ,2147483648 ,269 ,269 ,2147483648 ,269 ,269 ,269 ,2147483648 ,2147483648 ,269 ,269 },
- {14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,16 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,15 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 },
- {2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,71 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,2147483648 ,72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,68 ,2147483648 ,70 ,67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,273 ,2147483648 ,2147483648 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,272 ,2147483648 ,272 ,272 ,2147483648 ,272 ,272 ,272 ,272 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,272 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,272 ,2147483648 ,2147483648 ,272 ,272 ,2147483648 ,272 ,272 ,272 ,2147483648 ,2147483648 ,272 ,272 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 },
- {149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 },
- {128 ,2147483648 ,2147483648 ,98 ,104 ,74 ,2147483648 ,92 ,2147483648 ,83 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,133 ,118 ,2147483648 ,2147483648 ,115 ,138 ,2147483648 ,132 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,123 ,77 ,90 ,107 ,75 ,119 ,126 ,2147483648 ,91 ,97 ,79 ,101 ,127 ,89 ,108 ,113 ,2147483648 ,114 ,111 ,130 ,2147483648 ,2147483648 ,2147483648 ,110 ,124 ,2147483648 ,85 ,88 ,2147483648 ,2147483648 ,2147483648 ,78 ,116 ,76 ,140 ,2147483648 ,2147483648 ,120 ,134 ,2147483648 ,82 ,86 ,105 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,73 ,112 ,122 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,106 ,2147483648 ,135 ,139 ,80 ,131 ,2147483648 ,2147483648 ,87 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,109 ,137 ,2147483648 ,99 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,103 ,129 ,136 ,2147483648 ,2147483648 ,2147483648 ,102 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {23 ,25 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,21 ,2147483648 ,2147483648 ,23 ,21 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,21 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,21 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,22 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,18 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,20 ,23 ,26 ,23 ,27 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,17 ,23 ,2147483648 ,23 ,23 ,2147483648 ,23 ,21 ,2147483648 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,19 ,23 ,23 ,23 ,24 ,2147483648 ,2147483648 ,23 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 },
- {176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,176 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,2147483648 ,2147483648 ,176 ,176 ,2147483648 ,176 ,176 ,176 ,2147483648 ,2147483648 ,176 ,176 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,179 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,2147483648 ,2147483648 ,179 ,179 ,2147483648 ,179 ,179 ,179 ,2147483648 ,2147483648 ,179 ,179 },
- {2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,167 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,155 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 },
- {29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,28 ,29 ,29 },
- {185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,185 ,2147483648 ,185 ,185 ,2147483648 ,185 ,185 ,185 ,185 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,185 ,185 ,185 ,2147483648 ,2147483648 ,185 ,185 },
- {233 ,2147483648 ,2147483648 ,203 ,209 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,244 ,238 ,223 ,257 ,2147483648 ,220 ,2147483648 ,2147483648 ,237 ,2147483648 ,255 ,201 ,261 ,2147483648 ,228 ,2147483648 ,2147483648 ,212 ,2147483648 ,224 ,231 ,244 ,198 ,202 ,2147483648 ,206 ,232 ,2147483648 ,213 ,218 ,255 ,219 ,216 ,235 ,2147483648 ,2147483648 ,2147483648 ,215 ,229 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,255 ,2147483648 ,221 ,2147483648 ,242 ,245 ,2147483648 ,225 ,239 ,255 ,2147483648 ,2147483648 ,210 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,226 ,2147483648 ,2147483648 ,2147483648 ,217 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,211 ,2147483648 ,240 ,2147483648 ,2147483648 ,236 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,2147483648 ,214 ,2147483648 ,2147483648 ,204 ,244 ,2147483648 ,205 ,2147483648 ,2147483648 ,258 ,200 ,2147483648 ,208 ,234 ,241 ,2147483648 ,2147483648 ,256 ,207 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,275 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,2147483648 ,274 ,274 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,188 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,47 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,1 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {9 ,11 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,7 ,2147483648 ,2147483648 ,9 ,7 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,7 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,7 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,8 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,4 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,6 ,9 ,12 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,3 ,9 ,2147483648 ,9 ,9 ,13 ,9 ,7 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,5 ,9 ,9 ,9 ,10 ,2147483648 ,2147483648 ,9 },
- {193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 },
- {2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 },
- {182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,182 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,182 ,182 ,182 ,2147483648 ,2147483648 ,182 ,182 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,183 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 },
- {148 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,148 ,2147483648 ,148 ,2147483648 ,2147483648 ,148 ,148 ,147 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,148 ,148 ,148 ,148 ,148 ,148 ,2147483648 ,2147483648 ,148 }
+ {2147483648 ,150 ,150 ,2147483648 ,150 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 },
+ {2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,252 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,252 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,42 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 },
+ {2147483648 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,148 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 },
+ {2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 ,67 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,68 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,72 ,2147483648 ,64 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,23 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,18 ,2147483648 ,23 ,23 ,23 ,2147483648 ,27 ,23 ,23 ,23 ,23 ,23 ,21 ,2147483648 ,17 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,24 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,21 ,2147483648 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,26 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,19 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,25 ,21 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,20 ,23 ,2147483648 ,23 ,2147483648 ,21 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,21 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,22 ,23 ,2147483648 ,23 ,23 ,23 ,23 },
+ {2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,177 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,2147483648 ,177 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,177 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 },
+ {2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 },
+ {2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2 ,2 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,1 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 },
+ {59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,59 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,9 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,4 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,3 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,10 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,12 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,5 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,11 ,7 ,13 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,6 ,9 ,2147483648 ,9 ,2147483648 ,7 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,7 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,8 ,9 ,2147483648 ,9 ,9 ,9 ,9 },
+ {2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,271 ,271 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,271 ,271 ,271 ,271 ,2147483648 ,271 ,271 ,2147483648 ,271 ,271 ,271 ,271 ,2147483648 ,271 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,271 ,271 ,2147483648 ,2147483648 ,271 ,271 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,271 ,271 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,271 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,271 ,271 ,271 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,271 ,271 ,271 ,271 ,271 ,2147483648 ,271 ,271 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,198 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,47 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 },
+ {2147483648 ,147 ,147 ,2147483648 ,147 ,2147483648 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,2147483648 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 },
+ {2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 },
+ {2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,249 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,249 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,194 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,194 ,194 ,194 ,194 ,2147483648 ,194 ,194 ,2147483648 ,194 ,194 ,194 ,194 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,194 ,194 ,2147483648 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,194 ,194 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,194 ,194 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,194 ,194 ,194 ,194 ,194 ,2147483648 ,194 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 },
+ {2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,214 ,229 ,2147483648 ,223 ,2147483648 ,2147483648 ,232 ,2147483648 ,243 ,2147483648 ,219 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,245 ,216 ,221 ,235 ,257 ,2147483648 ,205 ,212 ,2147483648 ,233 ,244 ,246 ,260 ,2147483648 ,257 ,226 ,2147483648 ,2147483648 ,230 ,2147483648 ,210 ,257 ,204 ,2147483648 ,2147483648 ,199 ,215 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,201 ,202 ,246 ,2147483648 ,239 ,2147483648 ,259 ,2147483648 ,2147483648 ,257 ,240 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,207 ,236 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,208 ,2147483648 ,227 ,2147483648 ,246 ,2147483648 ,2147483648 ,238 ,2147483648 ,258 ,2147483648 ,2147483648 ,203 ,2147483648 ,206 ,2147483648 ,241 ,261 ,262 ,209 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,217 ,246 ,224 ,237 ,200 ,2147483648 ,218 ,220 ,2147483648 ,247 ,2147483648 ,2147483648 ,211 ,2147483648 ,2147483648 ,213 },
+ {2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,145 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 },
+ {2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,190 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 },
+ {2147483648 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,276 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,276 ,276 ,276 ,276 ,2147483648 ,276 ,276 ,2147483648 ,276 ,276 ,276 ,276 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,276 ,276 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,276 ,276 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,276 ,276 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,276 ,276 ,276 ,276 ,276 ,2147483648 ,276 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 },
+ {2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,16 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,15 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 },
+ {56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,56 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,108 ,123 ,2147483648 ,117 ,2147483648 ,2147483648 ,126 ,2147483648 ,137 ,97 ,113 ,139 ,78 ,122 ,87 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,110 ,115 ,129 ,2147483648 ,2147483648 ,99 ,106 ,75 ,127 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,124 ,2147483648 ,104 ,2147483648 ,98 ,83 ,74 ,91 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,82 ,73 ,77 ,128 ,90 ,93 ,94 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,134 ,2147483648 ,2147483648 ,84 ,136 ,81 ,2147483648 ,101 ,130 ,2147483648 ,2147483648 ,119 ,138 ,2147483648 ,2147483648 ,102 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,79 ,132 ,2147483648 ,2147483648 ,76 ,2147483648 ,95 ,2147483648 ,100 ,2147483648 ,135 ,2147483648 ,2147483648 ,103 ,88 ,89 ,2147483648 ,2147483648 ,2147483648 ,116 ,111 ,2147483648 ,118 ,131 ,92 ,2147483648 ,112 ,114 ,2147483648 ,2147483648 ,85 ,2147483648 ,105 ,140 ,86 ,107 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,165 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,170 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
};
const char* KeywordList[]= {
"print",
@@ -1117,6 +1124,7 @@ const char* KeywordList[]= {
"rdtsc",
"rdtscp",
"lbr_save",
+"lbr_dump",
"lbr_print",
"spinlock_lock_custom_wait",
"event_inject",
@@ -1167,6 +1175,7 @@ const char* KeywordList[]= {
"rdtsc",
"rdtscp",
"lbr_save",
+"lbr_dump",
"lbr_print",
"poi",
"db",
@@ -1338,6 +1347,7 @@ const char* ZeroOpFunc2[] = {
"@RDTSC",
"@RDTSCP",
"@LBR_SAVE",
+"@LBR_DUMP",
"@LBR_PRINT",
};
const char* VarArgFunc1[] = {
@@ -1400,6 +1410,7 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@RDTSC", FUNC_RDTSC},
{"@RDTSCP", FUNC_RDTSCP},
{"@LBR_SAVE", FUNC_LBR_SAVE},
+{"@LBR_DUMP", FUNC_LBR_DUMP},
{"@LBR_PRINT", FUNC_LBR_PRINT},
{"@SPINLOCK_LOCK_CUSTOM_WAIT", FUNC_SPINLOCK_LOCK_CUSTOM_WAIT},
{"@EVENT_INJECT", FUNC_EVENT_INJECT},
@@ -1450,6 +1461,7 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@RDTSC", FUNC_RDTSC},
{"@RDTSCP", FUNC_RDTSCP},
{"@LBR_SAVE", FUNC_LBR_SAVE},
+{"@LBR_DUMP", FUNC_LBR_DUMP},
{"@LBR_PRINT", FUNC_LBR_PRINT},
{"@POI", FUNC_POI},
{"@DB", FUNC_DB},
@@ -1752,6 +1764,7 @@ const struct _SCRIPT_ENGINE_TOKEN LalrLhs[RULES_COUNT]=
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
{NON_TERMINAL, "E13"},
{NON_TERMINAL, "VA2"},
{NON_TERMINAL, "VA2"},
@@ -1824,6 +1837,7 @@ const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "disassemble_len32"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN32"}},
{{KEYWORD, "disassemble_len64"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN64"}},
{{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_SAVE"}},
+ {{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_DUMP"}},
{{KEYWORD, "lbr_print"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_PRINT"}},
{{KEYWORD, "interlocked_increment"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"}},
{{KEYWORD, "interlocked_decrement"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"}},
@@ -1951,6 +1965,7 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
5,
5,
5,
+5,
7,
7,
7,
@@ -1999,119 +2014,120 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
};
const char* LalrNoneTerminalMap[NONETERMINAL_COUNT]=
{
-"B1",
-"CMP",
-"E13",
-"B5",
-"VA2",
-"BE",
-"StringNumber",
-"B4",
-"WSTRING",
-"ARRAY1",
-"E3",
-"E12",
-"WstringNumber",
-"B2",
-"S",
-"STRING",
-"ARRAY2",
-"E5",
-"ARRAY3",
"B6",
"E10",
-"ARRAY4",
-"EXP",
+"ARRAY2",
+"S",
"VA3",
+"EXP",
+"VA2",
+"ARRAY3",
+"B2",
+"STRING",
+"ARRAY4",
+"E3",
+"BE",
"B3",
-"E4"
+"B4",
+"E5",
+"WSTRING",
+"E12",
+"CMP",
+"E4",
+"ARRAY1",
+"StringNumber",
+"WstringNumber",
+"E13",
+"B1",
+"B5"
};
const char* LalrTerminalMap[TERMINAL_COUNT]=
{
-"ed_pa",
-"db",
-"low",
-"%",
-"!=",
-"<",
-"_wstring",
-"_function_parameter_id",
-"_string",
-")",
-"_register",
-"memcmp",
-"db_pa",
-"-",
-"^",
-"poi_pa",
-"$",
-"strcmp",
-"_hex",
-"lbr_print",
-"&",
-",",
-"eb",
"disassemble_len",
-"dd_pa",
-"interlocked_exchange_add",
-"_local_id",
-"||",
-"poi",
-"dq",
-"eb_pa",
-"<=",
-"disassemble_len32",
-"physical_to_virtual",
-"_binary",
-"virtual_to_physical",
-"interlocked_decrement",
-"interlocked_compare_exchange",
-"]",
-">",
-"<<",
-"interlocked_increment",
-"eq",
-"*",
-"_octal",
-"hi_pa",
-"&&",
-"wcsncmp",
-"_function_id",
-"dw_pa",
-"strncmp",
-"_decimal",
-"not",
-"|",
-"~",
-"==",
-"dq_pa",
-">>",
-"reference",
"ed",
-"/",
+"hi_pa",
+",",
"interlocked_exchange",
-"check_address",
-"wcslen",
-"strlen",
-"(",
-"low_pa",
-">=",
-"disassemble_len64",
-"_global_id",
-"dd",
-"[",
-"dw",
-"+",
-"lbr_save",
-"hi",
-"eq_pa",
"wcscmp",
+"reference",
+"dq_pa",
+"&",
+"(",
+"disassemble_len64",
+"virtual_to_physical",
+"ed_pa",
+"_binary",
+"db",
+"not",
+"interlocked_exchange_add",
+"wcsncmp",
+"_register",
+"+",
+"_octal",
+"dd_pa",
+"eb",
+"hi",
+"_hex",
+"<=",
+"poi",
+"disassemble_len32",
+")",
+"^",
+"_string",
+"_wstring",
+"<<",
+"eq",
+"eb_pa",
+"lbr_dump",
+"lbr_save",
+"_global_id",
+"strcmp",
+"-",
+"_decimal",
+"memcmp",
+"wcslen",
+"||",
+"dw",
+"]",
+"eq_pa",
+">=",
+"db_pa",
+"$",
+"dq",
+"dw_pa",
+"_function_parameter_id",
+"strlen",
+">>",
"_pseudo_register",
-"neg"
+"%",
+"lbr_print",
+"dd",
+"|",
+"strncmp",
+"~",
+"*",
+"neg",
+">",
+"[",
+"poi_pa",
+"<",
+"&&",
+"interlocked_increment",
+"_local_id",
+"low_pa",
+"==",
+"interlocked_compare_exchange",
+"interlocked_decrement",
+"physical_to_virtual",
+"_function_id",
+"!=",
+"/",
+"low",
+"check_address"
};
const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{
- {3 ,9 ,16 ,7 ,2147483648 ,2 ,2147483648 ,6 ,2147483648 ,17 ,11 ,15 ,2147483648 ,4 ,1 ,2147483648 ,18 ,13 ,2147483648 ,8 ,14 ,2147483648 ,10 ,2147483648 ,5 ,12 },
+ {8 ,14 ,18 ,1 ,2147483648 ,10 ,2147483648 ,2147483648 ,4 ,2147483648 ,2147483648 ,11 ,2 ,5 ,6 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,3 ,7 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2129,7 +2145,7 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2137,16 +2153,14 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {3 ,9 ,16 ,7 ,2147483648 ,111 ,2147483648 ,6 ,2147483648 ,17 ,11 ,15 ,2147483648 ,4 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,8 ,14 ,2147483648 ,10 ,2147483648 ,5 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2154,11 +2168,10 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2174,14 +2187,17 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {8 ,14 ,18 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,4 ,2147483648 ,2147483648 ,11 ,134 ,5 ,6 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,3 ,7 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2189,77 +2205,78 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,9 ,16 ,7 ,2147483648 ,2147483648 ,2147483648 ,6 ,2147483648 ,17 ,11 ,15 ,2147483648 ,148 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,8 ,14 ,2147483648 ,10 ,2147483648 ,5 ,12 },
- {2147483648 ,9 ,16 ,7 ,2147483648 ,2147483648 ,2147483648 ,6 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,8 ,14 ,2147483648 ,10 ,2147483648 ,149 ,12 },
- {2147483648 ,9 ,16 ,7 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,8 ,14 ,2147483648 ,10 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,9 ,16 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,8 ,14 ,2147483648 ,10 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,9 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,152 ,14 ,2147483648 ,10 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,153 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,154 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,155 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,156 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,157 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,158 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,161 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,162 ,2147483648 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,166 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,170 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,171 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,172 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,173 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,177 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,178 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,179 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,180 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,181 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,182 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,17 ,11 ,15 ,185 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,183 ,2147483648 ,2147483648 ,12 },
+ {8 ,14 ,18 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,11 ,2147483648 ,5 ,6 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,7 },
+ {8 ,14 ,18 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,151 ,6 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,7 },
+ {8 ,14 ,18 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,152 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,7 },
+ {8 ,14 ,18 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,153 },
+ {154 ,14 ,18 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,161 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,162 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,15 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,15 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,165 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,166 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,167 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,168 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,176 ,15 ,2147483648 ,12 ,17 ,2147483648 ,177 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,187 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,188 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,189 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,190 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,191 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,173 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,193 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,173 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,195 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,196 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,176 ,15 ,2147483648 ,12 ,17 ,2147483648 ,196 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,200 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,202 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,203 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,204 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,205 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,206 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,207 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,209 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,210 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,211 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,214 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,215 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,197 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,199 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,200 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,201 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,202 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,203 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,204 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,205 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,206 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,207 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,208 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,209 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,210 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,211 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,212 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,216 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,217 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,213 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,214 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,215 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,216 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,217 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,218 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,17 ,11 ,15 ,220 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,219 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,17 ,11 ,15 ,222 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,221 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,223 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,219 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,176 ,15 ,2147483648 ,12 ,17 ,2147483648 ,221 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,223 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2277,10 +2294,10 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2336,60 +2353,60 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,275 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,173 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,277 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,280 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,176 ,15 ,2147483648 ,12 ,17 ,2147483648 ,281 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,278 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,282 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,17 ,11 ,15 ,279 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,183 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,280 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,173 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,282 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,174 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,173 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,283 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,284 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,285 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,286 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,287 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,286 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,287 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,288 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,289 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,290 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,289 ,2147483648 ,2147483648 ,12 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,17 ,11 ,15 ,290 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,183 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,292 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,176 ,15 ,2147483648 ,12 ,17 ,2147483648 ,294 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2403,19 +2420,22 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,307 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,308 ,2147483648 ,2147483648 ,12 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,309 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,311 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,312 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,11 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,13 ,2147483648 ,2147483648 ,14 ,2147483648 ,310 ,2147483648 ,2147483648 ,12 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,313 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,314 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2429,321 +2449,325 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
};
const int LalrActionTable[LALR_STATE_COUNT][LALR_TERMINAL_COUNT]=
{
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,85 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,92 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,93 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,2147483648 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,2147483648 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,2147483648 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,2147483648 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,2147483648 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,2147483648 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,2147483648 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,2147483648 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,2147483648 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,2147483648 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,2147483648 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,2147483648 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,2147483648 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,2147483648 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,2147483648 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,2147483648 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,2147483648 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,2147483648 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,2147483648 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,2147483648 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,-97 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,186 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,186 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,186 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,92 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,92 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,93 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,93 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,186 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,176 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,186 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,299 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,300 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,301 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,302 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {53 ,66 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,40 ,42 ,30 ,47 ,2147483648 ,20 ,2147483648 ,39 ,22 ,63 ,26 ,2147483648 ,59 ,31 ,64 ,25 ,69 ,2147483648 ,60 ,71 ,44 ,2147483648 ,35 ,49 ,23 ,72 ,27 ,62 ,2147483648 ,2147483648 ,2147483648 ,41 ,61 ,65 ,45 ,54 ,2147483648 ,32 ,77 ,52 ,24 ,56 ,21 ,2147483648 ,46 ,2147483648 ,36 ,2147483648 ,28 ,43 ,2147483648 ,29 ,37 ,75 ,48 ,34 ,67 ,2147483648 ,57 ,19 ,58 ,2147483648 ,68 ,33 ,50 ,73 ,38 ,74 ,55 ,51 },
- {2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,311 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,312 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,313 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,314 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,-13 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,87 ,2147483648 ,2147483648 ,84 ,-13 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,96 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,95 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,94 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-109 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,2147483648 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,2147483648 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,2147483648 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,2147483648 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,2147483648 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,2147483648 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,2147483648 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,2147483648 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,2147483648 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,2147483648 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,2147483648 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,2147483648 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,2147483648 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,2147483648 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,2147483648 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,-112 ,-112 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,-112 ,2147483648 ,-112 ,99 ,2147483648 ,-112 ,-112 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,-112 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,213 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,96 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,95 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,94 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,96 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,95 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,94 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,-112 ,-112 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,-112 ,2147483648 ,-112 ,99 ,2147483648 ,-112 ,-112 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,-112 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,278 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,-96 ,-96 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,-96 ,2147483648 ,-96 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,-96 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,-96 ,2147483648 ,-96 ,2147483648 ,2147483648 ,-96 ,-96 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,-96 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,-110 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,299 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,300 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,301 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,302 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,307 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,308 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,309 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,310 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 },
+ {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
+ {2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,315 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,316 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,317 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,318 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 }
};
const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{
@@ -2800,6 +2824,7 @@ const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{SEMANTIC_RULE, "@DISASSEMBLE_LEN32"},
{SEMANTIC_RULE, "@DISASSEMBLE_LEN64"},
{SEMANTIC_RULE, "@LBR_SAVE"},
+ {SEMANTIC_RULE, "@LBR_DUMP"},
{SEMANTIC_RULE, "@LBR_PRINT"},
{SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"},
{SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"},
diff --git a/hyperdbg/script-engine/header/parse-table.h b/hyperdbg/script-engine/header/parse-table.h
index 66a2ecfe..1767b1c8 100644
--- a/hyperdbg/script-engine/header/parse-table.h
+++ b/hyperdbg/script-engine/header/parse-table.h
@@ -1,19 +1,19 @@
#pragma once
#ifndef PARSE_TABLE_H
#define PARSE_TABLE_H
-#define RULES_COUNT 276
-#define TERMINAL_COUNT 124
+#define RULES_COUNT 278
+#define TERMINAL_COUNT 125
#define NONETERMINAL_COUNT 63
#define START_VARIABLE "S"
#define MAX_RHS_LEN 15
-#define KEYWORD_LIST_LENGTH 113
+#define KEYWORD_LIST_LENGTH 115
#define OPERATORS_ONE_OPERAND_LIST_LENGTH 3
#define OPERATORS_TWO_OPERAND_LIST_LENGTH 16
#define REGISTER_MAP_LIST_LENGTH 120
#define PSEUDO_REGISTER_MAP_LIST_LENGTH 16
#define SCRIPT_VARIABLE_TYPE_LIST_LENGTH 10
#define ASSIGNMENT_OPERATOR_LIST_LENGTH 10
-#define SEMANTIC_RULES_MAP_LIST_LENGTH 158
+#define SEMANTIC_RULES_MAP_LIST_LENGTH 160
#define THREEOPFUNC1_LENGTH 1
#define THREEOPFUNC2_LENGTH 3
#define TWOOPFUNC1_LENGTH 8
@@ -27,7 +27,7 @@
#define ONEOPFUNC4_LENGTH 1
#define TWOOPFUNC4_LENGTH 1
#define ZEROOPFUNC1_LENGTH 7
-#define ZEROOPFUNC2_LENGTH 4
+#define ZEROOPFUNC2_LENGTH 5
#define VARARGFUNC1_LENGTH 1
extern const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT];
extern const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN];
@@ -60,11 +60,11 @@ extern const SYMBOL_MAP PseudoRegisterMapList[];
extern const char* ScriptVariableTypeList[];
-#define LALR_RULES_COUNT 111
-#define LALR_TERMINAL_COUNT 80
+#define LALR_RULES_COUNT 112
+#define LALR_TERMINAL_COUNT 81
#define LALR_NONTERMINAL_COUNT 26
#define LALR_MAX_RHS_LEN 9
-#define LALR_STATE_COUNT 315
+#define LALR_STATE_COUNT 319
extern const struct _SCRIPT_ENGINE_TOKEN LalrLhs[RULES_COUNT];
extern const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN];
extern const unsigned int LalrRhsSize[RULES_COUNT];
diff --git a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
index 197bd931..ae25c1ea 100644
--- a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
+++ b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
@@ -1,5 +1,5 @@
# OneOpFunc1 input is a number and returns a number.
-.OneOpFunc1->poi db dd dw dq neg hi low not check_address strlen wcslen disassemble_len disassemble_len32 disassemble_len64 lbr_save lbr_print interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa
+.OneOpFunc1->poi db dd dw dq neg hi low not check_address strlen wcslen disassemble_len disassemble_len32 disassemble_len64 lbr_save lbr_dump lbr_print interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa
# TwoOpFunc1 inputs are two numbers and returns a number.
.TwoOpFunc1->ed eb eq interlocked_exchange interlocked_exchange_add wcscmp eb_pa ed_pa eq_pa
diff --git a/hyperdbg/script-engine/python/Grammar.txt b/hyperdbg/script-engine/python/Grammar.txt
index 3f27546b..8420e68d 100644
--- a/hyperdbg/script-engine/python/Grammar.txt
+++ b/hyperdbg/script-engine/python/Grammar.txt
@@ -38,7 +38,7 @@
.ZeroOpFunc1->pause flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in
# ZeroOpFunc2 no input and returns a number
-.ZeroOpFunc2->rdtsc rdtscp lbr_save lbr_print
+.ZeroOpFunc2->rdtsc rdtscp lbr_save lbr_dump lbr_print
.VarArgFunc1->printf
diff --git a/hyperdbg/script-eval/code/ScriptEngineEval.c b/hyperdbg/script-eval/code/ScriptEngineEval.c
index 3b987490..c228b908 100644
--- a/hyperdbg/script-eval/code/ScriptEngineEval.c
+++ b/hyperdbg/script-eval/code/ScriptEngineEval.c
@@ -748,6 +748,7 @@ ScriptEngineExecute(PGUEST_REGS GuestRegs,
break;
case FUNC_LBR_PRINT:
+ case FUNC_LBR_DUMP:
Des = (PSYMBOL)((unsigned long long)CodeBuffer->Head +
(unsigned long long)(*Indx * sizeof(SYMBOL)));
From e816b93c46c6f270c6ee02ec44683153e5068f4e Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 4 May 2026 14:23:53 +0200
Subject: [PATCH 163/323] add missing LBR VMCALL
---
hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c | 12 +++++++++++-
hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h | 3 +--
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
index b9e11f31..88f6d560 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c
@@ -574,6 +574,16 @@ VmxVmcallHandler(VIRTUAL_MACHINE_STATE * VCpu,
VmcallStatus = STATUS_SUCCESS;
break;
}
+ case VMCALL_SET_GUEST_IA32_LBR_CTL:
+ {
+ //
+ // Perform setting guest IA32_LBR_CTL on VMCS
+ //
+ HvSetGuestIa32LbrCtl(OptionalParam1);
+
+ VmcallStatus = STATUS_SUCCESS;
+ break;
+ }
case VMCALL_SET_VM_ENTRY_LOAD_GUEST_IA32_LBR_CTL:
{
HvSetLoadGuestIa32LbrCtl(VCpu, TRUE);
@@ -600,7 +610,7 @@ VmxVmcallHandler(VIRTUAL_MACHINE_STATE * VCpu,
}
default:
{
- LogError("Err, unsupported VMCALL");
+ LogError("Err, unsupported VMCALL (%llx)", VmcallNumber);
VmcallStatus = STATUS_UNSUCCESSFUL;
break;
}
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h b/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
index 06d9a89d..33001dc2 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h
@@ -161,8 +161,7 @@
/**
* @brief VMCALL to reset exception bitmap on VMCS
- * @details THIS VMCALL SHOULD BE USED ONLY IN
- * RESETTING (CLEARING) EXCEPTION EVENTS
+ * @details THIS VMCALL SHOULD BE USED ONLY IN RESETTING (CLEARING) EXCEPTION EVENTS
*
*/
#define VMCALL_RESET_EXCEPTION_BITMAP_ONLY_ON_CLEARING_EXCEPTION_EVENTS 0x00000019
From de0c56b466ffe6c29f1f769e97b7d7daff309a7a Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 5 May 2026 21:25:20 +0200
Subject: [PATCH 164/323] create platform independent intrinsics functions
---
hyperdbg/hyperdbg.sln | 2 +
hyperdbg/hyperevade/code/Transparency.c | 6 +-
hyperdbg/hyperevade/header/pch.h | 1 +
hyperdbg/hyperevade/hyperevade.vcxproj | 2 +
.../hyperevade/hyperevade.vcxproj.filters | 6 +
hyperdbg/hyperhv/code/common/Common.c | 4 +-
.../components/registers/DebugRegisters.c | 12 +-
hyperdbg/hyperhv/code/devices/Apic.c | 8 +-
.../code/hooks/syscall-hook/EferHook.c | 30 +-
.../code/hooks/syscall-hook/SyscallCallback.c | 6 +-
hyperdbg/hyperhv/code/memory/AddressCheck.c | 8 +-
hyperdbg/hyperhv/code/memory/MemoryMapper.c | 24 +-
hyperdbg/hyperhv/code/memory/Segmentation.c | 4 +-
hyperdbg/hyperhv/code/memory/SwitchLayout.c | 16 +-
hyperdbg/hyperhv/code/processor/Idt.c | 4 +-
hyperdbg/hyperhv/code/processor/Smm.c | 10 +-
hyperdbg/hyperhv/code/vmm/ept/Ept.c | 32 +-
hyperdbg/hyperhv/code/vmm/vmx/Counters.c | 6 +-
hyperdbg/hyperhv/code/vmm/vmx/Events.c | 6 +-
hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 44 +-
hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c | 6 +-
hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c | 34 +-
hyperdbg/hyperhv/code/vmm/vmx/MsrHandlers.c | 6 +-
hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c | 6 +-
hyperdbg/hyperhv/code/vmm/vmx/Vmx.c | 124 ++--
hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c | 8 +-
hyperdbg/hyperhv/header/vmm/vmx/IoHandler.h | 72 +-
hyperdbg/hyperhv/hyperhv.vcxproj | 2 +
hyperdbg/hyperhv/hyperhv.vcxproj.filters | 6 +
hyperdbg/hyperhv/pch.h | 1 +
.../code/debugger/broadcast/DpcRoutines.c | 10 +-
.../hyperkd/code/debugger/kernel-level/Kd.c | 4 +-
.../hyperkd/code/debugger/objects/Thread.c | 4 +-
hyperdbg/hyperkd/header/pch.h | 1 +
hyperdbg/hyperkd/hyperkd.vcxproj | 2 +
hyperdbg/hyperkd/hyperkd.vcxproj.filters | 6 +
hyperdbg/hyperlog/header/pch.h | 1 +
hyperdbg/hypertrace/code/api/LbrApi.c | 6 +-
hyperdbg/hypertrace/header/api/TraceApi.h | 8 +-
hyperdbg/hypertrace/header/pch.h | 1 +
hyperdbg/hypertrace/hypertrace.vcxproj | 2 +
.../hypertrace/hypertrace.vcxproj.filters | 6 +
.../platform/kernel/code/PlatformIntrinsics.c | 676 ++++++++++++++++++
.../kernel/code/PlatformIntrinsicsVmx.c | 2 +-
.../kernel/header/PlatformIntrinsics.h | 292 ++++++++
.../kernel/header/PlatformIntrinsicsVmx.h | 3 +-
.../commands/debugging-commands/dt-struct.cpp | 4 +-
hyperdbg/libhyperdbg/code/export/export.cpp | 6 +-
hyperdbg/linux/mock/kernel/pch.h | 1 +
49 files changed, 1245 insertions(+), 286 deletions(-)
create mode 100644 hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
create mode 100644 hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 824ce779..204dbf54 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -148,6 +148,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "kernel", "kernel", "{D0E5A2
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{6498728B-D9B0-4CAB-A9E3-ACE5BC371010}"
ProjectSection(SolutionItems) = preProject
+ include\platform\kernel\code\PlatformIntrinsics.c = include\platform\kernel\code\PlatformIntrinsics.c
include\platform\kernel\code\PlatformIntrinsicsVmx.c = include\platform\kernel\code\PlatformIntrinsicsVmx.c
include\platform\kernel\code\PlatformMem.c = include\platform\kernel\code\PlatformMem.c
EndProjectSection
@@ -155,6 +156,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{AA41FFF1-A730-433E-8D26-13DA5B653825}"
ProjectSection(SolutionItems) = preProject
include\platform\kernel\header\pch.h = include\platform\kernel\header\pch.h
+ include\platform\kernel\header\PlatformIntrinsics.h = include\platform\kernel\header\PlatformIntrinsics.h
include\platform\kernel\header\PlatformIntrinsicsVmx.h = include\platform\kernel\header\PlatformIntrinsicsVmx.h
include\platform\kernel\header\PlatformMem.h = include\platform\kernel\header\PlatformMem.h
include\platform\kernel\header\PlatformModuleInfo.h = include\platform\kernel\header\PlatformModuleInfo.h
diff --git a/hyperdbg/hyperevade/code/Transparency.c b/hyperdbg/hyperevade/code/Transparency.c
index 22cfb044..d3eb3eb2 100644
--- a/hyperdbg/hyperevade/code/Transparency.c
+++ b/hyperdbg/hyperevade/code/Transparency.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Transparency.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Try to hide the debugger from anti-debugging and anti-hypervisor methods
@@ -115,7 +115,7 @@ TransparentGetRand()
UINT64 Tsc;
UINT32 Rand;
- Tsc = __rdtsc();
+ Tsc = CpuReadTsc();
Rand = Tsc & 0xffff;
return Rand;
@@ -599,7 +599,7 @@ TransparentAddNameOrProcessIdToTheList(PDEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_M
// //
// // Save the current time
// //
-// CurrrentTime = __rdtscp(&Aux);
+// CurrrentTime = CpuReadTscp(&Aux);
//
// //
// // Save time of vm-exit on each logical processor separately
diff --git a/hyperdbg/hyperevade/header/pch.h b/hyperdbg/hyperevade/header/pch.h
index f59c2acd..c0144bb0 100644
--- a/hyperdbg/hyperevade/header/pch.h
+++ b/hyperdbg/hyperevade/header/pch.h
@@ -75,6 +75,7 @@
// Platform independent headers
//
#include "platform/kernel/header/PlatformMem.h"
+#include "platform/kernel/header/PlatformIntrinsics.h"
//
// Hyperevade Callbacks
diff --git a/hyperdbg/hyperevade/hyperevade.vcxproj b/hyperdbg/hyperevade/hyperevade.vcxproj
index 933b9b39..6599c703 100644
--- a/hyperdbg/hyperevade/hyperevade.vcxproj
+++ b/hyperdbg/hyperevade/hyperevade.vcxproj
@@ -106,6 +106,7 @@
+
@@ -114,6 +115,7 @@
+
diff --git a/hyperdbg/hyperevade/hyperevade.vcxproj.filters b/hyperdbg/hyperevade/hyperevade.vcxproj.filters
index 3201aded..be4630b9 100644
--- a/hyperdbg/hyperevade/hyperevade.vcxproj.filters
+++ b/hyperdbg/hyperevade/hyperevade.vcxproj.filters
@@ -69,6 +69,9 @@
code
+
+ code\platform
+
@@ -89,5 +92,8 @@
header
+
+ header\platform
+
\ No newline at end of file
diff --git a/hyperdbg/hyperhv/code/common/Common.c b/hyperdbg/hyperhv/code/common/Common.c
index 0619b09b..e2a31b07 100644
--- a/hyperdbg/hyperhv/code/common/Common.c
+++ b/hyperdbg/hyperhv/code/common/Common.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Common.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Common functions that needs to be used in all source code files
@@ -84,7 +84,7 @@ CommonIsStringStartsWith(const char * pre, const char * str)
VOID
CommonCpuidInstruction(UINT32 Func, UINT32 SubFunc, int * CpuInfo)
{
- __cpuidex(CpuInfo, Func, SubFunc);
+ CpuCpuIdEx(CpuInfo, Func, SubFunc);
}
/**
diff --git a/hyperdbg/hyperhv/code/components/registers/DebugRegisters.c b/hyperdbg/hyperhv/code/components/registers/DebugRegisters.c
index d6fdd864..85f7b45a 100644
--- a/hyperdbg/hyperhv/code/components/registers/DebugRegisters.c
+++ b/hyperdbg/hyperhv/code/components/registers/DebugRegisters.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file DebugRegisters.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Implementation of debug registers functions
@@ -77,7 +77,7 @@ SetDebugRegisters(UINT32 DebugRegNum, DEBUG_REGISTER_TYPE ActionType, BOOLEAN Ap
//
if (DebugRegNum == 0)
{
- __writedr(0, TargetAddress);
+ CpuWriteDr(0, TargetAddress);
Dr7.GlobalBreakpoint0 = 1;
@@ -119,7 +119,7 @@ SetDebugRegisters(UINT32 DebugRegNum, DEBUG_REGISTER_TYPE ActionType, BOOLEAN Ap
}
else if (DebugRegNum == 1)
{
- __writedr(1, TargetAddress);
+ CpuWriteDr(1, TargetAddress);
Dr7.GlobalBreakpoint1 = 1;
//
@@ -160,7 +160,7 @@ SetDebugRegisters(UINT32 DebugRegNum, DEBUG_REGISTER_TYPE ActionType, BOOLEAN Ap
}
else if (DebugRegNum == 2)
{
- __writedr(2, TargetAddress);
+ CpuWriteDr(2, TargetAddress);
Dr7.GlobalBreakpoint2 = 1;
//
@@ -201,7 +201,7 @@ SetDebugRegisters(UINT32 DebugRegNum, DEBUG_REGISTER_TYPE ActionType, BOOLEAN Ap
}
else if (DebugRegNum == 3)
{
- __writedr(3, TargetAddress);
+ CpuWriteDr(3, TargetAddress);
Dr7.GlobalBreakpoint3 = 1;
//
@@ -252,7 +252,7 @@ SetDebugRegisters(UINT32 DebugRegNum, DEBUG_REGISTER_TYPE ActionType, BOOLEAN Ap
}
else
{
- __writedr(7, Dr7.AsUInt);
+ CpuWriteDr(7, Dr7.AsUInt);
}
return TRUE;
diff --git a/hyperdbg/hyperhv/code/devices/Apic.c b/hyperdbg/hyperhv/code/devices/Apic.c
index 744349eb..117f2d27 100644
--- a/hyperdbg/hyperhv/code/devices/Apic.c
+++ b/hyperdbg/hyperhv/code/devices/Apic.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Apic.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Routines for Advanced Programmable Interrupt Controller (APIC)
@@ -149,7 +149,7 @@ XApicIcrWrite(UINT32 Low, UINT32 High)
VOID
X2ApicIcrWrite(UINT32 Low, UINT32 High)
{
- __writemsr(X2_MSR_BASE + TO_X2(ICROffset), ((UINT64)High << 32) | Low);
+ CpuWriteMsr(X2_MSR_BASE + TO_X2(ICROffset), ((UINT64)High << 32) | Low);
}
/**
@@ -161,7 +161,7 @@ X2ApicIcrWrite(UINT32 Low, UINT32 High)
UINT64
X2ApicRead(UINT32 Offset)
{
- return __readmsr(X2_MSR_BASE + TO_X2(Offset));
+ return CpuReadMsr(X2_MSR_BASE + TO_X2(Offset));
}
/**
@@ -369,7 +369,7 @@ ApicInitialize()
PHYSICAL_ADDRESS PaApicBase;
PHYSICAL_ADDRESS PaIoApicBase;
- ApicBaseMSR = __readmsr(IA32_APIC_BASE);
+ ApicBaseMSR = CpuReadMsr(IA32_APIC_BASE);
if (!(ApicBaseMSR & (1 << 11)))
{
diff --git a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
index 16495d2c..2a3d0bec 100644
--- a/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
+++ b/hyperdbg/hyperhv/code/hooks/syscall-hook/EferHook.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file EferHook.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Implementation of the functions related to the EFER Syscall Hook
@@ -38,7 +38,7 @@ SyscallHookConfigureEFER(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN EnableEFERSyscall
//
// Reading IA32_VMX_BASIC_MSR
//
- VmxBasicMsr.AsUInt = __readmsr(IA32_VMX_BASIC);
+ VmxBasicMsr.AsUInt = CpuReadMsr(IA32_VMX_BASIC);
//
// Read previous VM-Entry and VM-Exit controls
@@ -46,7 +46,7 @@ SyscallHookConfigureEFER(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN EnableEFERSyscall
VmxVmread32P(VMCS_CTRL_VMENTRY_CONTROLS, &VmEntryControls);
VmxVmread32P(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, &VmExitControls);
- MsrValue.AsUInt = __readmsr(IA32_EFER);
+ MsrValue.AsUInt = CpuReadMsr(IA32_EFER);
if (EnableEFERSyscallHook)
{
@@ -95,7 +95,7 @@ SyscallHookConfigureEFER(VIRTUAL_MACHINE_STATE * VCpu, BOOLEAN EnableEFERSyscall
// Because we're not save or load EFER on vm-exits so
// we have to set it manually
//
- __writemsr(IA32_EFER, MsrValue.AsUInt);
+ CpuWriteMsr(IA32_EFER, MsrValue.AsUInt);
//
// unset the exception to not cause vm-exit on #UDs
@@ -141,7 +141,7 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
// Save the address of the instruction following SYSCALL into RCX and then
// load RIP from IA32_LSTAR.
//
- MsrValue = __readmsr(IA32_LSTAR);
+ MsrValue = CpuReadMsr(IA32_LSTAR);
VCpu->Regs->rcx = GuestRip + InstructionLength;
GuestRip = MsrValue;
VmxVmwrite64(VMCS_GUEST_RIP, GuestRip);
@@ -149,7 +149,7 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
//
// Save RFLAGS into R11 and then mask RFLAGS using IA32_FMASK
//
- MsrValue = __readmsr(IA32_FMASK);
+ MsrValue = CpuReadMsr(IA32_FMASK);
VCpu->Regs->r11 = GuestRflags;
GuestRflags &= ~(MsrValue | X86_FLAGS_RF);
VmxVmwrite64(VMCS_GUEST_RFLAGS, GuestRflags);
@@ -159,7 +159,7 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
//
if (g_CompatibilityCheck.CetShadowStackSupport)
{
- UcetMsr.AsUInt = __readmsr(IA32_U_CET);
+ UcetMsr.AsUInt = CpuReadMsr(IA32_U_CET);
//
// If the shadow stack is enabled, we have to save the current
@@ -167,7 +167,7 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
if (UcetMsr.ShStkEn)
{
VmxVmread64P(VMCS_GUEST_SSP, &Ssp);
- __writemsr(IA32_PL3_SSP, Ssp);
+ CpuWriteMsr(IA32_PL3_SSP, Ssp);
VmxVmwrite64(VMCS_GUEST_SSP, 0);
}
}
@@ -175,7 +175,7 @@ SyscallHookEmulateSYSCALL(VIRTUAL_MACHINE_STATE * VCpu)
//
// Load the CS and SS selectors with values derived from bits 47:32 of IA32_STAR
//
- MsrValue = __readmsr(IA32_STAR);
+ MsrValue = CpuReadMsr(IA32_STAR);
Cs.Selector = (UINT16)((MsrValue >> 32) & ~3); // STAR[47:32] & ~RPL3
Cs.Base = 0; // flat segment
Cs.Limit = (UINT32)~0; // 4GB limit
@@ -225,14 +225,14 @@ SyscallHookEmulateSYSRET(VIRTUAL_MACHINE_STATE * VCpu)
//
if (g_CompatibilityCheck.CetShadowStackSupport)
{
- UcetMsr.AsUInt = __readmsr(IA32_U_CET);
+ UcetMsr.AsUInt = CpuReadMsr(IA32_U_CET);
//
// If the shadow stack is enabled, we have to restore the current
//
if (UcetMsr.ShStkEn)
{
- Ssp = __readmsr(IA32_PL3_SSP);
+ Ssp = CpuReadMsr(IA32_PL3_SSP);
VmxVmwrite64(VMCS_GUEST_SSP, Ssp);
}
}
@@ -240,7 +240,7 @@ SyscallHookEmulateSYSRET(VIRTUAL_MACHINE_STATE * VCpu)
//
// SYSRET loads the CS and SS selectors with values derived from bits 63:48 of IA32_STAR
//
- MsrValue = __readmsr(IA32_STAR);
+ MsrValue = CpuReadMsr(IA32_STAR);
Cs.Selector = (UINT16)(((MsrValue >> 48) + 16) | 3); // (STAR[63:48]+16) | 3 (* RPL forced to 3 *)
Cs.Base = 0; // Flat segment
Cs.Limit = (UINT32)~0; // 4GB limit
@@ -311,9 +311,9 @@ SyscallHookHandleUD(VIRTUAL_MACHINE_STATE * VCpu)
//
// if ((GuestCr3.Flags & PCID_MASK) != PCID_NONE)
- OriginalCr3 = __readcr3();
+ OriginalCr3 = CpuReadCr3();
- __writecr3(GuestCr3.Flags);
+ CpuWriteCr3(GuestCr3.Flags);
//
// Read the memory
@@ -352,7 +352,7 @@ SyscallHookHandleUD(VIRTUAL_MACHINE_STATE * VCpu)
return FALSE;
}
- __writecr3(OriginalCr3);
+ CpuWriteCr3(OriginalCr3);
if (InstructionBuffer[0] == 0x0F &&
InstructionBuffer[1] == 0x05)
diff --git a/hyperdbg/hyperhv/code/hooks/syscall-hook/SyscallCallback.c b/hyperdbg/hyperhv/code/hooks/syscall-hook/SyscallCallback.c
index 49c49b6c..c008be9e 100644
--- a/hyperdbg/hyperhv/code/hooks/syscall-hook/SyscallCallback.c
+++ b/hyperdbg/hyperhv/code/hooks/syscall-hook/SyscallCallback.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file SyscallCallback.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Implementation of the functions related to the callback for Syscall
@@ -30,7 +30,7 @@ SyscallCallbackInitialize()
//
// Insert EPT memory page hook for Windows system call handler, KiSystemCall64()
//
- Msr.Flags = __readmsr(IA32_LSTAR);
+ Msr.Flags = CpuReadMsr(IA32_LSTAR);
//
// We set the hook at the address of the system call handler + 3
@@ -101,7 +101,7 @@ SyscallCallbackUninitialize()
PlatformMemFreePool(g_SyscallCallbackTrapFlagState);
MSR Msr = {0};
- Msr.Flags = __readmsr(IA32_LSTAR);
+ Msr.Flags = CpuReadMsr(IA32_LSTAR);
if (!ConfigureEptHookUnHookSingleAddress((UINT64)(Msr.Flags + 3), (UINT64)NULL, (UINT32)(ULONG_PTR)PsGetCurrentProcessId()))
{
diff --git a/hyperdbg/hyperhv/code/memory/AddressCheck.c b/hyperdbg/hyperhv/code/memory/AddressCheck.c
index c2d50a65..86bbeb4a 100644
--- a/hyperdbg/hyperhv/code/memory/AddressCheck.c
+++ b/hyperdbg/hyperhv/code/memory/AddressCheck.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Conversion.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Functions for address checks
@@ -192,8 +192,8 @@ CheckAccessValidityAndSafetyWrapper(UINT64 TargetAddress, UINT32 Size, UINT32 Pr
//
// Move to new cr3
//
- OriginalCr3 = __readcr3();
- __writecr3(GuestCr3.Flags);
+ OriginalCr3 = CpuReadCr3();
+ CpuWriteCr3(GuestCr3.Flags);
//
// We'll only check address with TSX if the address is a kernel-mode
@@ -301,7 +301,7 @@ RestoreCr3:
//
// Move back to original cr3
//
- __writecr3(OriginalCr3);
+ CpuWriteCr3(OriginalCr3);
Return:
return Result;
diff --git a/hyperdbg/hyperhv/code/memory/MemoryMapper.c b/hyperdbg/hyperhv/code/memory/MemoryMapper.c
index e5c928b7..15745212 100644
--- a/hyperdbg/hyperhv/code/memory/MemoryMapper.c
+++ b/hyperdbg/hyperhv/code/memory/MemoryMapper.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file MemoryMapper.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief This file shows the functions to map memory to reserved system ranges
@@ -63,7 +63,7 @@ MemoryMapperGetPteVa(PVOID Va, PAGING_LEVEL Level)
//
// Read the current cr3
//
- Cr3.Flags = __readcr3();
+ Cr3.Flags = CpuReadCr3();
//
// Call the wrapper
@@ -287,7 +287,7 @@ MemoryMapperSetExecuteDisableToPteOnTargetProcess(PVOID Va, BOOLEAN Set)
//
// Invalidate the TLB
//
- __invlpg(Va);
+ CpuInvlpg(Va);
//
// Restore the original process
@@ -804,7 +804,7 @@ MemoryMapperReadMemorySafeByPte(PHYSICAL_ADDRESS PaAddressToRead,
// because it will be automatically invalidated by the top hypervisor, however,
// we should use invlpg in physical computers as it won't invalidate it automatically
//
- __invlpg(Va);
+ CpuInvlpg(Va);
//
// Also invalidate it from vpids if we're in vmx root
@@ -888,7 +888,7 @@ MemoryMapperWriteMemorySafeByPte(PVOID SourceVA,
//
// Finally, invalidate the caches for the virtual address.
//
- __invlpg(Va);
+ CpuInvlpg(Va);
//
// Also invalidate it from vpids if we're in vmx root
@@ -1180,8 +1180,8 @@ MemoryMapperReadMemorySafeOnTargetProcess(UINT64 VaAddressToRead, PVOID BufferTo
//
// Move to new cr3
//
- OriginalCr3.Flags = __readcr3();
- __writecr3(GuestCr3.Flags);
+ OriginalCr3.Flags = CpuReadCr3();
+ CpuWriteCr3(GuestCr3.Flags);
//
// Read target memory
@@ -1191,7 +1191,7 @@ MemoryMapperReadMemorySafeOnTargetProcess(UINT64 VaAddressToRead, PVOID BufferTo
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return Result;
}
@@ -1225,8 +1225,8 @@ MemoryMapperWriteMemorySafeOnTargetProcess(UINT64 Destination, PVOID Source, SIZ
//
// Move to new cr3
//
- OriginalCr3.Flags = __readcr3();
- __writecr3(GuestCr3.Flags);
+ OriginalCr3.Flags = CpuReadCr3();
+ CpuWriteCr3(GuestCr3.Flags);
//
// Write target memory
@@ -1236,7 +1236,7 @@ MemoryMapperWriteMemorySafeOnTargetProcess(UINT64 Destination, PVOID Source, SIZ
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return Result;
}
@@ -1720,7 +1720,7 @@ MemoryMapperMapPhysicalAddressToPte(PHYSICAL_ADDRESS PhysicalAddress,
// because it will be automatically invalidated by the top hypervisor, however,
// we should use invlpg in physical computers as it won't invalidate it automatically
//
- __invlpg(TargetProcessVirtualAddress);
+ CpuInvlpg(TargetProcessVirtualAddress);
//
// Restore the original process
diff --git a/hyperdbg/hyperhv/code/memory/Segmentation.c b/hyperdbg/hyperhv/code/memory/Segmentation.c
index 21e2f9c1..26b2f4aa 100644
--- a/hyperdbg/hyperhv/code/memory/Segmentation.c
+++ b/hyperdbg/hyperhv/code/memory/Segmentation.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Segmentation.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Functions for handling memory segmentations
@@ -47,7 +47,7 @@ SegmentGetDescriptor(PUCHAR GdtBase,
Descriptor32 = &DescriptorTable32[SegSelector.Index];
SegmentSelector->Selector = Selector;
- SegmentSelector->Limit = __segmentlimit(Selector);
+ SegmentSelector->Limit = CpuSegmentLimit(Selector);
SegmentSelector->Base = ((UINT64)Descriptor32->BaseAddressLow | (UINT64)Descriptor32->BaseAddressMiddle << 16 | (UINT64)Descriptor32->BaseAddressHigh << 24);
SegmentSelector->Attributes.AsUInt = (AsmGetAccessRights(Selector) >> 8);
diff --git a/hyperdbg/hyperhv/code/memory/SwitchLayout.c b/hyperdbg/hyperhv/code/memory/SwitchLayout.c
index 6865fca4..b02ba8f2 100644
--- a/hyperdbg/hyperhv/code/memory/SwitchLayout.c
+++ b/hyperdbg/hyperhv/code/memory/SwitchLayout.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file SwitchLayout.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Functions for switching memory layouts
@@ -46,12 +46,12 @@ SwitchToProcessMemoryLayout(UINT32 ProcessId)
//
// Read the current cr3
//
- CurrentProcessCr3.Flags = __readcr3();
+ CurrentProcessCr3.Flags = CpuReadCr3();
//
// Change to a new cr3 (of target process)
//
- __writecr3(GuestCr3);
+ CpuWriteCr3(GuestCr3);
ObDereferenceObject(TargetEprocess);
@@ -77,12 +77,12 @@ SwitchToCurrentProcessMemoryLayout()
//
// Read the current cr3
//
- CurrentProcessCr3.Flags = __readcr3();
+ CurrentProcessCr3.Flags = CpuReadCr3();
//
// Change to a new cr3 (of target process)
//
- __writecr3(GuestCr3.Flags);
+ CpuWriteCr3(GuestCr3.Flags);
return CurrentProcessCr3;
}
@@ -103,12 +103,12 @@ SwitchToProcessMemoryLayoutByCr3(CR3_TYPE TargetCr3)
//
// Read the current cr3
//
- CurrentProcessCr3.Flags = __readcr3();
+ CurrentProcessCr3.Flags = CpuReadCr3();
//
// Change to a new cr3 (of target process)
//
- __writecr3(TargetCr3.Flags);
+ CpuWriteCr3(TargetCr3.Flags);
return CurrentProcessCr3;
}
@@ -127,5 +127,5 @@ SwitchToPreviousProcess(CR3_TYPE PreviousProcess)
//
// Restore the original cr3
//
- __writecr3(PreviousProcess.Flags);
+ CpuWriteCr3(PreviousProcess.Flags);
}
diff --git a/hyperdbg/hyperhv/code/processor/Idt.c b/hyperdbg/hyperhv/code/processor/Idt.c
index 2cc23a44..989d3763 100644
--- a/hyperdbg/hyperhv/code/processor/Idt.c
+++ b/hyperdbg/hyperhv/code/processor/Idt.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Idt.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Routines for Interrupt Descriptor Table
@@ -21,7 +21,7 @@ VOID
IdtDumpInterruptEntries()
{
KDESCRIPTOR64 descr;
- __sidt(&descr.Limit);
+ CpuSidt(&descr.Limit);
ULONG n = (descr.Limit + 1) / sizeof(KIDTENTRY64);
diff --git a/hyperdbg/hyperhv/code/processor/Smm.c b/hyperdbg/hyperhv/code/processor/Smm.c
index 061eb5a8..d025ab31 100644
--- a/hyperdbg/hyperhv/code/processor/Smm.c
+++ b/hyperdbg/hyperhv/code/processor/Smm.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Smm.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Routines for operations related to System Management Mode (SMM)
@@ -25,7 +25,7 @@ SmmReadSmiCount()
//
// Read the SMI count from MSR
//
- SmiCount = (UINT64)__readmsr(MSR_SMI_COUNT);
+ SmiCount = (UINT64)CpuReadMsr(MSR_SMI_COUNT);
return SmiCount;
}
@@ -43,17 +43,17 @@ SmmTriggerPowerSmi()
//
// check the initial value received from 0xB3 port
//
- SmmResponse = __inbyte(0xb2);
+ SmmResponse = CpuIoInByte(0xb2);
//
// write to 0xB2 port to cause SMI
//
- __outbyte(0xb2, SMI_TRIGGER_POWER_VALUE);
+ CpuIoOutByte(0xb2, SMI_TRIGGER_POWER_VALUE);
//
// Check the response in port 0xB3
//
- SmmResponse = __inbyte(0xb2);
+ SmmResponse = CpuIoInByte(0xb2);
if (SmmResponse == SMI_TRIGGER_POWER_VALUE)
{
diff --git a/hyperdbg/hyperhv/code/vmm/ept/Ept.c b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
index c1154f56..90e6ea96 100644
--- a/hyperdbg/hyperhv/code/vmm/ept/Ept.c
+++ b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Ept.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @author Gbps
@@ -24,8 +24,8 @@ EptCheckFeatures(VOID)
IA32_VMX_EPT_VPID_CAP_REGISTER VpidRegister;
IA32_MTRR_DEF_TYPE_REGISTER MTRRDefType;
- VpidRegister.AsUInt = __readmsr(IA32_VMX_EPT_VPID_CAP);
- MTRRDefType.AsUInt = __readmsr(IA32_MTRR_DEF_TYPE);
+ VpidRegister.AsUInt = CpuReadMsr(IA32_VMX_EPT_VPID_CAP);
+ MTRRDefType.AsUInt = CpuReadMsr(IA32_MTRR_DEF_TYPE);
if (!VpidRegister.PageWalkLength4 || !VpidRegister.MemoryTypeWriteBack || !VpidRegister.Pde2MbPages)
{
@@ -163,8 +163,8 @@ EptBuildMtrrMap(VOID)
UINT32 CurrentRegister;
UINT32 NumberOfBitsInMask;
- MTRRCap.AsUInt = __readmsr(IA32_MTRR_CAPABILITIES);
- MTRRDefType.AsUInt = __readmsr(IA32_MTRR_DEF_TYPE);
+ MTRRCap.AsUInt = CpuReadMsr(IA32_MTRR_CAPABILITIES);
+ MTRRDefType.AsUInt = CpuReadMsr(IA32_MTRR_DEF_TYPE);
//
// All MTRRs are disabled when clear, and the
@@ -200,7 +200,7 @@ EptBuildMtrrMap(VOID)
{
const UINT32 K64Base = 0x0;
const UINT32 K64Size = 0x10000;
- IA32_MTRR_FIXED_RANGE_TYPE K64Types = {__readmsr(IA32_MTRR_FIX64K_00000)};
+ IA32_MTRR_FIXED_RANGE_TYPE K64Types = {CpuReadMsr(IA32_MTRR_FIX64K_00000)};
for (unsigned int i = 0; i < 8; i++)
{
Descriptor = &g_EptState->MemoryRanges[g_EptState->NumberOfEnabledMemoryRanges++];
@@ -214,7 +214,7 @@ EptBuildMtrrMap(VOID)
const UINT32 K16Size = 0x4000;
for (unsigned int i = 0; i < 2; i++)
{
- IA32_MTRR_FIXED_RANGE_TYPE K16Types = {__readmsr(IA32_MTRR_FIX16K_80000 + i)};
+ IA32_MTRR_FIXED_RANGE_TYPE K16Types = {CpuReadMsr(IA32_MTRR_FIX16K_80000 + i)};
for (unsigned int j = 0; j < 8; j++)
{
Descriptor = &g_EptState->MemoryRanges[g_EptState->NumberOfEnabledMemoryRanges++];
@@ -229,7 +229,7 @@ EptBuildMtrrMap(VOID)
const UINT32 K4Size = 0x1000;
for (unsigned int i = 0; i < 8; i++)
{
- IA32_MTRR_FIXED_RANGE_TYPE K4Types = {__readmsr(IA32_MTRR_FIX4K_C0000 + i)};
+ IA32_MTRR_FIXED_RANGE_TYPE K4Types = {CpuReadMsr(IA32_MTRR_FIX4K_C0000 + i)};
for (unsigned int j = 0; j < 8; j++)
{
@@ -247,8 +247,8 @@ EptBuildMtrrMap(VOID)
//
// For each dynamic register pair
//
- CurrentPhysBase.AsUInt = __readmsr(IA32_MTRR_PHYSBASE0 + (CurrentRegister * 2));
- CurrentPhysMask.AsUInt = __readmsr(IA32_MTRR_PHYSMASK0 + (CurrentRegister * 2));
+ CurrentPhysBase.AsUInt = CpuReadMsr(IA32_MTRR_PHYSBASE0 + (CurrentRegister * 2));
+ CurrentPhysMask.AsUInt = CpuReadMsr(IA32_MTRR_PHYSMASK0 + (CurrentRegister * 2));
//
// Is the range enabled?
@@ -270,7 +270,7 @@ EptBuildMtrrMap(VOID)
// Calculate the total size of the range
// The lowest bit of the mask that is set to 1 specifies the size of the range
//
- _BitScanForward64((ULONG *)&NumberOfBitsInMask, CurrentPhysMask.PageFrameNumber * PAGE_SIZE);
+ CpuBitScanForward64((ULONG *)&NumberOfBitsInMask, CurrentPhysMask.PageFrameNumber * PAGE_SIZE);
//
// Size of the range in bytes + Base Address
@@ -552,7 +552,7 @@ EptSplitLargePage(PVMM_EPT_PAGE_TABLE EptPageTable,
//
// Copy the template into all the PML1 entries
//
- __stosq((SIZE_T *)&NewSplit->PML1[0], EntryTemplate.AsUInt, VMM_EPT_PML1E_COUNT);
+ CpuStosQ((SIZE_T *)&NewSplit->PML1[0], EntryTemplate.AsUInt, VMM_EPT_PML1E_COUNT);
//
// Set the page frame numbers for identity mapping
@@ -713,7 +713,7 @@ EptAllocateAndCreateIdentityPageTable(VOID)
//
// Copy the template into each of the 512 PML4 entry slots
//
- __stosq((SIZE_T *)&PageTable->PML4[1], PageTable->PML4[0].AsUInt, VMM_EPT_PML4E_COUNT - 1);
+ CpuStosQ((SIZE_T *)&PageTable->PML4[1], PageTable->PML4[0].AsUInt, VMM_EPT_PML4E_COUNT - 1);
for (int i = 0; i < VMM_EPT_PML4E_COUNT; i++)
{
@@ -758,14 +758,14 @@ EptAllocateAndCreateIdentityPageTable(VOID)
//
// Copy the template into each of the 512 PML3 entry slots for the original entries
//
- __stosq((SIZE_T *)&PageTable->PML3[0], PML3Template.AsUInt, VMM_EPT_PML3E_COUNT);
+ CpuStosQ((SIZE_T *)&PageTable->PML3[0], PML3Template.AsUInt, VMM_EPT_PML3E_COUNT);
//
// Copt the template into each of the 512 PML3 entry slots for the reserved entries
//
for (size_t i = 0; i < VMM_EPT_PML4E_COUNT - 1; i++)
{
- __stosq((SIZE_T *)&PageTable->PML3_RSVD[i][0], PML3TemplateLarge.AsUInt, VMM_EPT_PML3E_COUNT);
+ CpuStosQ((SIZE_T *)&PageTable->PML3_RSVD[i][0], PML3TemplateLarge.AsUInt, VMM_EPT_PML3E_COUNT);
}
//
@@ -822,7 +822,7 @@ EptAllocateAndCreateIdentityPageTable(VOID)
// this region or not. We will cause a fault in our EPT handler if the guest access a page
// outside a usable range, despite the EPT frame being present here
//
- __stosq((SIZE_T *)&PageTable->PML2[0], PML2EntryTemplate.AsUInt, VMM_EPT_PML3E_COUNT * VMM_EPT_PML2E_COUNT);
+ CpuStosQ((SIZE_T *)&PageTable->PML2[0], PML2EntryTemplate.AsUInt, VMM_EPT_PML3E_COUNT * VMM_EPT_PML2E_COUNT);
//
// For each of the 512 collections of 512 2MB PML2 entries
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Counters.c b/hyperdbg/hyperhv/code/vmm/vmx/Counters.c
index 9506dc6c..d1493c49 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Counters.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Counters.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Counters.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief The functions for emulating counters
@@ -26,7 +26,7 @@ CounterEmulateRdtsc(VIRTUAL_MACHINE_STATE * VCpu)
// to solve it, in the future we solve it using tsc offsetting
// or tsc scalling (The reason is because of that fucking patchguard :( )
//
- UINT64 Tsc = __rdtsc();
+ UINT64 Tsc = CpuReadTsc();
PGUEST_REGS GuestRegs = VCpu->Regs;
GuestRegs->rax = 0x00000000ffffffff & Tsc;
@@ -43,7 +43,7 @@ VOID
CounterEmulateRdtscp(VIRTUAL_MACHINE_STATE * VCpu)
{
UINT32 Aux = 0;
- UINT64 Tsc = __rdtscp(&Aux);
+ UINT64 Tsc = CpuReadTscp(&Aux);
PGUEST_REGS GuestRegs = VCpu->Regs;
GuestRegs->rax = 0x00000000ffffffff & Tsc;
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Events.c b/hyperdbg/hyperhv/code/vmm/vmx/Events.c
index 330ccc70..34bee0dc 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Events.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Events.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Events.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Functions relating to Exception Bitmap and Event (Interrupt and Exception) Injection
@@ -128,7 +128,7 @@ EventInjectPageFaultWithoutErrorCode(UINT64 PageFaultAddress)
//
// Write the page-fault address
//
- __writecr2(PageFaultAddress);
+ CpuWriteCr2(PageFaultAddress);
//
// Make the error code
@@ -201,7 +201,7 @@ EventInjectPageFaults(_Inout_ VIRTUAL_MACHINE_STATE * VCpu,
//
// Cr2 is used as the page-fault address
//
- __writecr2(PageFaultAddress);
+ CpuWriteCr2(PageFaultAddress);
HvSuppressRipIncrement(VCpu);
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
index 6283e07a..bb0e30ec 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Hv.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief This file describes the routines in Hypervisor
@@ -24,7 +24,7 @@ HvAdjustControls(UINT32 Ctl, UINT32 Msr)
{
MSR MsrValue = {0};
- MsrValue.Flags = __readmsr(Msr);
+ MsrValue.Flags = CpuReadMsr(Msr);
Ctl &= MsrValue.Fields.High; /* bit == 0 in high word ==> must be zero */
Ctl |= MsrValue.Fields.Low; /* bit == 1 in low word ==> must be one */
return Ctl;
@@ -73,7 +73,7 @@ HvHandleCpuid(VIRTUAL_MACHINE_STATE * VCpu)
// Otherwise, issue the CPUID to the logical processor based on the indexes
// on the VP's GPRs.
//
- __cpuidex(CpuInfo, (INT32)Regs->rax, (INT32)Regs->rcx);
+ CpuCpuIdEx(CpuInfo, (INT32)Regs->rax, (INT32)Regs->rcx);
//
// check whether we are in transparent mode or not
@@ -505,13 +505,13 @@ HvRestoreRegisters()
// Restore FS Base
//
VmxVmread64P(VMCS_GUEST_FS_BASE, &FsBase);
- __writemsr(IA32_FS_BASE, FsBase);
+ CpuWriteMsr(IA32_FS_BASE, FsBase);
//
// Restore Gs Base
//
VmxVmread64P(VMCS_GUEST_GS_BASE, &GsBase);
- __writemsr(IA32_GS_BASE, GsBase);
+ CpuWriteMsr(IA32_GS_BASE, GsBase);
//
// Restore GDTR
@@ -892,11 +892,11 @@ HvHandleMovDebugRegister(VIRTUAL_MACHINE_STATE * VCpu)
if (Dr7.GeneralDetect)
{
DR6 Dr6 = {
- .AsUInt = __readdr(6),
+ .AsUInt = CpuReadDr(6),
.BreakpointCondition = 0,
.DebugRegisterAccessDetected = TRUE};
- __writedr(6, Dr6.AsUInt);
+ CpuWriteDr(6, Dr6.AsUInt);
Dr7.GeneralDetect = FALSE;
@@ -938,22 +938,22 @@ HvHandleMovDebugRegister(VIRTUAL_MACHINE_STATE * VCpu)
switch (ExitQualification.DebugRegister)
{
case VMX_EXIT_QUALIFICATION_REGISTER_DR0:
- __writedr(VMX_EXIT_QUALIFICATION_REGISTER_DR0, GpRegister);
+ CpuWriteDr(VMX_EXIT_QUALIFICATION_REGISTER_DR0, GpRegister);
break;
case VMX_EXIT_QUALIFICATION_REGISTER_DR1:
- __writedr(VMX_EXIT_QUALIFICATION_REGISTER_DR1, GpRegister);
+ CpuWriteDr(VMX_EXIT_QUALIFICATION_REGISTER_DR1, GpRegister);
break;
case VMX_EXIT_QUALIFICATION_REGISTER_DR2:
- __writedr(VMX_EXIT_QUALIFICATION_REGISTER_DR2, GpRegister);
+ CpuWriteDr(VMX_EXIT_QUALIFICATION_REGISTER_DR2, GpRegister);
break;
case VMX_EXIT_QUALIFICATION_REGISTER_DR3:
- __writedr(VMX_EXIT_QUALIFICATION_REGISTER_DR3, GpRegister);
+ CpuWriteDr(VMX_EXIT_QUALIFICATION_REGISTER_DR3, GpRegister);
break;
case VMX_EXIT_QUALIFICATION_REGISTER_DR6:
- __writedr(VMX_EXIT_QUALIFICATION_REGISTER_DR6, GpRegister);
+ CpuWriteDr(VMX_EXIT_QUALIFICATION_REGISTER_DR6, GpRegister);
break;
case VMX_EXIT_QUALIFICATION_REGISTER_DR7:
- __writedr(VMX_EXIT_QUALIFICATION_REGISTER_DR7, GpRegister);
+ CpuWriteDr(VMX_EXIT_QUALIFICATION_REGISTER_DR7, GpRegister);
break;
default:
break;
@@ -964,22 +964,22 @@ HvHandleMovDebugRegister(VIRTUAL_MACHINE_STATE * VCpu)
switch (ExitQualification.DebugRegister)
{
case VMX_EXIT_QUALIFICATION_REGISTER_DR0:
- GpRegister = __readdr(VMX_EXIT_QUALIFICATION_REGISTER_DR0);
+ GpRegister = CpuReadDr(VMX_EXIT_QUALIFICATION_REGISTER_DR0);
break;
case VMX_EXIT_QUALIFICATION_REGISTER_DR1:
- GpRegister = __readdr(VMX_EXIT_QUALIFICATION_REGISTER_DR1);
+ GpRegister = CpuReadDr(VMX_EXIT_QUALIFICATION_REGISTER_DR1);
break;
case VMX_EXIT_QUALIFICATION_REGISTER_DR2:
- GpRegister = __readdr(VMX_EXIT_QUALIFICATION_REGISTER_DR2);
+ GpRegister = CpuReadDr(VMX_EXIT_QUALIFICATION_REGISTER_DR2);
break;
case VMX_EXIT_QUALIFICATION_REGISTER_DR3:
- GpRegister = __readdr(VMX_EXIT_QUALIFICATION_REGISTER_DR3);
+ GpRegister = CpuReadDr(VMX_EXIT_QUALIFICATION_REGISTER_DR3);
break;
case VMX_EXIT_QUALIFICATION_REGISTER_DR6:
- GpRegister = __readdr(VMX_EXIT_QUALIFICATION_REGISTER_DR6);
+ GpRegister = CpuReadDr(VMX_EXIT_QUALIFICATION_REGISTER_DR6);
break;
case VMX_EXIT_QUALIFICATION_REGISTER_DR7:
- GpRegister = __readdr(VMX_EXIT_QUALIFICATION_REGISTER_DR7);
+ GpRegister = CpuReadDr(VMX_EXIT_QUALIFICATION_REGISTER_DR7);
break;
default:
break;
@@ -1633,7 +1633,7 @@ HvSetGuestIa32LbrCtl(UINT64 Value)
VOID
HvSetLbrSelect(UINT64 FilterOptions)
{
- __writemsr(MSR_LEGACY_LBR_SELECT, FilterOptions);
+ CpuWriteMsr(MSR_LEGACY_LBR_SELECT, FilterOptions);
}
/**
@@ -1649,7 +1649,7 @@ HvCheckCpuSupportForSaveAndLoadDebugControls()
//
// Reading IA32_VMX_BASIC_MSR
//
- VmxBasicMsr.AsUInt = __readmsr(IA32_VMX_BASIC);
+ VmxBasicMsr.AsUInt = CpuReadMsr(IA32_VMX_BASIC);
//
// Read 1-settings of save debug controls (exit controls)
@@ -1697,7 +1697,7 @@ HvCheckCpuSupportForLoadAndClearGuestIa32LbrCtlControls()
//
// Reading IA32_VMX_BASIC_MSR
//
- VmxBasicMsr.AsUInt = __readmsr(IA32_VMX_BASIC);
+ VmxBasicMsr.AsUInt = CpuReadMsr(IA32_VMX_BASIC);
//
// Read 1-settings of save debug controls (exit controls)
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
index bdd1a46f..ffd2c6f2 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file IdtEmulation.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Handlers of Guest's IDT Emulator
@@ -35,7 +35,7 @@ IdtEmulationQueryIdtEntriesRequest(PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS I
//
// Since it's not in VMX Root, we can directly read the IDTR register
//
- __sidt(&IdtrReg);
+ CpuSidt(&IdtrReg);
//
// Get the IDT base address
@@ -258,7 +258,7 @@ IdtEmulationhandleHostInterrupt(_Inout_ INTERRUPT_TRAP_FRAME * IntrTrapFrame)
//
// host page-fault
//
- PageFaultCr2 = __readcr2();
+ PageFaultCr2 = CpuReadCr2();
LogInfo("Page-fault received, rip: %llx, rsp: %llx, error: %llx, CR2: %llx",
IntrTrapFrame->rip,
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c b/hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c
index a201eac3..ad816203 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/ManageRegs.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file ManageRegs.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @author Alee Amini (alee@hyperdbg.org)
@@ -479,7 +479,7 @@ GetGuestCr2()
{
UINT64 Cr2;
- Cr2 = __readcr2();
+ Cr2 = CpuReadCr2();
return Cr2;
}
@@ -523,7 +523,7 @@ GetGuestCr8()
{
UINT64 Cr8;
- Cr8 = __readcr8();
+ Cr8 = CpuReadCr8();
return Cr8;
}
@@ -548,7 +548,7 @@ SetGuestCr0(UINT64 Cr0)
VOID
SetGuestCr2(UINT64 Cr2)
{
- __writecr2(Cr2);
+ CpuWriteCr2(Cr2);
}
/**
@@ -584,7 +584,7 @@ SetGuestCr4(UINT64 Cr4)
VOID
SetGuestCr8(UINT64 Cr8)
{
- __writecr8(Cr8);
+ CpuWriteCr8(Cr8);
}
/**
@@ -596,7 +596,7 @@ SetGuestCr8(UINT64 Cr8)
VOID
SetGuestDr0(UINT64 value)
{
- __writedr(0, value);
+ CpuWriteDr(0, value);
}
/**
@@ -608,7 +608,7 @@ SetGuestDr0(UINT64 value)
VOID
SetGuestDr1(UINT64 value)
{
- __writedr(1, value);
+ CpuWriteDr(1, value);
}
/**
@@ -620,7 +620,7 @@ SetGuestDr1(UINT64 value)
VOID
SetGuestDr2(UINT64 value)
{
- __writedr(2, value);
+ CpuWriteDr(2, value);
}
/**
@@ -632,7 +632,7 @@ SetGuestDr2(UINT64 value)
VOID
SetGuestDr3(UINT64 value)
{
- __writedr(3, value);
+ CpuWriteDr(3, value);
}
/**
@@ -644,7 +644,7 @@ SetGuestDr3(UINT64 value)
VOID
SetGuestDr6(UINT64 value)
{
- __writedr(6, value);
+ CpuWriteDr(6, value);
}
/**
@@ -656,7 +656,7 @@ SetGuestDr6(UINT64 value)
VOID
SetGuestDr7(UINT64 value)
{
- __writedr(7, value);
+ CpuWriteDr(7, value);
}
/**
@@ -668,7 +668,7 @@ UINT64
GetGuestDr0()
{
UINT64 Dr0 = 0;
- Dr0 = __readdr(0);
+ Dr0 = CpuReadDr(0);
return Dr0;
}
@@ -681,7 +681,7 @@ UINT64
GetGuestDr1()
{
UINT64 Dr1 = 0;
- Dr1 = __readdr(1);
+ Dr1 = CpuReadDr(1);
return Dr1;
}
@@ -694,7 +694,7 @@ UINT64
GetGuestDr2()
{
UINT64 Dr2 = 0;
- Dr2 = __readdr(2);
+ Dr2 = CpuReadDr(2);
return Dr2;
}
@@ -707,7 +707,7 @@ UINT64
GetGuestDr3()
{
UINT64 Dr3 = 0;
- Dr3 = __readdr(3);
+ Dr3 = CpuReadDr(3);
return Dr3;
}
@@ -720,7 +720,7 @@ UINT64
GetGuestDr6()
{
UINT64 Dr6 = 0;
- Dr6 = __readdr(6);
+ Dr6 = CpuReadDr(6);
return Dr6;
}
@@ -733,6 +733,6 @@ UINT64
GetGuestDr7()
{
UINT64 Dr7 = 0;
- Dr7 = __readdr(7);
+ Dr7 = CpuReadDr(7);
return Dr7;
}
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/MsrHandlers.c b/hyperdbg/hyperhv/code/vmm/vmx/MsrHandlers.c
index ca47bec3..8c8a9d1c 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/MsrHandlers.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/MsrHandlers.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file MsrHandlers.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Handle for MSR-related tasks in VMX-root
@@ -134,7 +134,7 @@ MsrHandleRdmsrVmexit(VIRTUAL_MACHINE_STATE * VCpu)
//
// Msr is valid
//
- Msr.Flags = __readmsr(TargetMsr);
+ Msr.Flags = CpuReadMsr(TargetMsr);
//
// Check if it's EFER MSR then we show a false SCE state
@@ -278,7 +278,7 @@ MsrHandleWrmsrVmexit(VIRTUAL_MACHINE_STATE * VCpu)
//
// Perform the WRMSR
//
- __writemsr((unsigned long)GuestRegs->rcx, Msr.Flags);
+ CpuWriteMsr((unsigned long)GuestRegs->rcx, Msr.Flags);
break;
}
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c b/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c
index 914cd0a2..171e30e2 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/ProtectedHv.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file ProtectedHv.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief File for protected hypervisor resources
@@ -399,7 +399,7 @@ ProtectedHvSetMovToCrVmexit(BOOLEAN Set, UINT64 ControlRegister, UINT64 MaskRegi
if (Set)
{
VmxVmwrite64(VMCS_CTRL_CR0_GUEST_HOST_MASK, MaskRegister);
- VmxVmwrite64(VMCS_CTRL_CR0_READ_SHADOW, __readcr0());
+ VmxVmwrite64(VMCS_CTRL_CR0_READ_SHADOW, CpuReadCr0());
}
else
{
@@ -412,7 +412,7 @@ ProtectedHvSetMovToCrVmexit(BOOLEAN Set, UINT64 ControlRegister, UINT64 MaskRegi
if (Set)
{
VmxVmwrite64(VMCS_CTRL_CR4_GUEST_HOST_MASK, MaskRegister);
- VmxVmwrite64(VMCS_CTRL_CR4_READ_SHADOW, __readcr0());
+ VmxVmwrite64(VMCS_CTRL_CR4_READ_SHADOW, CpuReadCr0());
}
else
{
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
index 3da7a18e..ad09ecda 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Vmx.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief VMX Instructions and VMX Related Functions
@@ -25,7 +25,7 @@ VmxCheckVmxSupport()
//
// Gets Processor Info and Feature Bits
//
- __cpuid((int *)&Data, 1);
+ CpuCpuId((int *)&Data, 1);
//
// Check For VMX Bit CPUID.ECX[5]
@@ -38,7 +38,7 @@ VmxCheckVmxSupport()
return FALSE;
}
- FeatureControlMsr.AsUInt = __readmsr(IA32_FEATURE_CONTROL);
+ FeatureControlMsr.AsUInt = CpuReadMsr(IA32_FEATURE_CONTROL);
//
// Commented because of https://stackoverflow.com/questions/34900224/
@@ -55,7 +55,7 @@ VmxCheckVmxSupport()
// {
// FeatureControlMsr.Fields.Lock = TRUE;
// FeatureControlMsr.Fields.EnableVmxon = TRUE;
- // __writemsr(IA32_FEATURE_CONTROL, FeatureControlMsr.Flags);
+ // CpuWriteMsr(IA32_FEATURE_CONTROL, FeatureControlMsr.Flags);
// }
if (FeatureControlMsr.EnableVmxOutsideSmx == FALSE)
@@ -401,22 +401,22 @@ VmxFixCr4AndCr0Bits()
//
// Fix Cr0
//
- CrFixed.Flags = __readmsr(IA32_VMX_CR0_FIXED0);
- Cr0.AsUInt = __readcr0();
+ CrFixed.Flags = CpuReadMsr(IA32_VMX_CR0_FIXED0);
+ Cr0.AsUInt = CpuReadCr0();
Cr0.AsUInt |= CrFixed.Fields.Low;
- CrFixed.Flags = __readmsr(IA32_VMX_CR0_FIXED1);
+ CrFixed.Flags = CpuReadMsr(IA32_VMX_CR0_FIXED1);
Cr0.AsUInt &= CrFixed.Fields.Low;
- __writecr0(Cr0.AsUInt);
+ CpuWriteCr0(Cr0.AsUInt);
//
// Fix Cr4
//
- CrFixed.Flags = __readmsr(IA32_VMX_CR4_FIXED0);
- Cr4.AsUInt = __readcr4();
+ CrFixed.Flags = CpuReadMsr(IA32_VMX_CR4_FIXED0);
+ Cr4.AsUInt = CpuReadCr4();
Cr4.AsUInt |= CrFixed.Fields.Low;
- CrFixed.Flags = __readmsr(IA32_VMX_CR4_FIXED1);
+ CrFixed.Flags = CpuReadMsr(IA32_VMX_CR4_FIXED1);
Cr4.AsUInt &= CrFixed.Fields.Low;
- __writecr4(Cr4.AsUInt);
+ CpuWriteCr4(Cr4.AsUInt);
}
/**
@@ -685,7 +685,7 @@ VmxSetupVmcs(VIRTUAL_MACHINE_STATE * VCpu, PVOID GuestStack)
//
// Reading IA32_VMX_BASIC_MSR
//
- VmxBasicMsr.AsUInt = __readmsr(IA32_VMX_BASIC);
+ VmxBasicMsr.AsUInt = CpuReadMsr(IA32_VMX_BASIC);
VmxVmwrite64(VMCS_HOST_ES_SELECTOR, AsmGetEs() & 0xF8);
VmxVmwrite64(VMCS_HOST_CS_SELECTOR, AsmGetCs() & 0xF8);
@@ -700,8 +700,8 @@ VmxSetupVmcs(VIRTUAL_MACHINE_STATE * VCpu, PVOID GuestStack)
//
VmxVmwrite64(VMCS_GUEST_VMCS_LINK_POINTER, ~0ULL);
- VmxVmwrite64(VMCS_GUEST_DEBUGCTL, __readmsr(IA32_DEBUGCTL) & 0xFFFFFFFF);
- VmxVmwrite64(VMCS_GUEST_DEBUGCTL_HIGH, __readmsr(IA32_DEBUGCTL) >> 32);
+ VmxVmwrite64(VMCS_GUEST_DEBUGCTL, CpuReadMsr(IA32_DEBUGCTL) & 0xFFFFFFFF);
+ VmxVmwrite64(VMCS_GUEST_DEBUGCTL_HIGH, CpuReadMsr(IA32_DEBUGCTL) >> 32);
//
// ******* Time-stamp counter offset *******
@@ -728,8 +728,8 @@ VmxSetupVmcs(VIRTUAL_MACHINE_STATE * VCpu, PVOID GuestStack)
HvFillGuestSelectorData((PVOID)GdtBase, LDTR, AsmGetLdtr());
HvFillGuestSelectorData((PVOID)GdtBase, TR, AsmGetTr());
- VmxVmwrite64(VMCS_GUEST_FS_BASE, __readmsr(IA32_FS_BASE));
- VmxVmwrite64(VMCS_GUEST_GS_BASE, __readmsr(IA32_GS_BASE));
+ VmxVmwrite64(VMCS_GUEST_FS_BASE, CpuReadMsr(IA32_FS_BASE));
+ VmxVmwrite64(VMCS_GUEST_GS_BASE, CpuReadMsr(IA32_GS_BASE));
CpuBasedVmExecControls = HvAdjustControls(
IA32_VMX_PROCBASED_CTLS_USE_IO_BITMAPS_FLAG |
@@ -779,14 +779,14 @@ VmxSetupVmcs(VIRTUAL_MACHINE_STATE * VCpu, PVOID GuestStack)
VmxVmwrite64(VMCS_CTRL_CR0_READ_SHADOW, 0);
VmxVmwrite64(VMCS_CTRL_CR4_READ_SHADOW, 0);
- VmxVmwrite64(VMCS_GUEST_CR0, __readcr0());
- VmxVmwrite64(VMCS_GUEST_CR3, __readcr3());
- VmxVmwrite64(VMCS_GUEST_CR4, __readcr4());
+ VmxVmwrite64(VMCS_GUEST_CR0, CpuReadCr0());
+ VmxVmwrite64(VMCS_GUEST_CR3, CpuReadCr3());
+ VmxVmwrite64(VMCS_GUEST_CR4, CpuReadCr4());
VmxVmwrite64(VMCS_GUEST_DR7, 0x400);
- VmxVmwrite64(VMCS_HOST_CR0, __readcr0());
- VmxVmwrite64(VMCS_HOST_CR4, __readcr4());
+ VmxVmwrite64(VMCS_HOST_CR0, CpuReadCr0());
+ VmxVmwrite64(VMCS_HOST_CR4, CpuReadCr4());
//
// Because we may be executing in an arbitrary user-mode, process as part
@@ -803,9 +803,9 @@ VmxSetupVmcs(VIRTUAL_MACHINE_STATE * VCpu, PVOID GuestStack)
VmxVmwrite64(VMCS_GUEST_RFLAGS, AsmGetRflags());
- VmxVmwrite64(VMCS_GUEST_SYSENTER_CS, __readmsr(IA32_SYSENTER_CS));
- VmxVmwrite64(VMCS_GUEST_SYSENTER_EIP, __readmsr(IA32_SYSENTER_EIP));
- VmxVmwrite64(VMCS_GUEST_SYSENTER_ESP, __readmsr(IA32_SYSENTER_ESP));
+ VmxVmwrite64(VMCS_GUEST_SYSENTER_CS, CpuReadMsr(IA32_SYSENTER_CS));
+ VmxVmwrite64(VMCS_GUEST_SYSENTER_EIP, CpuReadMsr(IA32_SYSENTER_EIP));
+ VmxVmwrite64(VMCS_GUEST_SYSENTER_ESP, CpuReadMsr(IA32_SYSENTER_ESP));
#if USE_DEFAULT_OS_GDT_AS_HOST_GDT == FALSE
@@ -823,8 +823,8 @@ VmxSetupVmcs(VIRTUAL_MACHINE_STATE * VCpu, PVOID GuestStack)
#endif // USE_DEFAULT_OS_GDT_AS_HOST_GDT == FALSE
- VmxVmwrite64(VMCS_HOST_FS_BASE, __readmsr(IA32_FS_BASE));
- VmxVmwrite64(VMCS_HOST_GS_BASE, __readmsr(IA32_GS_BASE));
+ VmxVmwrite64(VMCS_HOST_FS_BASE, CpuReadMsr(IA32_FS_BASE));
+ VmxVmwrite64(VMCS_HOST_GS_BASE, CpuReadMsr(IA32_GS_BASE));
#if USE_DEFAULT_OS_IDT_AS_HOST_IDT == FALSE
@@ -836,9 +836,9 @@ VmxSetupVmcs(VIRTUAL_MACHINE_STATE * VCpu, PVOID GuestStack)
#endif // USE_DEFAULT_OS_IDT_AS_HOST_IDT == FALSE
- VmxVmwrite64(VMCS_HOST_SYSENTER_CS, __readmsr(IA32_SYSENTER_CS));
- VmxVmwrite64(VMCS_HOST_SYSENTER_EIP, __readmsr(IA32_SYSENTER_EIP));
- VmxVmwrite64(VMCS_HOST_SYSENTER_ESP, __readmsr(IA32_SYSENTER_ESP));
+ VmxVmwrite64(VMCS_HOST_SYSENTER_CS, CpuReadMsr(IA32_SYSENTER_CS));
+ VmxVmwrite64(VMCS_HOST_SYSENTER_EIP, CpuReadMsr(IA32_SYSENTER_EIP));
+ VmxVmwrite64(VMCS_HOST_SYSENTER_ESP, CpuReadMsr(IA32_SYSENTER_ESP));
//
// Set MSR Bitmaps
@@ -997,7 +997,7 @@ VmxPerformVmxoff(VIRTUAL_MACHINE_STATE * VCpu)
//
VmxVmread64P(VMCS_GUEST_CR3, &GuestCr3);
- __writecr3(GuestCr3);
+ CpuWriteCr3(GuestCr3);
//
// Read guest rsp and rip
@@ -1060,7 +1060,7 @@ VmxPerformVmxoff(VIRTUAL_MACHINE_STATE * VCpu)
//
// Now that VMX is OFF, we have to unset vmx-enable bit on cr4
//
- __writecr4(__readcr4() & (~REG_CR4_VMXE));
+ CpuWriteCr4(CpuReadCr4() & (~REG_CR4_VMXE));
}
/**
@@ -1202,8 +1202,8 @@ VmxCompatibleStrlen(const CHAR * S)
//
// Move to new cr3
//
- OriginalCr3.Flags = __readcr3();
- __writecr3(GuestCr3.Flags);
+ OriginalCr3.Flags = CpuReadCr3();
+ CpuWriteCr3(GuestCr3.Flags);
//
// First check
@@ -1217,7 +1217,7 @@ VmxCompatibleStrlen(const CHAR * S)
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return 0;
}
@@ -1238,7 +1238,7 @@ VmxCompatibleStrlen(const CHAR * S)
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return Count;
}
@@ -1253,7 +1253,7 @@ VmxCompatibleStrlen(const CHAR * S)
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return 0;
}
}
@@ -1262,7 +1262,7 @@ VmxCompatibleStrlen(const CHAR * S)
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
}
/**
@@ -1291,8 +1291,8 @@ VmxCompatibleWcslen(const wchar_t * S)
//
// Move to new cr3
//
- OriginalCr3.Flags = __readcr3();
- __writecr3(GuestCr3.Flags);
+ OriginalCr3.Flags = CpuReadCr3();
+ CpuWriteCr3(GuestCr3.Flags);
AlignedAddress = (UINT64)PAGE_ALIGN((UINT64)S);
@@ -1308,7 +1308,7 @@ VmxCompatibleWcslen(const wchar_t * S)
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return 0;
}
@@ -1329,7 +1329,7 @@ VmxCompatibleWcslen(const wchar_t * S)
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return Count;
}
@@ -1344,7 +1344,7 @@ VmxCompatibleWcslen(const wchar_t * S)
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return 0;
}
}
@@ -1353,7 +1353,7 @@ VmxCompatibleWcslen(const wchar_t * S)
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
}
/**
@@ -1413,8 +1413,8 @@ VmxCompatibleStrcmp(const CHAR * Address1,
//
// Move to new cr3
//
- OriginalCr3.Flags = __readcr3();
- __writecr3(GuestCr3.Flags);
+ OriginalCr3.Flags = CpuReadCr3();
+ CpuWriteCr3(GuestCr3.Flags);
//
// First check
@@ -1428,7 +1428,7 @@ VmxCompatibleStrcmp(const CHAR * Address1,
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return 0x2;
}
@@ -1479,7 +1479,7 @@ VmxCompatibleStrcmp(const CHAR * Address1,
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return 0x2;
}
}
@@ -1495,7 +1495,7 @@ VmxCompatibleStrcmp(const CHAR * Address1,
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return 0x2;
}
}
@@ -1514,7 +1514,7 @@ VmxCompatibleStrcmp(const CHAR * Address1,
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return Result;
}
@@ -1551,8 +1551,8 @@ VmxCompatibleWcscmp(const wchar_t * Address1,
//
// Move to new cr3
//
- OriginalCr3.Flags = __readcr3();
- __writecr3(GuestCr3.Flags);
+ OriginalCr3.Flags = CpuReadCr3();
+ CpuWriteCr3(GuestCr3.Flags);
//
// First check
@@ -1566,7 +1566,7 @@ VmxCompatibleWcscmp(const wchar_t * Address1,
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return 0x2;
}
@@ -1617,7 +1617,7 @@ VmxCompatibleWcscmp(const wchar_t * Address1,
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return 0x2;
}
}
@@ -1633,7 +1633,7 @@ VmxCompatibleWcscmp(const wchar_t * Address1,
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return 0x2;
}
}
@@ -1653,7 +1653,7 @@ VmxCompatibleWcscmp(const wchar_t * Address1,
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return Result;
}
@@ -1685,8 +1685,8 @@ VmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, size_t Count)
//
// Move to new cr3
//
- OriginalCr3.Flags = __readcr3();
- __writecr3(GuestCr3.Flags);
+ OriginalCr3.Flags = CpuReadCr3();
+ CpuWriteCr3(GuestCr3.Flags);
//
// First check
@@ -1700,7 +1700,7 @@ VmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, size_t Count)
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return 0x2;
}
@@ -1730,7 +1730,7 @@ VmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, size_t Count)
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return 0x2;
}
}
@@ -1746,7 +1746,7 @@ VmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, size_t Count)
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return 0x2;
}
}
@@ -1766,6 +1766,6 @@ VmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, size_t Count)
//
// Move back to original cr3
//
- __writecr3(OriginalCr3.Flags);
+ CpuWriteCr3(OriginalCr3.Flags);
return Result;
}
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c b/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c
index cfe0f4c7..7fbb08fd 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file VmxRegions.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Implement allocations for VMX Regions (VMXON Region, VMCS, MSR Bitmap and etc.)
@@ -63,7 +63,7 @@ VmxAllocateVmxonRegion(VIRTUAL_MACHINE_STATE * VCpu)
//
// get IA32_VMX_BASIC_MSR RevisionId
//
- VmxBasicMsr.AsUInt = __readmsr(IA32_VMX_BASIC);
+ VmxBasicMsr.AsUInt = CpuReadMsr(IA32_VMX_BASIC);
LogDebugInfo("Revision Identifier (IA32_VMX_BASIC - MSR 0x480) : 0x%x", VmxBasicMsr.VmcsRevisionId);
//
@@ -140,7 +140,7 @@ VmxAllocateVmcsRegion(VIRTUAL_MACHINE_STATE * VCpu)
//
// get IA32_VMX_BASIC_MSR RevisionId
//
- VmxBasicMsr.AsUInt = __readmsr(IA32_VMX_BASIC);
+ VmxBasicMsr.AsUInt = CpuReadMsr(IA32_VMX_BASIC);
LogDebugInfo("Revision Identifier (IA32_VMX_BASIC - MSR 0x480) : 0x%x", VmxBasicMsr.VmcsRevisionId);
//
@@ -277,7 +277,7 @@ VmxAllocateInvalidMsrBimap()
{
__try
{
- __readmsr(i);
+ CpuReadMsr(i);
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/IoHandler.h b/hyperdbg/hyperhv/header/vmm/vmx/IoHandler.h
index 15767148..b879897c 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/IoHandler.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/IoHandler.h
@@ -39,124 +39,76 @@ typedef enum _IO_OP_ENCODING
// I/O Instructions Functions //
//////////////////////////////////////////////////
-unsigned char
-__inbyte(unsigned short);
-#pragma intrinsic(__inbyte)
-
inline UINT8
IoInByte(UINT16 port)
{
- return __inbyte(port);
+ return CpuIoInByte(port);
}
-unsigned short
-__inword(unsigned short);
-#pragma intrinsic(__inword)
-
inline UINT16
IoInWord(UINT16 port)
{
- return __inword(port);
+ return CpuIoInWord(port);
}
-unsigned long
-__indword(unsigned short);
-#pragma intrinsic(__indword)
-
inline UINT32
IoInDword(UINT16 port)
{
- return __indword(port);
+ return CpuIoInDword(port);
}
-void
-__inbytestring(unsigned short, unsigned char *, unsigned long);
-#pragma intrinsic(__inbytestring)
-
inline void
IoInByteString(UINT16 port, UINT8 * data, UINT32 size)
{
- __inbytestring(port, data, size);
+ CpuIoInByteString(port, data, size);
}
-void
-__inwordstring(unsigned short, unsigned short *, unsigned long);
-#pragma intrinsic(__inwordstring)
-
inline void
IoInWordString(UINT16 port, UINT16 * data, UINT32 size)
{
- __inwordstring(port, data, size);
+ CpuIoInWordString(port, data, size);
}
-void
-__indwordstring(unsigned short, unsigned long *, unsigned long);
-#pragma intrinsic(__indwordstring)
-
inline void
IoInDwordString(UINT16 port, UINT32 * data, UINT32 size)
{
- __indwordstring(port, (unsigned long *)data, size);
+ CpuIoInDwordString(port, data, size);
}
-void
-__outbyte(unsigned short, unsigned char);
-#pragma intrinsic(__outbyte)
-
inline void
IoOutByte(UINT16 port, UINT8 value)
{
- __outbyte(port, value);
+ CpuIoOutByte(port, value);
}
-void
-__outword(unsigned short, unsigned short);
-#pragma intrinsic(__outword)
-
inline void
IoOutWord(UINT16 port, UINT16 value)
{
- __outword(port, value);
+ CpuIoOutWord(port, value);
}
-void
-__outdword(unsigned short, unsigned long);
-#pragma intrinsic(__outdword)
-
inline void
IoOutDword(UINT16 port, UINT32 value)
{
- __outdword(port, value);
+ CpuIoOutDword(port, value);
}
-void
-__outbytestring(unsigned short, unsigned char *, unsigned long);
-#pragma intrinsic(__outbytestring)
-
inline void
IoOutByteString(UINT16 port, UINT8 * data, UINT32 count)
{
- __outbytestring(port, data, count);
+ CpuIoOutByteString(port, data, count);
}
-void
-__outwordstring(unsigned short, unsigned short *, unsigned long);
-#pragma intrinsic(__outwordstring)
-
inline void
IoOutWordString(UINT16 port, UINT16 * data, UINT32 count)
{
- __outwordstring(port, data, count);
+ CpuIoOutWordString(port, data, count);
}
-void
-__outdwordstring(unsigned short, unsigned long *, unsigned long);
-#pragma intrinsic(__outdwordstring)
-
inline void
IoOutDwordString(UINT16 port, UINT32 * data, UINT32 count)
{
- __outdwordstring(port, (unsigned long *)data, count);
+ CpuIoOutDwordString(port, data, count);
}
//////////////////////////////////////////////////
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj b/hyperdbg/hyperhv/hyperhv.vcxproj
index 4635e252..799267cd 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj
@@ -132,6 +132,7 @@
+
@@ -239,6 +240,7 @@
+
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj.filters b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
index 4a74240d..8af5ccbe 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj.filters
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
@@ -332,6 +332,9 @@
code\platform
+
+ code\platform
+
@@ -613,6 +616,9 @@
header\platform
+
+ header\platform
+
diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h
index 38fc58c6..a80e7b97 100644
--- a/hyperdbg/hyperhv/pch.h
+++ b/hyperdbg/hyperhv/pch.h
@@ -61,6 +61,7 @@
// Platform independent headers
//
#include "platform/kernel/header/PlatformMem.h"
+#include "platform/kernel/header/PlatformIntrinsics.h"
//
// Platform intrinsics headers
diff --git a/hyperdbg/hyperkd/code/debugger/broadcast/DpcRoutines.c b/hyperdbg/hyperkd/code/debugger/broadcast/DpcRoutines.c
index f47b5706..e41bf88f 100644
--- a/hyperdbg/hyperkd/code/debugger/broadcast/DpcRoutines.c
+++ b/hyperdbg/hyperkd/code/debugger/broadcast/DpcRoutines.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file DpcRoutines.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief All the dpc routines which relates to executing on a single core
@@ -138,7 +138,7 @@ DpcRoutinePerformWriteMsr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgumen
//
// write on MSR
//
- __writemsr(CurrentDebuggingState->MsrState.Msr, CurrentDebuggingState->MsrState.Value);
+ CpuWriteMsr((ULONG)CurrentDebuggingState->MsrState.Msr, CurrentDebuggingState->MsrState.Value);
//
// As this function is designed for a single,
@@ -170,7 +170,7 @@ DpcRoutinePerformReadMsr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument
//
// read on MSR
//
- CurrentDebuggingState->MsrState.Value = __readmsr(CurrentDebuggingState->MsrState.Msr);
+ CurrentDebuggingState->MsrState.Value = CpuReadMsr((ULONG)CurrentDebuggingState->MsrState.Msr);
//
// As this function is designed for a single,
@@ -200,7 +200,7 @@ DpcRoutineWriteMsrToAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgu
//
// write on MSR
//
- __writemsr(CurrentDebuggingState->MsrState.Msr, CurrentDebuggingState->MsrState.Value);
+ CpuWriteMsr((ULONG)CurrentDebuggingState->MsrState.Msr, CurrentDebuggingState->MsrState.Value);
//
// Wait for all DPCs to synchronize at this point
@@ -234,7 +234,7 @@ DpcRoutineReadMsrToAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgum
//
// read msr
//
- CurrentDebuggingState->MsrState.Value = __readmsr(CurrentDebuggingState->MsrState.Msr);
+ CurrentDebuggingState->MsrState.Value = CpuReadMsr((ULONG)CurrentDebuggingState->MsrState.Msr);
//
// Wait for all DPCs to synchronize at this point
diff --git a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
index c1c0b55c..1d51fb32 100644
--- a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
+++ b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Kd.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @author Alee Amini (alee@hyperdbg.org)
@@ -947,7 +947,7 @@ KdCustomDebuggerBreakSpinlockLock(PROCESSOR_DEBUGGING_STATE * DbgState, volatile
{
for (unsigned i = 0; i < wait; ++i)
{
- _mm_pause();
+ CpuPause();
}
//
diff --git a/hyperdbg/hyperkd/code/debugger/objects/Thread.c b/hyperdbg/hyperkd/code/debugger/objects/Thread.c
index 57386d30..c209c10b 100644
--- a/hyperdbg/hyperkd/code/debugger/objects/Thread.c
+++ b/hyperdbg/hyperkd/code/debugger/objects/Thread.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Thread.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Implementation of kernel debugger functions for threads
@@ -442,7 +442,7 @@ ThreadDetectChangeByDebugRegisterOnGs(PROCESSOR_DEBUGGING_STATE * DbgState,
// from user-mode then IA32_KERNEL_GS_BASE should be used
// but it's not for our case
//
- MsrGsBase = __readmsr(IA32_GS_BASE);
+ MsrGsBase = CpuReadMsr(IA32_GS_BASE);
//
// Now, we have the gs base on MSR
diff --git a/hyperdbg/hyperkd/header/pch.h b/hyperdbg/hyperkd/header/pch.h
index b6b331bc..d611422f 100644
--- a/hyperdbg/hyperkd/header/pch.h
+++ b/hyperdbg/hyperkd/header/pch.h
@@ -85,6 +85,7 @@
// Platform independent headers
//
#include "platform/kernel/header/PlatformMem.h"
+#include "platform/kernel/header/PlatformIntrinsics.h"
//
// Optimization algorithms
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj b/hyperdbg/hyperkd/hyperkd.vcxproj
index 287a139b..31fa0abd 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj
@@ -108,6 +108,7 @@
+
@@ -154,6 +155,7 @@
+
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj.filters b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
index 4e2eeb7d..c547d5e5 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj.filters
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
@@ -267,6 +267,9 @@
code\common
+
+ code\platform
+
@@ -401,6 +404,9 @@
header\common
+
+ header\platform
+
diff --git a/hyperdbg/hyperlog/header/pch.h b/hyperdbg/hyperlog/header/pch.h
index 45be603f..021a8c5a 100644
--- a/hyperdbg/hyperlog/header/pch.h
+++ b/hyperdbg/hyperlog/header/pch.h
@@ -49,3 +49,4 @@
// Platform independent headers
//
#include "platform/kernel/header/PlatformMem.h"
+#include "platform/kernel/header/PlatformIntrinsics.h"
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 60b6db7e..c68f5e7b 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file LbrApi.c
* @author Hari Mishal (harimishal6@gmail.com)
* @author Sina Karvandi (sina@hyperdbg.org)
@@ -30,8 +30,8 @@ HyperTraceLbrExamplePerformTrace()
}
else
{
- __nop();
- __nop();
+ CpuNop();
+ CpuNop();
}
}
diff --git a/hyperdbg/hypertrace/header/api/TraceApi.h b/hyperdbg/hypertrace/header/api/TraceApi.h
index c2563324..1dff92cf 100644
--- a/hyperdbg/hypertrace/header/api/TraceApi.h
+++ b/hyperdbg/hypertrace/header/api/TraceApi.h
@@ -1,4 +1,4 @@
-/**
+/**
* @file TraceApi.h
* @author
* @brief Header for general tracing routines for HyperTrace module
@@ -22,14 +22,14 @@
// Platform Wrappers //
//////////////////////////////////////////////////
-#define xrdmsr(msr, pval) (*(pval) = __readmsr(msr))
+#define xrdmsr(msr, pval) (*(pval) = CpuReadMsr(msr))
#define xwrmsr(msr, val) (msr, val)
// CPUID (Fixed C6001: initialized CpuInfo)
#define xcpuid(code, a, b, c, d) \
{ \
int CpuInfo[4] = {0}; \
- __cpuid(CpuInfo, code); \
+ CpuCpuId(CpuInfo, code); \
*a = CpuInfo[0]; \
*b = CpuInfo[1]; \
*c = CpuInfo[2]; \
@@ -39,7 +39,7 @@
#define xcpuidex(code, subleaf, a, b, c, d) \
{ \
int CpuInfo[4] = {0}; \
- __cpuidex(CpuInfo, code, subleaf); \
+ CpuCpuIdEx(CpuInfo, code, subleaf); \
*a = CpuInfo[0]; \
*b = CpuInfo[1]; \
*c = CpuInfo[2]; \
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 9fa1eded..cfdb570f 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -56,6 +56,7 @@
// Platform independent headers
//
#include "platform/kernel/header/PlatformMem.h"
+#include "platform/kernel/header/PlatformIntrinsics.h"
//
// DPC and broadcasting function headers
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index be929623..aae58804 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -101,6 +101,7 @@
+
@@ -113,6 +114,7 @@
+
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
index e78b386d..09ee1571 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj.filters
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -86,6 +86,9 @@
code\api
+
+ code\platform
+
@@ -127,5 +130,8 @@
header\api
+
+ header\platform
+
\ No newline at end of file
diff --git a/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c b/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
new file mode 100644
index 00000000..8891b9c1
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
@@ -0,0 +1,676 @@
+/**
+ * @file PlatformIntrinsics.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for intrinsic functions (x86 instructions)
+ * @details
+ * @version 0.19
+ * @date 2026-04-27
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformIntrinsics.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// CR Registers //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Read CR0
+ *
+ * @return ULONG_PTR
+ */
+inline ULONG_PTR
+CpuReadCr0(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __readcr0();
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Write CR0
+ *
+ * @param Cr0Value
+ */
+inline VOID
+CpuWriteCr0(ULONG_PTR Cr0Value)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __writecr0(Cr0Value);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Read CR2
+ *
+ * @return ULONG_PTR
+ */
+inline ULONG_PTR
+CpuReadCr2(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __readcr2();
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Write CR2
+ *
+ * @param Cr2Value
+ */
+inline VOID
+CpuWriteCr2(ULONG_PTR Cr2Value)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __writecr2(Cr2Value);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Read CR3
+ *
+ * @return ULONG_PTR
+ */
+inline ULONG_PTR
+CpuReadCr3(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __readcr3();
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Write CR3
+ *
+ * @param Cr3Value
+ */
+inline VOID
+CpuWriteCr3(ULONG_PTR Cr3Value)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __writecr3(Cr3Value);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Read CR4
+ *
+ * @return ULONG_PTR
+ */
+inline ULONG_PTR
+CpuReadCr4(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __readcr4();
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Write CR4
+ *
+ * @param Cr4Value
+ */
+inline VOID
+CpuWriteCr4(ULONG_PTR Cr4Value)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __writecr4(Cr4Value);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Read CR8
+ *
+ * @return ULONG_PTR
+ */
+inline ULONG_PTR
+CpuReadCr8(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __readcr8();
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Write CR8
+ *
+ * @param Cr8Value
+ */
+inline VOID
+CpuWriteCr8(ULONG_PTR Cr8Value)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __writecr8(Cr8Value);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+//////////////////////////////////////////////////
+// MSR Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Read an MSR
+ *
+ * @param MsrAddress
+ * @return UINT64
+ */
+inline UINT64
+CpuReadMsr(ULONG MsrAddress)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __readmsr(MsrAddress);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Write an MSR
+ *
+ * @param MsrAddress
+ * @param MsrValue
+ */
+inline VOID
+CpuWriteMsr(ULONG MsrAddress, UINT64 MsrValue)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __writemsr(MsrAddress, MsrValue);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+//////////////////////////////////////////////////
+// CPUID Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Execute CPUID
+ *
+ * @param CpuInfo
+ * @param FunctionId
+ */
+inline VOID
+CpuCpuId(INT32 * CpuInfo, INT32 FunctionId)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __cpuid(CpuInfo, FunctionId);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Execute CPUID with sub-leaf
+ *
+ * @param CpuInfo
+ * @param FunctionId
+ * @param SubFunctionId
+ */
+inline VOID
+CpuCpuIdEx(INT32 * CpuInfo, INT32 FunctionId, INT32 SubFunctionId)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __cpuidex(CpuInfo, FunctionId, SubFunctionId);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+//////////////////////////////////////////////////
+// TSC Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Read Time-Stamp Counter
+ *
+ * @return UINT64
+ */
+inline UINT64
+CpuReadTsc(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __rdtsc();
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Read Time-Stamp Counter and Processor ID
+ *
+ * @param Aux
+ * @return UINT64
+ */
+inline UINT64
+CpuReadTscp(UINT32 * Aux)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __rdtscp(Aux);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+//////////////////////////////////////////////////
+// Descriptor Table Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Store Interrupt Descriptor Table Register
+ *
+ * @param Idtr
+ */
+inline VOID
+CpuSidt(VOID * Idtr)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __sidt(Idtr);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+//////////////////////////////////////////////////
+// TLB Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Invalidate TLB entry for a virtual address
+ *
+ * @param Address
+ */
+inline VOID
+CpuInvlpg(VOID * Address)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __invlpg(Address);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+//////////////////////////////////////////////////
+// String Store Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Store UINT64 value to memory Count times
+ *
+ * @param Destination
+ * @param Value
+ * @param Count
+ */
+inline VOID
+CpuStosQ(UINT64 * Destination, UINT64 Value, SIZE_T Count)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __stosq((unsigned __int64 *)Destination, Value, Count);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+//////////////////////////////////////////////////
+// Bit Scan Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Bit scan forward (64-bit)
+ *
+ * @param Index
+ * @param Mask
+ * @return UCHAR
+ */
+inline UCHAR
+CpuBitScanForward64(ULONG * Index, UINT64 Mask)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return (UCHAR)_BitScanForward64((unsigned long *)Index, Mask);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+//////////////////////////////////////////////////
+// Misc Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Execute NOP
+ */
+inline VOID
+CpuNop(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __nop();
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Execute PAUSE (spin-wait hint)
+ */
+inline VOID
+CpuPause(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ _mm_pause();
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Return the segment limit for a selector
+ *
+ * @param Selector
+ * @return ULONG
+ */
+inline ULONG
+CpuSegmentLimit(UINT32 Selector)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __segmentlimit(Selector);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+//////////////////////////////////////////////////
+// I/O Port Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Read a byte from an I/O port
+ *
+ * @param Port
+ * @return UINT8
+ */
+inline UINT8
+CpuIoInByte(UINT16 Port)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __inbyte(Port);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Read a word from an I/O port
+ *
+ * @param Port
+ * @return UINT16
+ */
+inline UINT16
+CpuIoInWord(UINT16 Port)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __inword(Port);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Read a dword from an I/O port
+ *
+ * @param Port
+ * @return UINT32
+ */
+inline UINT32
+CpuIoInDword(UINT16 Port)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __indword(Port);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Read a byte string from an I/O port
+ *
+ * @param Port
+ * @param Data
+ * @param Size
+ */
+inline VOID
+CpuIoInByteString(UINT16 Port, UINT8 * Data, UINT32 Size)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __inbytestring(Port, Data, Size);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Read a word string from an I/O port
+ *
+ * @param Port
+ * @param Data
+ * @param Size
+ */
+inline VOID
+CpuIoInWordString(UINT16 Port, UINT16 * Data, UINT32 Size)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __inwordstring(Port, Data, Size);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Read a dword string from an I/O port
+ *
+ * @param Port
+ * @param Data
+ * @param Size
+ */
+inline VOID
+CpuIoInDwordString(UINT16 Port, UINT32 * Data, UINT32 Size)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __indwordstring(Port, (unsigned long *)Data, Size);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Write a byte to an I/O port
+ *
+ * @param Port
+ * @param Value
+ */
+inline VOID
+CpuIoOutByte(UINT16 Port, UINT8 Value)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __outbyte(Port, Value);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Write a word to an I/O port
+ *
+ * @param Port
+ * @param Value
+ */
+inline VOID
+CpuIoOutWord(UINT16 Port, UINT16 Value)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __outword(Port, Value);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Write a dword to an I/O port
+ *
+ * @param Port
+ * @param Value
+ */
+inline VOID
+CpuIoOutDword(UINT16 Port, UINT32 Value)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __outdword(Port, Value);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Write a byte string to an I/O port
+ *
+ * @param Port
+ * @param Data
+ * @param Count
+ */
+inline VOID
+CpuIoOutByteString(UINT16 Port, UINT8 * Data, UINT32 Count)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __outbytestring(Port, Data, Count);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Write a word string to an I/O port
+ *
+ * @param Port
+ * @param Data
+ * @param Count
+ */
+inline VOID
+CpuIoOutWordString(UINT16 Port, UINT16 * Data, UINT32 Count)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __outwordstring(Port, Data, Count);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Write a dword string to an I/O port
+ *
+ * @param Port
+ * @param Data
+ * @param Count
+ */
+inline VOID
+CpuIoOutDwordString(UINT16 Port, UINT32 * Data, UINT32 Count)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __outdwordstring(Port, (unsigned long *)Data, Count);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
diff --git a/hyperdbg/include/platform/kernel/code/PlatformIntrinsicsVmx.c b/hyperdbg/include/platform/kernel/code/PlatformIntrinsicsVmx.c
index 020bc4be..e3abc6fa 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformIntrinsicsVmx.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformIntrinsicsVmx.c
@@ -1,7 +1,7 @@
/**
* @file PlatformIntrinsicsVmx.c
* @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Implementation of cross platform APIs for intrinsic functions
+ * @brief Implementation of cross platform APIs for intrinsic functions (VMX instructions)
* @details
* @version 0.19
* @date 2026-04-27
diff --git a/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h b/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
new file mode 100644
index 00000000..c22c63a7
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
@@ -0,0 +1,292 @@
+/**
+ * @file PlatformIntrinsics.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Cross platform APIs for intrinsic functions (x86 instructions)
+ * @details
+ * @version 0.19
+ * @date 2026-05-05
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// CR Registers //
+//////////////////////////////////////////////////
+
+//
+// READCR0
+//
+extern inline ULONG_PTR
+ CpuReadCr0(VOID);
+
+//
+// WRITECR0
+//
+extern inline VOID
+CpuWriteCr0(ULONG_PTR Cr0Value);
+
+//
+// READCR2
+//
+extern inline ULONG_PTR
+ CpuReadCr2(VOID);
+
+//
+// WRITECR2
+//
+extern inline VOID
+CpuWriteCr2(ULONG_PTR Cr2Value);
+
+//
+// READCR3
+//
+extern inline ULONG_PTR
+ CpuReadCr3(VOID);
+
+//
+// WRITECR3
+//
+extern inline VOID
+CpuWriteCr3(ULONG_PTR Cr3Value);
+
+//
+// READCR4
+//
+extern inline ULONG_PTR
+ CpuReadCr4(VOID);
+
+//
+// WRITECR4
+//
+extern inline VOID
+CpuWriteCr4(ULONG_PTR Cr4Value);
+
+//
+// READCR8
+//
+extern inline ULONG_PTR
+ CpuReadCr8(VOID);
+
+//
+// WRITECR8
+//
+extern inline VOID
+CpuWriteCr8(ULONG_PTR Cr8Value);
+
+//////////////////////////////////////////////////
+// MSR Instructions //
+//////////////////////////////////////////////////
+
+//
+// RDMSR
+//
+extern inline UINT64
+CpuReadMsr(ULONG MsrAddress);
+
+//
+// WRMSR
+//
+extern inline VOID
+CpuWriteMsr(ULONG MsrAddress, UINT64 MsrValue);
+
+//////////////////////////////////////////////////
+// Debug Register Instructions //
+//////////////////////////////////////////////////
+
+//
+// MOV DR (read)
+//
+#if defined(_WIN32) || defined(_WIN64)
+# define CpuReadDr(DrNumber) __readdr(DrNumber)
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+
+//
+// MOV DR (write)
+//
+#if defined(_WIN32) || defined(_WIN64)
+# define CpuWriteDr(DrNumber, DrValue) __writedr(DrNumber, DrValue)
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+
+//////////////////////////////////////////////////
+// CPUID Instructions //
+//////////////////////////////////////////////////
+
+//
+// CPUID
+//
+extern inline VOID
+CpuCpuId(INT32 * CpuInfo, INT32 FunctionId);
+
+//
+// CPUID (with sub-leaf)
+//
+extern inline VOID
+CpuCpuIdEx(INT32 * CpuInfo, INT32 FunctionId, INT32 SubFunctionId);
+
+//////////////////////////////////////////////////
+// TSC Instructions //
+//////////////////////////////////////////////////
+
+//
+// RDTSC
+//
+extern inline UINT64
+ CpuReadTsc(VOID);
+
+//
+// RDTSCP
+//
+extern inline UINT64
+CpuReadTscp(UINT32 * Aux);
+
+//////////////////////////////////////////////////
+// Descriptor Table Instructions //
+//////////////////////////////////////////////////
+
+//
+// SIDT
+//
+extern inline VOID
+CpuSidt(VOID * Idtr);
+
+//////////////////////////////////////////////////
+// TLB Instructions //
+//////////////////////////////////////////////////
+
+//
+// INVLPG
+//
+extern inline VOID
+CpuInvlpg(VOID * Address);
+
+//////////////////////////////////////////////////
+// String Store Instructions //
+//////////////////////////////////////////////////
+
+//
+// STOSQ
+//
+extern inline VOID
+CpuStosQ(UINT64 * Destination, UINT64 Value, SIZE_T Count);
+
+//////////////////////////////////////////////////
+// Bit Scan Instructions //
+//////////////////////////////////////////////////
+
+//
+// BSF 64
+//
+extern inline UCHAR
+CpuBitScanForward64(ULONG * Index, UINT64 Mask);
+
+//////////////////////////////////////////////////
+// Misc Instructions //
+//////////////////////////////////////////////////
+
+//
+// NOP
+//
+extern inline VOID
+ CpuNop(VOID);
+
+//
+// PAUSE
+//
+extern inline VOID
+ CpuPause(VOID);
+
+//
+// Segment Limit
+//
+extern inline ULONG
+CpuSegmentLimit(UINT32 Selector);
+
+//////////////////////////////////////////////////
+// I/O Port Instructions //
+//////////////////////////////////////////////////
+
+//
+// IN Byte
+//
+extern inline UINT8
+CpuIoInByte(UINT16 Port);
+
+//
+// IN Word
+//
+extern inline UINT16
+CpuIoInWord(UINT16 Port);
+
+//
+// IN Dword
+//
+extern inline UINT32
+CpuIoInDword(UINT16 Port);
+
+//
+// IN Byte String
+//
+extern inline VOID
+CpuIoInByteString(UINT16 Port, UINT8 * Data, UINT32 Size);
+
+//
+// IN Word String
+//
+extern inline VOID
+CpuIoInWordString(UINT16 Port, UINT16 * Data, UINT32 Size);
+
+//
+// IN Dword String
+//
+extern inline VOID
+CpuIoInDwordString(UINT16 Port, UINT32 * Data, UINT32 Size);
+
+//
+// OUT Byte
+//
+extern inline VOID
+CpuIoOutByte(UINT16 Port, UINT8 Value);
+
+//
+// OUT Word
+//
+extern inline VOID
+CpuIoOutWord(UINT16 Port, UINT16 Value);
+
+//
+// OUT Dword
+//
+extern inline VOID
+CpuIoOutDword(UINT16 Port, UINT32 Value);
+
+//
+// OUT Byte String
+//
+extern inline VOID
+CpuIoOutByteString(UINT16 Port, UINT8 * Data, UINT32 Count);
+
+//
+// OUT Word String
+//
+extern inline VOID
+CpuIoOutWordString(UINT16 Port, UINT16 * Data, UINT32 Count);
+
+//
+// OUT Dword String
+//
+extern inline VOID
+CpuIoOutDwordString(UINT16 Port, UINT32 * Data, UINT32 Count);
diff --git a/hyperdbg/include/platform/kernel/header/PlatformIntrinsicsVmx.h b/hyperdbg/include/platform/kernel/header/PlatformIntrinsicsVmx.h
index 882c78ba..7b27b1aa 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformIntrinsicsVmx.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformIntrinsicsVmx.h
@@ -1,7 +1,7 @@
/**
* @file PlatformIntrinsicsVmx.h
* @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Cross platform APIs for intrinsic functions
+ * @brief Cross platform APIs for intrinsic functions (VMX instructions)
* @details
* @version 0.19
* @date 2026-04-27
@@ -12,7 +12,6 @@
#pragma once
#if defined(__linux__)
-// # include "../../general/header/GeneralTypes.h"
# include "../../../../include/SDK/HyperDbgSdk.h"
#endif // defined(__linux__)
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/dt-struct.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/dt-struct.cpp
index 622fc74b..71b00549 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/dt-struct.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/dt-struct.cpp
@@ -35,13 +35,13 @@ CommandDtHelp()
"[pid ProcessId (hex)] [padding Padding (yesno)] [offset Offset (yesno)] "
"[bitfield Bitfield (yesno)] [native Native (yesno)] [decl Declaration (yesno)] "
"[def Definitions (yesno)] [func Functions (yesno)] [pragma Pragma (yesno)] "
- "[prefix Prefix (string)] [suffix Suffix (string)] [inline Expantion (string)] "
+ "[prefix Prefix (string)] [suffix Suffix (string)] [inline Expansion (string)] "
"[output FileName (string)]\n\n");
ShowMessages("syntax : \t!dt [Module!SymbolName (string)] [AddressExpression (string)] "
"[padding Padding (yesno)] [offset Offset (yesno)] [bitfield Bitfield (yesno)] "
"[native Native (yesno)] [decl Declaration (yesno)] [def Definitions (yesno)] "
"[func Functions (yesno)] [pragma Pragma (yesno)] [prefix Prefix (string)] "
- "[suffix Suffix (string)] [inline Expantion (string)] [output FileName (string)]\n");
+ "[suffix Suffix (string)] [inline Expansion (string)] [output FileName (string)]\n");
ShowMessages("\n");
ShowMessages("\t\te.g : dt nt!_EPROCESS\n");
diff --git a/hyperdbg/libhyperdbg/code/export/export.cpp b/hyperdbg/libhyperdbg/code/export/export.cpp
index b05a019a..a8f3041e 100644
--- a/hyperdbg/libhyperdbg/code/export/export.cpp
+++ b/hyperdbg/libhyperdbg/code/export/export.cpp
@@ -281,14 +281,14 @@ hyperdbg_u_pause_debuggee()
* @param address The address of the breakpoint
* @param pid The process ID of the breakpoint
* @param tid The thread ID of the breakpoint
- * @param core_numer The core number of the breakpoint
+ * @param core_number The core number of the breakpoint
*
* @return BOOLEAN
*/
BOOLEAN
-hyperdbg_u_set_breakpoint(UINT64 address, UINT32 pid, UINT32 tid, UINT32 core_numer)
+hyperdbg_u_set_breakpoint(UINT64 address, UINT32 pid, UINT32 tid, UINT32 core_number)
{
- return CommandBpRequest(address, pid, tid, core_numer);
+ return CommandBpRequest(address, pid, tid, core_number);
}
/**
diff --git a/hyperdbg/linux/mock/kernel/pch.h b/hyperdbg/linux/mock/kernel/pch.h
index 52f370ff..d581b542 100644
--- a/hyperdbg/linux/mock/kernel/pch.h
+++ b/hyperdbg/linux/mock/kernel/pch.h
@@ -35,4 +35,5 @@
// Platform headers
//
#include "../../../include/platform/kernel/header/PlatformMem.h"
+#include "../../../include/platform/kernel/header/PlatformIntrinsics.h"
#include "../../../include/platform/kernel/header/PlatformIntrinsicsVmx.h"
From 10dfa43696505598d09b3019f92d18c052f6c305 Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 5 May 2026 22:09:51 +0200
Subject: [PATCH 165/323] add articles to README and CHANGELOG
---
CHANGELOG.md | 3 ++-
README.md | 28 ++++++++++++++++++++++++++++
2 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 59f7585f..0b9418d0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,10 +13,11 @@ New release of the HyperDbg Debugger.
- Added Architectural LBR support to the HyperTrace module
- Added the '!lbr' command for performing different Last Branch Record (LBR) operations ([link](https://docs.hyperdbg.org/commands/extension-commands/lbr))
- Added the '!lbrdump' command for dumping saved Last Branch Record (LBR) entries ([link](https://docs.hyperdbg.org/commands/extension-commands/lbrdmp))
-- Added **lbr_save()** and **lbr_print()** functions in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracings/lbr_save))([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracings/lbr_print))
+- Added **lbr_save()** and **lbr_print()** functions in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr_save))([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr_print))
- Added mock application for compiling SDK for Linux
- HyperDbg SDK now compiles on Linux (GCC) for both user-mode and kernel-mode
- VMX instructions are ported to platform-independent files to support Linux
+- All CPU-related intrinsic instructions are ported to platform-independent files to support Linux
### Changed
- Fix the problem of not applying the EAX index in the CPUID event extension command ([link](https://docs.hyperdbg.org/commands/extension-commands/cpuid#parameters))
diff --git a/README.md b/README.md
index ad745bfc..aa6dac48 100644
--- a/README.md
+++ b/README.md
@@ -97,6 +97,33 @@ In case you use one of **HyperDbg**'s components in your work, please consider c
}
```
+**4. [HyperEvade: Countering Anti-Debugging Techniques and Enhancing Transparency in Nested Virtualization using HyperDbg (DEBT'25)](https://www.jot.fm/contents/issue_2026_01/a8.html)** [[PDF](https://www.jot.fm/issues/issue_2026_01/a8.pdf)]
+
+```
+@article{ruytenberg2026hyperevade,
+ title={HyperEvade: Countering Anti-Debugging Techniques and Enhancing Transparency in Nested Virtualization using HyperDbg},
+ author={Ruytenberg, Bj{\"o}rn and Karvandi, Mohammad Sina},
+ journal={Journal of Object Technology},
+ volume={25},
+ number={1},
+ pages={1--3},
+ year={2026},
+ publisher={Association Internationale pour les Technologies Objets}
+}
+```
+
+**5. [Digital Hole: Bypassing Commercial Audio DRM Solutions with DReaMcatcher (EuroSys'26)](https://dl.acm.org/doi/abs/10.1145/3767295.3803583)** [[PDF](https://dl.acm.org/doi/pdf/10.1145/3767295.3803583)]
+
+```
+@inproceedings{ruytenberg2026digital,
+ title={Digital Hole: Bypassing Commercial Audio DRM Solutions with DReaMcatcher},
+ author={Ruytenberg, Bj{\"o}rn and Karvandi, Mohammad Sina and Bos, Herbert and van der Kouwe, Erik and Slowinska, Asia},
+ booktitle={Proceedings of the 21st European Conference on Computer Systems},
+ pages={484--496},
+ year={2026}
+}
+```
+
You can also read [this article](https://research.hyperdbg.org/debugger/kernel-debugger-design/) as it describes the overall architecture, technical difficulties, design decisions, and internals of HyperDbg Debugger, [this article](https://research.hyperdbg.org/vmm/transparency/) about our efforts on vm-exit transparency, [this article](https://research.hyperdbg.org/debugger/chasing-bugs/) about chasing bugs within hypervisors, and [this article](https://research.hyperdbg.org/debugger/gaining-insights/) about new reverse engineering techniques introduced in HyperDbg. More articles, posts, and resources are available at the **[awesome](https://github.com/HyperDbg/awesome)** repo, and in addition, the **[slides](https://github.com/HyperDbg/slides)** repo provides presentation slides for further reference.
@@ -151,6 +178,7 @@ You can also read [this article](https://research.hyperdbg.org/debugger/kernel-d
* Attaching to the User-mode Process and Preventing Execution [link ]
* Intercepting Execution of XSETBV Instructions [link ]
* Writing Library Script Files [link ]
+* Tracing Branches using Last Branch Record [link ][link ][link ][link ]
## How does it work?
From 858434940ae4247284f4f50cc45daaa489db9073 Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 5 May 2026 23:46:12 +0200
Subject: [PATCH 166/323] add CPU intrinsics for user mode
---
hyperdbg/hyperdbg.sln | 4 +
hyperdbg/include/platform/user/code/.gitkeep | 0
.../platform/user/code/platform-intrinsics.c | 97 +++++++++++++++++++
.../user/header/platform-intrinsics.h | 52 ++++++++++
hyperdbg/libhyperdbg/code/common/common.cpp | 2 +-
hyperdbg/libhyperdbg/code/common/spinlock.cpp | 4 +-
.../commands/debugging-commands/cpu.cpp | 8 +-
.../debugger/transparency/transparency.cpp | 10 +-
hyperdbg/libhyperdbg/libhyperdbg.vcxproj | 2 +
.../libhyperdbg/libhyperdbg.vcxproj.filters | 6 ++
hyperdbg/libhyperdbg/pch.h | 5 +
11 files changed, 178 insertions(+), 12 deletions(-)
delete mode 100644 hyperdbg/include/platform/user/code/.gitkeep
create mode 100644 hyperdbg/include/platform/user/code/platform-intrinsics.c
create mode 100644 hyperdbg/include/platform/user/header/platform-intrinsics.h
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 204dbf54..3c099a3d 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -163,9 +163,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{AA41FF
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{4BF590C3-1032-4DD2-BF87-BB9E5781977C}"
+ ProjectSection(SolutionItems) = preProject
+ include\platform\user\code\platform-intrinsics.c = include\platform\user\code\platform-intrinsics.c
+ EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{DBE32379-8D5A-4454-A1B6-ACC407881898}"
ProjectSection(SolutionItems) = preProject
+ include\platform\user\header\platform-intrinsics.h = include\platform\user\header\platform-intrinsics.h
include\platform\user\header\Windows.h = include\platform\user\header\Windows.h
EndProjectSection
EndProject
diff --git a/hyperdbg/include/platform/user/code/.gitkeep b/hyperdbg/include/platform/user/code/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/hyperdbg/include/platform/user/code/platform-intrinsics.c b/hyperdbg/include/platform/user/code/platform-intrinsics.c
new file mode 100644
index 00000000..85393466
--- /dev/null
+++ b/hyperdbg/include/platform/user/code/platform-intrinsics.c
@@ -0,0 +1,97 @@
+/**
+ * @file platform-intrinsics.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for intrinsic functions (x86 instructions)
+ * @details
+ * @version 0.19
+ * @date 2026-05-06
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/platform-intrinsics.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// CPUID Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Execute CPUID
+ *
+ * @param CpuInfo
+ * @param FunctionId
+ */
+inline VOID
+CpuCpuId(INT32 * CpuInfo, INT32 FunctionId)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __cpuid(CpuInfo, FunctionId);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Execute CPUID with sub-leaf
+ *
+ * @param CpuInfo
+ * @param FunctionId
+ * @param SubFunctionId
+ */
+inline VOID
+CpuCpuIdEx(INT32 * CpuInfo, INT32 FunctionId, INT32 SubFunctionId)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __cpuidex(CpuInfo, FunctionId, SubFunctionId);
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+//////////////////////////////////////////////////
+// TSC Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Read Time-Stamp Counter
+ *
+ * @return UINT64
+ */
+inline UINT64
+CpuReadTsc(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __rdtsc();
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
+
+//////////////////////////////////////////////////
+// Misc Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Execute PAUSE (spin-wait hint)
+ */
+inline VOID
+CpuPause(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ _mm_pause();
+#elif defined(__linux__)
+# error "Not implemented"
+#else
+# error "Unsupported platform"
+#endif
+}
diff --git a/hyperdbg/include/platform/user/header/platform-intrinsics.h b/hyperdbg/include/platform/user/header/platform-intrinsics.h
new file mode 100644
index 00000000..a5190195
--- /dev/null
+++ b/hyperdbg/include/platform/user/header/platform-intrinsics.h
@@ -0,0 +1,52 @@
+/**
+ * @file platform-intrinsics.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief User mode Cross platform APIs for intrinsic functions (x86 instructions)
+ * @details
+ * @version 0.19
+ * @date 2026-05-06
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// CPUID Instructions //
+//////////////////////////////////////////////////
+
+//
+// CPUID
+//
+extern inline VOID
+CpuCpuId(INT32 * CpuInfo, INT32 FunctionId);
+
+//
+// CPUID (with sub-leaf)
+//
+extern inline VOID
+CpuCpuIdEx(INT32 * CpuInfo, INT32 FunctionId, INT32 SubFunctionId);
+
+//////////////////////////////////////////////////
+// TSC Instructions //
+//////////////////////////////////////////////////
+
+//
+// RDTSC
+//
+extern inline UINT64
+ CpuReadTsc(VOID);
+
+//////////////////////////////////////////////////
+// Misc Instructions //
+//////////////////////////////////////////////////
+
+//
+// PAUSE
+//
+extern inline VOID
+ CpuPause(VOID);
diff --git a/hyperdbg/libhyperdbg/code/common/common.cpp b/hyperdbg/libhyperdbg/code/common/common.cpp
index 6cf6e689..bad53e8d 100644
--- a/hyperdbg/libhyperdbg/code/common/common.cpp
+++ b/hyperdbg/libhyperdbg/code/common/common.cpp
@@ -922,7 +922,7 @@ ConvertStringVectorToCharPointerArray(const std::string & s)
VOID
CommonCpuidInstruction(UINT32 Func, UINT32 SubFunc, int * CpuInfo)
{
- __cpuidex(CpuInfo, Func, SubFunc);
+ CpuIdEx(CpuInfo, Func, SubFunc);
}
/**
diff --git a/hyperdbg/libhyperdbg/code/common/spinlock.cpp b/hyperdbg/libhyperdbg/code/common/spinlock.cpp
index 4303a100..7668f21d 100644
--- a/hyperdbg/libhyperdbg/code/common/spinlock.cpp
+++ b/hyperdbg/libhyperdbg/code/common/spinlock.cpp
@@ -57,7 +57,7 @@ SpinlockLock(volatile LONG * Lock)
{
for (unsigned i = 0; i < wait; ++i)
{
- _mm_pause();
+ CpuPause();
}
//
@@ -91,7 +91,7 @@ SpinlockLockWithCustomWait(volatile LONG * Lock, unsigned MaximumWait)
{
for (unsigned i = 0; i < wait; ++i)
{
- _mm_pause();
+ CpuPause();
}
//
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/cpu.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/cpu.cpp
index 6cf56b30..017a1ae0 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/cpu.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/cpu.cpp
@@ -140,12 +140,12 @@ private:
// Calling __cpuid with 0x0 as the function_id argument
// gets the number of the highest valid function ID.
//
- __cpuid(cpui.data(), 0);
+ CpuCpuId(cpui.data(), 0);
nIds_ = cpui[0];
for (int i = 0; i <= nIds_; ++i)
{
- __cpuidex(cpui.data(), i, 0);
+ CpuIdEx(cpui.data(), i, 0);
data_.push_back(cpui);
}
@@ -189,7 +189,7 @@ private:
// Calling __cpuid with 0x80000000 as the function_id argument
// gets the number of the highest valid extended ID.
//
- __cpuid(cpui.data(), 0x80000000);
+ CpuCpuId(cpui.data(), 0x80000000);
nExIds_ = cpui[0];
char brand[0x40];
@@ -197,7 +197,7 @@ private:
for (int i = 0x80000000; i <= nExIds_; ++i)
{
- __cpuidex(cpui.data(), i, 0);
+ CpuIdEx(cpui.data(), i, 0);
extdata_.push_back(cpui);
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/transparency/transparency.cpp b/hyperdbg/libhyperdbg/code/debugger/transparency/transparency.cpp
index 48250170..5bf59f65 100644
--- a/hyperdbg/libhyperdbg/code/debugger/transparency/transparency.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/transparency/transparency.cpp
@@ -33,7 +33,7 @@ TransparentModeRdtscDiffVmexit()
//
// Win32
//
- ret = __rdtsc();
+ ret = CpuReadTsc();
/* vm exit forced here. it uses: eax = 0; cpuid; */
@@ -45,7 +45,7 @@ TransparentModeRdtscDiffVmexit()
//
// WIN32
//
- __cpuid(cpuid_result, 0);
+ CpuCpuId(cpuid_result, 0);
//
// GCC
@@ -56,7 +56,7 @@ TransparentModeRdtscDiffVmexit()
//
// WIN32
//
- ret2 = __rdtsc();
+ ret2 = CpuReadTsc();
return ret2 - ret;
}
@@ -80,7 +80,7 @@ TransparentModeRdtscVmexitTracing()
//
// WIN32
//
- ret = __rdtsc();
+ ret = CpuReadTsc();
//
// GCC
@@ -91,7 +91,7 @@ TransparentModeRdtscVmexitTracing()
//
// WIN32
//
- ret2 = __rdtsc();
+ ret2 = CpuReadTsc();
return ret2 - ret;
}
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
index 208441b8..70f6d526 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
@@ -127,6 +127,7 @@
+
@@ -158,6 +159,7 @@
+
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
index c520e640..9443bd3c 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
@@ -173,6 +173,9 @@
header
+
+ header\platform
+
@@ -604,6 +607,9 @@
code\debugger\commands\extension-commands
+
+ code\platform
+
diff --git a/hyperdbg/libhyperdbg/pch.h b/hyperdbg/libhyperdbg/pch.h
index 632ea77a..c8ade1aa 100644
--- a/hyperdbg/libhyperdbg/pch.h
+++ b/hyperdbg/libhyperdbg/pch.h
@@ -140,6 +140,11 @@ typedef const wchar_t *LPCWCHAR, *PCWCHAR;
#include "SDK/imports/user/HyperDbgScriptImports.h"
#include "SDK/imports/user/HyperDbgLibImports.h"
+//
+// Platform-specific intrinsics
+//
+#include "platform/user/header/platform-intrinsics.h"
+
//
// PCI IDs
//
From ef1a9cd1f7f94a97ddbf1d31149e83d38f12b7d0 Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 5 May 2026 23:59:31 +0200
Subject: [PATCH 167/323] add linux implementation of intrinsics functions
---
.../platform/kernel/code/PlatformIntrinsics.c | 72 +++++++++----------
.../kernel/header/PlatformIntrinsics.h | 30 +++++++-
.../platform/user/code/platform-intrinsics.c | 12 ++--
3 files changed, 71 insertions(+), 43 deletions(-)
diff --git a/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c b/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
index 8891b9c1..40094df9 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file PlatformIntrinsics.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Implementation of cross platform APIs for intrinsic functions (x86 instructions)
@@ -30,7 +30,7 @@ CpuReadCr0(VOID)
#if defined(_WIN32) || defined(_WIN64)
return __readcr0();
#elif defined(__linux__)
-# error "Not implemented"
+ ULONG_PTR __val; __asm__ __volatile__("mov %%cr0, %0" : "=r"(__val)); return __val;
#else
# error "Unsupported platform"
#endif
@@ -47,7 +47,7 @@ CpuWriteCr0(ULONG_PTR Cr0Value)
#if defined(_WIN32) || defined(_WIN64)
__writecr0(Cr0Value);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("mov %0, %%cr0" : : "r"(Cr0Value) : "memory");
#else
# error "Unsupported platform"
#endif
@@ -64,7 +64,7 @@ CpuReadCr2(VOID)
#if defined(_WIN32) || defined(_WIN64)
return __readcr2();
#elif defined(__linux__)
-# error "Not implemented"
+ ULONG_PTR __val; __asm__ __volatile__("mov %%cr2, %0" : "=r"(__val)); return __val;
#else
# error "Unsupported platform"
#endif
@@ -81,7 +81,7 @@ CpuWriteCr2(ULONG_PTR Cr2Value)
#if defined(_WIN32) || defined(_WIN64)
__writecr2(Cr2Value);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("mov %0, %%cr2" : : "r"(Cr2Value) : "memory");
#else
# error "Unsupported platform"
#endif
@@ -98,7 +98,7 @@ CpuReadCr3(VOID)
#if defined(_WIN32) || defined(_WIN64)
return __readcr3();
#elif defined(__linux__)
-# error "Not implemented"
+ ULONG_PTR __val; __asm__ __volatile__("mov %%cr3, %0" : "=r"(__val)); return __val;
#else
# error "Unsupported platform"
#endif
@@ -115,7 +115,7 @@ CpuWriteCr3(ULONG_PTR Cr3Value)
#if defined(_WIN32) || defined(_WIN64)
__writecr3(Cr3Value);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("mov %0, %%cr3" : : "r"(Cr3Value) : "memory");
#else
# error "Unsupported platform"
#endif
@@ -132,7 +132,7 @@ CpuReadCr4(VOID)
#if defined(_WIN32) || defined(_WIN64)
return __readcr4();
#elif defined(__linux__)
-# error "Not implemented"
+ ULONG_PTR __val; __asm__ __volatile__("mov %%cr4, %0" : "=r"(__val)); return __val;
#else
# error "Unsupported platform"
#endif
@@ -149,7 +149,7 @@ CpuWriteCr4(ULONG_PTR Cr4Value)
#if defined(_WIN32) || defined(_WIN64)
__writecr4(Cr4Value);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("mov %0, %%cr4" : : "r"(Cr4Value) : "memory");
#else
# error "Unsupported platform"
#endif
@@ -166,7 +166,7 @@ CpuReadCr8(VOID)
#if defined(_WIN32) || defined(_WIN64)
return __readcr8();
#elif defined(__linux__)
-# error "Not implemented"
+ ULONG_PTR __val; __asm__ __volatile__("mov %%cr8, %0" : "=r"(__val)); return __val;
#else
# error "Unsupported platform"
#endif
@@ -183,7 +183,7 @@ CpuWriteCr8(ULONG_PTR Cr8Value)
#if defined(_WIN32) || defined(_WIN64)
__writecr8(Cr8Value);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("mov %0, %%cr8" : : "r"(Cr8Value) : "memory");
#else
# error "Unsupported platform"
#endif
@@ -205,7 +205,7 @@ CpuReadMsr(ULONG MsrAddress)
#if defined(_WIN32) || defined(_WIN64)
return __readmsr(MsrAddress);
#elif defined(__linux__)
-# error "Not implemented"
+ UINT32 __lo, __hi; __asm__ __volatile__("rdmsr" : "=a"(__lo), "=d"(__hi) : "c"(MsrAddress)); return ((UINT64)__hi << 32) | __lo;
#else
# error "Unsupported platform"
#endif
@@ -223,7 +223,7 @@ CpuWriteMsr(ULONG MsrAddress, UINT64 MsrValue)
#if defined(_WIN32) || defined(_WIN64)
__writemsr(MsrAddress, MsrValue);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("wrmsr" : : "c"(MsrAddress), "a"((UINT32)MsrValue), "d"((UINT32)(MsrValue >> 32)));
#else
# error "Unsupported platform"
#endif
@@ -245,7 +245,7 @@ CpuCpuId(INT32 * CpuInfo, INT32 FunctionId)
#if defined(_WIN32) || defined(_WIN64)
__cpuid(CpuInfo, FunctionId);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("cpuid" : "=a"(CpuInfo[0]), "=b"(CpuInfo[1]), "=c"(CpuInfo[2]), "=d"(CpuInfo[3]) : "a"(FunctionId), "c"(0));
#else
# error "Unsupported platform"
#endif
@@ -264,7 +264,7 @@ CpuCpuIdEx(INT32 * CpuInfo, INT32 FunctionId, INT32 SubFunctionId)
#if defined(_WIN32) || defined(_WIN64)
__cpuidex(CpuInfo, FunctionId, SubFunctionId);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("cpuid" : "=a"(CpuInfo[0]), "=b"(CpuInfo[1]), "=c"(CpuInfo[2]), "=d"(CpuInfo[3]) : "a"(FunctionId), "c"(SubFunctionId));
#else
# error "Unsupported platform"
#endif
@@ -285,7 +285,7 @@ CpuReadTsc(VOID)
#if defined(_WIN32) || defined(_WIN64)
return __rdtsc();
#elif defined(__linux__)
-# error "Not implemented"
+ UINT32 __lo, __hi; __asm__ __volatile__("rdtsc" : "=a"(__lo), "=d"(__hi)); return ((UINT64)__hi << 32) | __lo;
#else
# error "Unsupported platform"
#endif
@@ -303,7 +303,7 @@ CpuReadTscp(UINT32 * Aux)
#if defined(_WIN32) || defined(_WIN64)
return __rdtscp(Aux);
#elif defined(__linux__)
-# error "Not implemented"
+ UINT32 __lo, __hi; __asm__ __volatile__("rdtscp" : "=a"(__lo), "=d"(__hi), "=c"(*Aux)); return ((UINT64)__hi << 32) | __lo;
#else
# error "Unsupported platform"
#endif
@@ -324,7 +324,7 @@ CpuSidt(VOID * Idtr)
#if defined(_WIN32) || defined(_WIN64)
__sidt(Idtr);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("sidt %0" : "=m"(*(char *)Idtr) : : "memory");
#else
# error "Unsupported platform"
#endif
@@ -345,7 +345,7 @@ CpuInvlpg(VOID * Address)
#if defined(_WIN32) || defined(_WIN64)
__invlpg(Address);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("invlpg (%0)" : : "r"(Address) : "memory");
#else
# error "Unsupported platform"
#endif
@@ -368,7 +368,7 @@ CpuStosQ(UINT64 * Destination, UINT64 Value, SIZE_T Count)
#if defined(_WIN32) || defined(_WIN64)
__stosq((unsigned __int64 *)Destination, Value, Count);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("rep stosq" : "+D"(Destination), "+c"(Count) : "a"(Value) : "memory");
#else
# error "Unsupported platform"
#endif
@@ -391,7 +391,7 @@ CpuBitScanForward64(ULONG * Index, UINT64 Mask)
#if defined(_WIN32) || defined(_WIN64)
return (UCHAR)_BitScanForward64((unsigned long *)Index, Mask);
#elif defined(__linux__)
-# error "Not implemented"
+ if (!Mask) return 0; *Index = (ULONG)__builtin_ctzll(Mask); return 1;
#else
# error "Unsupported platform"
#endif
@@ -410,7 +410,7 @@ CpuNop(VOID)
#if defined(_WIN32) || defined(_WIN64)
__nop();
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("nop");
#else
# error "Unsupported platform"
#endif
@@ -425,7 +425,7 @@ CpuPause(VOID)
#if defined(_WIN32) || defined(_WIN64)
_mm_pause();
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("pause");
#else
# error "Unsupported platform"
#endif
@@ -443,7 +443,7 @@ CpuSegmentLimit(UINT32 Selector)
#if defined(_WIN32) || defined(_WIN64)
return __segmentlimit(Selector);
#elif defined(__linux__)
-# error "Not implemented"
+ ULONG __limit; __asm__ __volatile__("lsl %1, %0" : "=r"(__limit) : "r"(Selector)); return __limit;
#else
# error "Unsupported platform"
#endif
@@ -465,7 +465,7 @@ CpuIoInByte(UINT16 Port)
#if defined(_WIN32) || defined(_WIN64)
return __inbyte(Port);
#elif defined(__linux__)
-# error "Not implemented"
+ UINT8 __val; __asm__ __volatile__("inb %1, %0" : "=a"(__val) : "Nd"(Port)); return __val;
#else
# error "Unsupported platform"
#endif
@@ -483,7 +483,7 @@ CpuIoInWord(UINT16 Port)
#if defined(_WIN32) || defined(_WIN64)
return __inword(Port);
#elif defined(__linux__)
-# error "Not implemented"
+ UINT16 __val; __asm__ __volatile__("inw %1, %0" : "=a"(__val) : "Nd"(Port)); return __val;
#else
# error "Unsupported platform"
#endif
@@ -501,7 +501,7 @@ CpuIoInDword(UINT16 Port)
#if defined(_WIN32) || defined(_WIN64)
return __indword(Port);
#elif defined(__linux__)
-# error "Not implemented"
+ UINT32 __val; __asm__ __volatile__("inl %1, %0" : "=a"(__val) : "Nd"(Port)); return __val;
#else
# error "Unsupported platform"
#endif
@@ -520,7 +520,7 @@ CpuIoInByteString(UINT16 Port, UINT8 * Data, UINT32 Size)
#if defined(_WIN32) || defined(_WIN64)
__inbytestring(Port, Data, Size);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("rep insb" : "+D"(Data), "+c"(Size) : "d"(Port) : "memory");
#else
# error "Unsupported platform"
#endif
@@ -539,7 +539,7 @@ CpuIoInWordString(UINT16 Port, UINT16 * Data, UINT32 Size)
#if defined(_WIN32) || defined(_WIN64)
__inwordstring(Port, Data, Size);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("rep insw" : "+D"(Data), "+c"(Size) : "d"(Port) : "memory");
#else
# error "Unsupported platform"
#endif
@@ -558,7 +558,7 @@ CpuIoInDwordString(UINT16 Port, UINT32 * Data, UINT32 Size)
#if defined(_WIN32) || defined(_WIN64)
__indwordstring(Port, (unsigned long *)Data, Size);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("rep insl" : "+D"(Data), "+c"(Size) : "d"(Port) : "memory");
#else
# error "Unsupported platform"
#endif
@@ -576,7 +576,7 @@ CpuIoOutByte(UINT16 Port, UINT8 Value)
#if defined(_WIN32) || defined(_WIN64)
__outbyte(Port, Value);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("outb %0, %1" : : "a"(Value), "Nd"(Port));
#else
# error "Unsupported platform"
#endif
@@ -594,7 +594,7 @@ CpuIoOutWord(UINT16 Port, UINT16 Value)
#if defined(_WIN32) || defined(_WIN64)
__outword(Port, Value);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("outw %0, %1" : : "a"(Value), "Nd"(Port));
#else
# error "Unsupported platform"
#endif
@@ -612,7 +612,7 @@ CpuIoOutDword(UINT16 Port, UINT32 Value)
#if defined(_WIN32) || defined(_WIN64)
__outdword(Port, Value);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("outl %0, %1" : : "a"(Value), "Nd"(Port));
#else
# error "Unsupported platform"
#endif
@@ -631,7 +631,7 @@ CpuIoOutByteString(UINT16 Port, UINT8 * Data, UINT32 Count)
#if defined(_WIN32) || defined(_WIN64)
__outbytestring(Port, Data, Count);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("rep outsb" : "+S"(Data), "+c"(Count) : "d"(Port) : "memory");
#else
# error "Unsupported platform"
#endif
@@ -650,7 +650,7 @@ CpuIoOutWordString(UINT16 Port, UINT16 * Data, UINT32 Count)
#if defined(_WIN32) || defined(_WIN64)
__outwordstring(Port, Data, Count);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("rep outsw" : "+S"(Data), "+c"(Count) : "d"(Port) : "memory");
#else
# error "Unsupported platform"
#endif
@@ -669,7 +669,7 @@ CpuIoOutDwordString(UINT16 Port, UINT32 * Data, UINT32 Count)
#if defined(_WIN32) || defined(_WIN64)
__outdwordstring(Port, (unsigned long *)Data, Count);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("rep outsl" : "+S"(Data), "+c"(Count) : "d"(Port) : "memory");
#else
# error "Unsupported platform"
#endif
diff --git a/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h b/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
index c22c63a7..38f1d5f6 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
@@ -105,7 +105,21 @@ CpuWriteMsr(ULONG MsrAddress, UINT64 MsrValue);
#if defined(_WIN32) || defined(_WIN64)
# define CpuReadDr(DrNumber) __readdr(DrNumber)
#elif defined(__linux__)
-# error "Not implemented"
+# define CpuReadDr(DrNumber) \
+ ({ \
+ ULONG_PTR __val; \
+ switch (DrNumber) \
+ { \
+ case 0: __asm__ volatile("mov %%dr0, %0" : "=r"(__val)); break; \
+ case 1: __asm__ volatile("mov %%dr1, %0" : "=r"(__val)); break; \
+ case 2: __asm__ volatile("mov %%dr2, %0" : "=r"(__val)); break; \
+ case 3: __asm__ volatile("mov %%dr3, %0" : "=r"(__val)); break; \
+ case 6: __asm__ volatile("mov %%dr6, %0" : "=r"(__val)); break; \
+ case 7: __asm__ volatile("mov %%dr7, %0" : "=r"(__val)); break; \
+ default: __val = 0; break; \
+ } \
+ __val; \
+ })
#else
# error "Unsupported platform"
#endif
@@ -116,7 +130,19 @@ CpuWriteMsr(ULONG MsrAddress, UINT64 MsrValue);
#if defined(_WIN32) || defined(_WIN64)
# define CpuWriteDr(DrNumber, DrValue) __writedr(DrNumber, DrValue)
#elif defined(__linux__)
-# error "Not implemented"
+# define CpuWriteDr(DrNumber, DrValue) \
+ do { \
+ switch (DrNumber) \
+ { \
+ case 0: __asm__ volatile("mov %0, %%dr0" : : "r"((ULONG_PTR)(DrValue))); break; \
+ case 1: __asm__ volatile("mov %0, %%dr1" : : "r"((ULONG_PTR)(DrValue))); break; \
+ case 2: __asm__ volatile("mov %0, %%dr2" : : "r"((ULONG_PTR)(DrValue))); break; \
+ case 3: __asm__ volatile("mov %0, %%dr3" : : "r"((ULONG_PTR)(DrValue))); break; \
+ case 6: __asm__ volatile("mov %0, %%dr6" : : "r"((ULONG_PTR)(DrValue))); break; \
+ case 7: __asm__ volatile("mov %0, %%dr7" : : "r"((ULONG_PTR)(DrValue))); break; \
+ default: break; \
+ } \
+ } while (0)
#else
# error "Unsupported platform"
#endif
diff --git a/hyperdbg/include/platform/user/code/platform-intrinsics.c b/hyperdbg/include/platform/user/code/platform-intrinsics.c
index 85393466..6bc43027 100644
--- a/hyperdbg/include/platform/user/code/platform-intrinsics.c
+++ b/hyperdbg/include/platform/user/code/platform-intrinsics.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file platform-intrinsics.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Implementation of cross platform APIs for intrinsic functions (x86 instructions)
@@ -31,7 +31,7 @@ CpuCpuId(INT32 * CpuInfo, INT32 FunctionId)
#if defined(_WIN32) || defined(_WIN64)
__cpuid(CpuInfo, FunctionId);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("cpuid" : "=a"(CpuInfo[0]), "=b"(CpuInfo[1]), "=c"(CpuInfo[2]), "=d"(CpuInfo[3]) : "a"(FunctionId), "c"(0));
#else
# error "Unsupported platform"
#endif
@@ -50,7 +50,7 @@ CpuCpuIdEx(INT32 * CpuInfo, INT32 FunctionId, INT32 SubFunctionId)
#if defined(_WIN32) || defined(_WIN64)
__cpuidex(CpuInfo, FunctionId, SubFunctionId);
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("cpuid" : "=a"(CpuInfo[0]), "=b"(CpuInfo[1]), "=c"(CpuInfo[2]), "=d"(CpuInfo[3]) : "a"(FunctionId), "c"(SubFunctionId));
#else
# error "Unsupported platform"
#endif
@@ -71,7 +71,9 @@ CpuReadTsc(VOID)
#if defined(_WIN32) || defined(_WIN64)
return __rdtsc();
#elif defined(__linux__)
-# error "Not implemented"
+ UINT32 __lo, __hi;
+ __asm__ __volatile__("rdtsc" : "=a"(__lo), "=d"(__hi));
+ return ((UINT64)__hi << 32) | __lo;
#else
# error "Unsupported platform"
#endif
@@ -90,7 +92,7 @@ CpuPause(VOID)
#if defined(_WIN32) || defined(_WIN64)
_mm_pause();
#elif defined(__linux__)
-# error "Not implemented"
+ __asm__ __volatile__("pause");
#else
# error "Unsupported platform"
#endif
From 9bf39169091728fddeb5fb66d139dba4fb79a6e6 Mon Sep 17 00:00:00 2001
From: sina
Date: Wed, 6 May 2026 00:50:29 +0200
Subject: [PATCH 168/323] add user level modifications for intrinsics support
in mock
---
hyperdbg/include/SDK/HyperDbgSdk.h | 24 +++--
hyperdbg/include/SDK/headers/BasicTypes.h | 6 ++
.../platform/kernel/code/PlatformIntrinsics.c | 53 +++++++---
.../kernel/header/PlatformIntrinsics.h | 80 ++++++++++-----
hyperdbg/linux/mock/kernel/Makefile | 8 +-
hyperdbg/linux/mock/kernel/mock.c | 2 +
hyperdbg/linux/mock/user/Makefile | 19 +++-
hyperdbg/linux/mock/user/pch.h | 11 +++
.../linux/mock/user/platform-intrinsics.c | 99 +++++++++++++++++++
9 files changed, 246 insertions(+), 56 deletions(-)
create mode 100644 hyperdbg/linux/mock/user/platform-intrinsics.c
diff --git a/hyperdbg/include/SDK/HyperDbgSdk.h b/hyperdbg/include/SDK/HyperDbgSdk.h
index 3e00bb86..dce21ddc 100644
--- a/hyperdbg/include/SDK/HyperDbgSdk.h
+++ b/hyperdbg/include/SDK/HyperDbgSdk.h
@@ -1,5 +1,18 @@
#pragma once
+//
+// General SDK Headers
+//
+#include "SDK/headers/Constants.h"
+#include "SDK/headers/BasicTypes.h"
+#include "SDK/headers/ErrorCodes.h"
+#include "SDK/headers/Connection.h"
+#include "SDK/headers/DataTypes.h"
+#include "SDK/headers/Ioctls.h"
+#include "SDK/headers/Events.h"
+#include "SDK/headers/Symbols.h"
+#include "SDK/headers/HardwareDebugger.h"
+
//
// Devices
//
@@ -11,18 +24,9 @@
#include "SDK/headers/LbrDefinitions.h"
//
-// General SDK Headers
+// Request Packets
//
-#include "SDK/headers/Constants.h"
-#include "SDK/headers/BasicTypes.h"
-#include "SDK/headers/ErrorCodes.h"
-#include "SDK/headers/Connection.h"
-#include "SDK/headers/DataTypes.h"
-#include "SDK/headers/Ioctls.h"
-#include "SDK/headers/Events.h"
#include "SDK/headers/RequestStructures.h"
-#include "SDK/headers/Symbols.h"
-#include "SDK/headers/HardwareDebugger.h"
//
// Asserts
diff --git a/hyperdbg/include/SDK/headers/BasicTypes.h b/hyperdbg/include/SDK/headers/BasicTypes.h
index be71e634..0b0d1963 100644
--- a/hyperdbg/include/SDK/headers/BasicTypes.h
+++ b/hyperdbg/include/SDK/headers/BasicTypes.h
@@ -63,6 +63,9 @@ typedef unsigned __int64 UINT64, *PUINT64;
typedef unsigned __int64 ULONG64, *PULONG64;
typedef unsigned __int64 DWORD64, *PDWORD64;
+typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
+typedef unsigned __int64 ULONGLONG;
+
typedef wchar_t WCHAR;
#elif defined(__linux__) // Linux
@@ -77,6 +80,9 @@ typedef unsigned long long UINT64, *PUINT64;
typedef unsigned long long ULONG64, *PULONG64;
typedef unsigned long long DWORD64, *PDWORD64;
+typedef unsigned long long ULONGLONG;
+typedef unsigned long long ULONG_PTR, *PULONG_PTR;
+
//
// To be fixed later, linux wchar_t is 4 bytes, but windows wchar_t is 2 bytes
//
diff --git a/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c b/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
index 40094df9..2a7a64da 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
@@ -30,7 +30,9 @@ CpuReadCr0(VOID)
#if defined(_WIN32) || defined(_WIN64)
return __readcr0();
#elif defined(__linux__)
- ULONG_PTR __val; __asm__ __volatile__("mov %%cr0, %0" : "=r"(__val)); return __val;
+ ULONG_PTR __val;
+ __asm__ __volatile__("mov %%cr0, %0" : "=r"(__val));
+ return __val;
#else
# error "Unsupported platform"
#endif
@@ -64,7 +66,9 @@ CpuReadCr2(VOID)
#if defined(_WIN32) || defined(_WIN64)
return __readcr2();
#elif defined(__linux__)
- ULONG_PTR __val; __asm__ __volatile__("mov %%cr2, %0" : "=r"(__val)); return __val;
+ ULONG_PTR __val;
+ __asm__ __volatile__("mov %%cr2, %0" : "=r"(__val));
+ return __val;
#else
# error "Unsupported platform"
#endif
@@ -98,7 +102,9 @@ CpuReadCr3(VOID)
#if defined(_WIN32) || defined(_WIN64)
return __readcr3();
#elif defined(__linux__)
- ULONG_PTR __val; __asm__ __volatile__("mov %%cr3, %0" : "=r"(__val)); return __val;
+ ULONG_PTR __val;
+ __asm__ __volatile__("mov %%cr3, %0" : "=r"(__val));
+ return __val;
#else
# error "Unsupported platform"
#endif
@@ -132,7 +138,9 @@ CpuReadCr4(VOID)
#if defined(_WIN32) || defined(_WIN64)
return __readcr4();
#elif defined(__linux__)
- ULONG_PTR __val; __asm__ __volatile__("mov %%cr4, %0" : "=r"(__val)); return __val;
+ ULONG_PTR __val;
+ __asm__ __volatile__("mov %%cr4, %0" : "=r"(__val));
+ return __val;
#else
# error "Unsupported platform"
#endif
@@ -166,7 +174,9 @@ CpuReadCr8(VOID)
#if defined(_WIN32) || defined(_WIN64)
return __readcr8();
#elif defined(__linux__)
- ULONG_PTR __val; __asm__ __volatile__("mov %%cr8, %0" : "=r"(__val)); return __val;
+ ULONG_PTR __val;
+ __asm__ __volatile__("mov %%cr8, %0" : "=r"(__val));
+ return __val;
#else
# error "Unsupported platform"
#endif
@@ -205,7 +215,9 @@ CpuReadMsr(ULONG MsrAddress)
#if defined(_WIN32) || defined(_WIN64)
return __readmsr(MsrAddress);
#elif defined(__linux__)
- UINT32 __lo, __hi; __asm__ __volatile__("rdmsr" : "=a"(__lo), "=d"(__hi) : "c"(MsrAddress)); return ((UINT64)__hi << 32) | __lo;
+ UINT32 __lo, __hi;
+ __asm__ __volatile__("rdmsr" : "=a"(__lo), "=d"(__hi) : "c"(MsrAddress));
+ return ((UINT64)__hi << 32) | __lo;
#else
# error "Unsupported platform"
#endif
@@ -285,7 +297,9 @@ CpuReadTsc(VOID)
#if defined(_WIN32) || defined(_WIN64)
return __rdtsc();
#elif defined(__linux__)
- UINT32 __lo, __hi; __asm__ __volatile__("rdtsc" : "=a"(__lo), "=d"(__hi)); return ((UINT64)__hi << 32) | __lo;
+ UINT32 __lo, __hi;
+ __asm__ __volatile__("rdtsc" : "=a"(__lo), "=d"(__hi));
+ return ((UINT64)__hi << 32) | __lo;
#else
# error "Unsupported platform"
#endif
@@ -303,7 +317,9 @@ CpuReadTscp(UINT32 * Aux)
#if defined(_WIN32) || defined(_WIN64)
return __rdtscp(Aux);
#elif defined(__linux__)
- UINT32 __lo, __hi; __asm__ __volatile__("rdtscp" : "=a"(__lo), "=d"(__hi), "=c"(*Aux)); return ((UINT64)__hi << 32) | __lo;
+ UINT32 __lo, __hi;
+ __asm__ __volatile__("rdtscp" : "=a"(__lo), "=d"(__hi), "=c"(*Aux));
+ return ((UINT64)__hi << 32) | __lo;
#else
# error "Unsupported platform"
#endif
@@ -391,7 +407,10 @@ CpuBitScanForward64(ULONG * Index, UINT64 Mask)
#if defined(_WIN32) || defined(_WIN64)
return (UCHAR)_BitScanForward64((unsigned long *)Index, Mask);
#elif defined(__linux__)
- if (!Mask) return 0; *Index = (ULONG)__builtin_ctzll(Mask); return 1;
+ if (!Mask)
+ return 0;
+ *Index = (ULONG)__builtin_ctzll(Mask);
+ return 1;
#else
# error "Unsupported platform"
#endif
@@ -443,7 +462,9 @@ CpuSegmentLimit(UINT32 Selector)
#if defined(_WIN32) || defined(_WIN64)
return __segmentlimit(Selector);
#elif defined(__linux__)
- ULONG __limit; __asm__ __volatile__("lsl %1, %0" : "=r"(__limit) : "r"(Selector)); return __limit;
+ ULONG __limit;
+ __asm__ __volatile__("lsl %1, %0" : "=r"(__limit) : "r"(Selector));
+ return __limit;
#else
# error "Unsupported platform"
#endif
@@ -465,7 +486,9 @@ CpuIoInByte(UINT16 Port)
#if defined(_WIN32) || defined(_WIN64)
return __inbyte(Port);
#elif defined(__linux__)
- UINT8 __val; __asm__ __volatile__("inb %1, %0" : "=a"(__val) : "Nd"(Port)); return __val;
+ UINT8 __val;
+ __asm__ __volatile__("inb %1, %0" : "=a"(__val) : "Nd"(Port));
+ return __val;
#else
# error "Unsupported platform"
#endif
@@ -483,7 +506,9 @@ CpuIoInWord(UINT16 Port)
#if defined(_WIN32) || defined(_WIN64)
return __inword(Port);
#elif defined(__linux__)
- UINT16 __val; __asm__ __volatile__("inw %1, %0" : "=a"(__val) : "Nd"(Port)); return __val;
+ UINT16 __val;
+ __asm__ __volatile__("inw %1, %0" : "=a"(__val) : "Nd"(Port));
+ return __val;
#else
# error "Unsupported platform"
#endif
@@ -501,7 +526,9 @@ CpuIoInDword(UINT16 Port)
#if defined(_WIN32) || defined(_WIN64)
return __indword(Port);
#elif defined(__linux__)
- UINT32 __val; __asm__ __volatile__("inl %1, %0" : "=a"(__val) : "Nd"(Port)); return __val;
+ UINT32 __val;
+ __asm__ __volatile__("inl %1, %0" : "=a"(__val) : "Nd"(Port));
+ return __val;
#else
# error "Unsupported platform"
#endif
diff --git a/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h b/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
index 38f1d5f6..318b878b 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformIntrinsics.h
@@ -105,20 +105,34 @@ CpuWriteMsr(ULONG MsrAddress, UINT64 MsrValue);
#if defined(_WIN32) || defined(_WIN64)
# define CpuReadDr(DrNumber) __readdr(DrNumber)
#elif defined(__linux__)
-# define CpuReadDr(DrNumber) \
- ({ \
- ULONG_PTR __val; \
- switch (DrNumber) \
- { \
- case 0: __asm__ volatile("mov %%dr0, %0" : "=r"(__val)); break; \
- case 1: __asm__ volatile("mov %%dr1, %0" : "=r"(__val)); break; \
- case 2: __asm__ volatile("mov %%dr2, %0" : "=r"(__val)); break; \
- case 3: __asm__ volatile("mov %%dr3, %0" : "=r"(__val)); break; \
- case 6: __asm__ volatile("mov %%dr6, %0" : "=r"(__val)); break; \
- case 7: __asm__ volatile("mov %%dr7, %0" : "=r"(__val)); break; \
- default: __val = 0; break; \
- } \
- __val; \
+# define CpuReadDr(DrNumber) \
+ ({ \
+ ULONG_PTR __val; \
+ switch (DrNumber) \
+ { \
+ case 0: \
+ __asm__ volatile("mov %%dr0, %0" : "=r"(__val)); \
+ break; \
+ case 1: \
+ __asm__ volatile("mov %%dr1, %0" : "=r"(__val)); \
+ break; \
+ case 2: \
+ __asm__ volatile("mov %%dr2, %0" : "=r"(__val)); \
+ break; \
+ case 3: \
+ __asm__ volatile("mov %%dr3, %0" : "=r"(__val)); \
+ break; \
+ case 6: \
+ __asm__ volatile("mov %%dr6, %0" : "=r"(__val)); \
+ break; \
+ case 7: \
+ __asm__ volatile("mov %%dr7, %0" : "=r"(__val)); \
+ break; \
+ default: \
+ __val = 0; \
+ break; \
+ } \
+ __val; \
})
#else
# error "Unsupported platform"
@@ -130,18 +144,32 @@ CpuWriteMsr(ULONG MsrAddress, UINT64 MsrValue);
#if defined(_WIN32) || defined(_WIN64)
# define CpuWriteDr(DrNumber, DrValue) __writedr(DrNumber, DrValue)
#elif defined(__linux__)
-# define CpuWriteDr(DrNumber, DrValue) \
- do { \
- switch (DrNumber) \
- { \
- case 0: __asm__ volatile("mov %0, %%dr0" : : "r"((ULONG_PTR)(DrValue))); break; \
- case 1: __asm__ volatile("mov %0, %%dr1" : : "r"((ULONG_PTR)(DrValue))); break; \
- case 2: __asm__ volatile("mov %0, %%dr2" : : "r"((ULONG_PTR)(DrValue))); break; \
- case 3: __asm__ volatile("mov %0, %%dr3" : : "r"((ULONG_PTR)(DrValue))); break; \
- case 6: __asm__ volatile("mov %0, %%dr6" : : "r"((ULONG_PTR)(DrValue))); break; \
- case 7: __asm__ volatile("mov %0, %%dr7" : : "r"((ULONG_PTR)(DrValue))); break; \
- default: break; \
- } \
+# define CpuWriteDr(DrNumber, DrValue) \
+ do \
+ { \
+ switch (DrNumber) \
+ { \
+ case 0: \
+ __asm__ volatile("mov %0, %%dr0" : : "r"((ULONG_PTR)(DrValue))); \
+ break; \
+ case 1: \
+ __asm__ volatile("mov %0, %%dr1" : : "r"((ULONG_PTR)(DrValue))); \
+ break; \
+ case 2: \
+ __asm__ volatile("mov %0, %%dr2" : : "r"((ULONG_PTR)(DrValue))); \
+ break; \
+ case 3: \
+ __asm__ volatile("mov %0, %%dr3" : : "r"((ULONG_PTR)(DrValue))); \
+ break; \
+ case 6: \
+ __asm__ volatile("mov %0, %%dr6" : : "r"((ULONG_PTR)(DrValue))); \
+ break; \
+ case 7: \
+ __asm__ volatile("mov %0, %%dr7" : : "r"((ULONG_PTR)(DrValue))); \
+ break; \
+ default: \
+ break; \
+ } \
} while (0)
#else
# error "Unsupported platform"
diff --git a/hyperdbg/linux/mock/kernel/Makefile b/hyperdbg/linux/mock/kernel/Makefile
index a780931f..b8e5c4e6 100644
--- a/hyperdbg/linux/mock/kernel/Makefile
+++ b/hyperdbg/linux/mock/kernel/Makefile
@@ -3,21 +3,25 @@ PWD := $(shell pwd)
obj-m := HyperDbg.o
HyperDbg-objs := mock.o \
PlatformMem.o \
- PlatformIntrinsicsVmx.o
+ PlatformIntrinsicsVmx.o \
+ PlatformIntrinsics.o
ccflags-y += -I$(PWD)/../../../include
ccflags-y += -I$(PWD)/../../../include/platform/kernel/header
ccflags-y += -I$(PWD)/../../../include/platform/kernel/code
-all: clean PlatformMem.c PlatformIntrinsicsVmx.c
+all: clean PlatformMem.c PlatformIntrinsicsVmx.c PlatformIntrinsics.c
$(MAKE) -C $(KDIR) M=$(PWD) modules
PlatformMem.c:
cp ../../../include/platform/kernel/code/PlatformMem.c $(PWD)/PlatformMem.c
+PlatformIntrinsics.c:
+ cp ../../../include/platform/kernel/code/PlatformIntrinsics.c $(PWD)/PlatformIntrinsics.c
PlatformIntrinsicsVmx.c:
cp ../../../include/platform/kernel/code/PlatformIntrinsicsVmx.c $(PWD)/PlatformIntrinsicsVmx.c
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
rm -f $(PWD)/PlatformMem.c
+ rm -f $(PWD)/PlatformIntrinsics.c
rm -f $(PWD)/PlatformIntrinsicsVmx.c
\ No newline at end of file
diff --git a/hyperdbg/linux/mock/kernel/mock.c b/hyperdbg/linux/mock/kernel/mock.c
index ed830f83..47d0d516 100644
--- a/hyperdbg/linux/mock/kernel/mock.c
+++ b/hyperdbg/linux/mock/kernel/mock.c
@@ -66,6 +66,8 @@ mock_init(void)
VmxVmread64(0, 0); // Just to test the intrinsic wrapper compiles and links correctly
+ CpuReadMsr(0x1); // Just to test the intrinsic wrapper compiles and links correctly
+
/////////////////////////////////////////////////////////////////////////////////////
return 0;
diff --git a/hyperdbg/linux/mock/user/Makefile b/hyperdbg/linux/mock/user/Makefile
index 6ba7944e..acfaf1f3 100644
--- a/hyperdbg/linux/mock/user/Makefile
+++ b/hyperdbg/linux/mock/user/Makefile
@@ -1,18 +1,27 @@
CC = gcc
-CFLAGS = -Wall -Wextra -std=c11 -O2 -I../../../include
+PWD := $(shell pwd)
+CFLAGS = -Wall -Wextra -std=c11 -O2
+CFLAGS += -I$(PWD)/../../../include
+CFLAGS += -I$(PWD)/../../../include/platform/user/header
+CFLAGS += -I$(PWD)/../../../include/platform/user/code
TARGET = mock
-SRCS = mock.c
+SRCS = mock.c \
+ platform-intrinsics.c
OBJS = $(SRCS:.c=.o)
.PHONY: all clean
-all: $(TARGET)
+all: clean platform-intrinsics.c $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
%.o: %.c pch.h
- $(CC) $(CFLAGS) -c -o $@ $<
+ $(CC) $(CFLAGS) -c -o $@ $
+
+platform-intrinsics.c:
+ cp ../../../include/platform/user/code/platform-intrinsics.c $(PWD)/platform-intrinsics.c
clean:
- rm -f $(OBJS) $(TARGET)
\ No newline at end of file
+ rm -f $(OBJS) $(TARGET)
+ rm -f $(PWD)/platform-intrinsics.c
\ No newline at end of file
diff --git a/hyperdbg/linux/mock/user/pch.h b/hyperdbg/linux/mock/user/pch.h
index c35600c1..6bc2c282 100644
--- a/hyperdbg/linux/mock/user/pch.h
+++ b/hyperdbg/linux/mock/user/pch.h
@@ -12,6 +12,12 @@
#ifndef PCH_H
#define PCH_H
+//
+// Scope definitions
+//
+#define HYPERDBG_USER_MODE
+#define HYPERDBG_LINUX
+
#include
#include
#include
@@ -23,4 +29,9 @@
//
#include "../../../include/SDK/HyperDbgSdk.h"
+//
+// Platform headers
+//
+#include "../../../include/platform/user/header/platform-intrinsics.h"
+
#endif // PCH_H
diff --git a/hyperdbg/linux/mock/user/platform-intrinsics.c b/hyperdbg/linux/mock/user/platform-intrinsics.c
new file mode 100644
index 00000000..6bc43027
--- /dev/null
+++ b/hyperdbg/linux/mock/user/platform-intrinsics.c
@@ -0,0 +1,99 @@
+/**
+ * @file platform-intrinsics.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for intrinsic functions (x86 instructions)
+ * @details
+ * @version 0.19
+ * @date 2026-05-06
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/platform-intrinsics.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// CPUID Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Execute CPUID
+ *
+ * @param CpuInfo
+ * @param FunctionId
+ */
+inline VOID
+CpuCpuId(INT32 * CpuInfo, INT32 FunctionId)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __cpuid(CpuInfo, FunctionId);
+#elif defined(__linux__)
+ __asm__ __volatile__("cpuid" : "=a"(CpuInfo[0]), "=b"(CpuInfo[1]), "=c"(CpuInfo[2]), "=d"(CpuInfo[3]) : "a"(FunctionId), "c"(0));
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Execute CPUID with sub-leaf
+ *
+ * @param CpuInfo
+ * @param FunctionId
+ * @param SubFunctionId
+ */
+inline VOID
+CpuCpuIdEx(INT32 * CpuInfo, INT32 FunctionId, INT32 SubFunctionId)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ __cpuidex(CpuInfo, FunctionId, SubFunctionId);
+#elif defined(__linux__)
+ __asm__ __volatile__("cpuid" : "=a"(CpuInfo[0]), "=b"(CpuInfo[1]), "=c"(CpuInfo[2]), "=d"(CpuInfo[3]) : "a"(FunctionId), "c"(SubFunctionId));
+#else
+# error "Unsupported platform"
+#endif
+}
+
+//////////////////////////////////////////////////
+// TSC Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Read Time-Stamp Counter
+ *
+ * @return UINT64
+ */
+inline UINT64
+CpuReadTsc(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ return __rdtsc();
+#elif defined(__linux__)
+ UINT32 __lo, __hi;
+ __asm__ __volatile__("rdtsc" : "=a"(__lo), "=d"(__hi));
+ return ((UINT64)__hi << 32) | __lo;
+#else
+# error "Unsupported platform"
+#endif
+}
+
+//////////////////////////////////////////////////
+// Misc Instructions //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Execute PAUSE (spin-wait hint)
+ */
+inline VOID
+CpuPause(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ _mm_pause();
+#elif defined(__linux__)
+ __asm__ __volatile__("pause");
+#else
+# error "Unsupported platform"
+#endif
+}
From 10dd66d416e57471818fb54e5eeff08c1cf6456e Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 8 May 2026 16:44:42 +0200
Subject: [PATCH 169/323] add synchronization functions for DPC routines of
Windows
---
hyperdbg/hyperdbg.sln | 2 +
hyperdbg/hyperhv/code/broadcast/DpcRoutines.c | 473 +++++-------------
hyperdbg/hyperhv/header/common/Dpc.h | 39 --
hyperdbg/hyperhv/hyperhv.vcxproj | 3 +-
hyperdbg/hyperhv/hyperhv.vcxproj.filters | 9 +-
hyperdbg/hyperhv/pch.h | 2 +-
.../code/debugger/broadcast/DpcRoutines.c | 44 +-
hyperdbg/hyperkd/header/common/Dpc.h | 39 --
hyperdbg/hyperkd/header/pch.h | 6 +-
hyperdbg/hyperkd/hyperkd.vcxproj | 3 +-
hyperdbg/hyperkd/hyperkd.vcxproj.filters | 9 +-
.../hypertrace/code/broadcast/DpcRoutines.c | 44 +-
hyperdbg/hypertrace/header/pch.h | 2 +-
hyperdbg/hypertrace/hypertrace.vcxproj | 3 +-
.../hypertrace/hypertrace.vcxproj.filters | 9 +-
.../platform/kernel/code/PlatformBroadcast.c | 44 ++
.../kernel/header/PlatformBroadcast.h} | 22 +-
17 files changed, 244 insertions(+), 509 deletions(-)
delete mode 100644 hyperdbg/hyperhv/header/common/Dpc.h
delete mode 100644 hyperdbg/hyperkd/header/common/Dpc.h
create mode 100644 hyperdbg/include/platform/kernel/code/PlatformBroadcast.c
rename hyperdbg/{hypertrace/header/broadcast/Dpc.h => include/platform/kernel/header/PlatformBroadcast.h} (58%)
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 3c099a3d..b16f1794 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -148,6 +148,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "kernel", "kernel", "{D0E5A2
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{6498728B-D9B0-4CAB-A9E3-ACE5BC371010}"
ProjectSection(SolutionItems) = preProject
+ include\platform\kernel\code\PlatformBroadcast.c = include\platform\kernel\code\PlatformBroadcast.c
include\platform\kernel\code\PlatformIntrinsics.c = include\platform\kernel\code\PlatformIntrinsics.c
include\platform\kernel\code\PlatformIntrinsicsVmx.c = include\platform\kernel\code\PlatformIntrinsicsVmx.c
include\platform\kernel\code\PlatformMem.c = include\platform\kernel\code\PlatformMem.c
@@ -156,6 +157,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{AA41FFF1-A730-433E-8D26-13DA5B653825}"
ProjectSection(SolutionItems) = preProject
include\platform\kernel\header\pch.h = include\platform\kernel\header\pch.h
+ include\platform\kernel\header\PlatformBroadcast.h = include\platform\kernel\header\PlatformBroadcast.h
include\platform\kernel\header\PlatformIntrinsics.h = include\platform\kernel\header\PlatformIntrinsics.h
include\platform\kernel\header\PlatformIntrinsicsVmx.h = include\platform\kernel\header\PlatformIntrinsicsVmx.h
include\platform\kernel\header\PlatformMem.h = include\platform\kernel\header\PlatformMem.h
diff --git a/hyperdbg/hyperhv/code/broadcast/DpcRoutines.c b/hyperdbg/hyperhv/code/broadcast/DpcRoutines.c
index 89bce798..0f1e491d 100644
--- a/hyperdbg/hyperhv/code/broadcast/DpcRoutines.c
+++ b/hyperdbg/hyperhv/code/broadcast/DpcRoutines.c
@@ -135,15 +135,10 @@ DpcRoutinePerformVirtualization(KDPC * Dpc, PVOID DeferredContext, PVOID SystemA
//
VmxPerformVirtualizationOnSpecificCore();
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
return TRUE;
}
@@ -454,15 +449,10 @@ DpcRoutineEnableMovToCr3Exiting(KDPC * Dpc, PVOID DeferredContext, PVOID SystemA
//
AsmVmxVmcall(VMCALL_ENABLE_MOV_TO_CR3_EXITING, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -485,15 +475,10 @@ DpcRoutineChangeToMbecSupportedEptp(KDPC * Dpc, PVOID DeferredContext, PVOID Sys
//
AsmVmxVmcall(VMCALL_CHANGE_TO_MBEC_SUPPORTED_EPTP, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -516,15 +501,10 @@ DpcRoutineRestoreToNormalEptp(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArg
//
AsmVmxVmcall(VMCALL_RESTORE_TO_NORMAL_EPTP, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -547,15 +527,10 @@ DpcRoutineEnableOrDisableMbec(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArg
//
AsmVmxVmcall(VMCALL_DISABLE_OR_ENABLE_MBEC, (UINT64)DeferredContext, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -578,15 +553,10 @@ DpcRoutineDisableMovToCr3Exiting(KDPC * Dpc, PVOID DeferredContext, PVOID System
//
AsmVmxVmcall(VMCALL_DISABLE_MOV_TO_CR3_EXITING, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -609,15 +579,10 @@ DpcRoutineEnableEferSyscallEvents(KDPC * Dpc, PVOID DeferredContext, PVOID Syste
//
AsmVmxVmcall(VMCALL_ENABLE_SYSCALL_HOOK_EFER, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -640,15 +605,10 @@ DpcRoutineDisableEferSyscallEvents(KDPC * Dpc, PVOID DeferredContext, PVOID Syst
//
AsmVmxVmcall(VMCALL_DISABLE_SYSCALL_HOOK_EFER, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -671,15 +631,10 @@ DpcRoutineEnablePml(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
//
AsmVmxVmcall(VMCALL_ENABLE_DIRTY_LOGGING_MECHANISM, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -702,15 +657,10 @@ DpcRoutineDisablePml(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, P
//
AsmVmxVmcall(VMCALL_DISABLE_DIRTY_LOGGING_MECHANISM, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -732,15 +682,10 @@ DpcRoutineChangeMsrBitmapReadOnAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID
//
AsmVmxVmcall(VMCALL_CHANGE_MSR_BITMAP_READ, (UINT64)DeferredContext, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -763,15 +708,10 @@ DpcRoutineResetMsrBitmapReadOnAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID
//
AsmVmxVmcall(VMCALL_RESET_MSR_BITMAP_READ, NULL64_ZERO, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -793,15 +733,10 @@ DpcRoutineChangeMsrBitmapWriteOnAllCores(KDPC * Dpc, PVOID DeferredContext, PVOI
//
AsmVmxVmcall(VMCALL_CHANGE_MSR_BITMAP_WRITE, (UINT64)DeferredContext, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -824,15 +759,10 @@ DpcRoutineResetMsrBitmapWriteOnAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID
//
AsmVmxVmcall(VMCALL_RESET_MSR_BITMAP_WRITE, NULL64_ZERO, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -855,15 +785,10 @@ DpcRoutineEnableRdtscExitingAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID Sy
//
AsmVmxVmcall(VMCALL_SET_RDTSC_EXITING, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -886,15 +811,10 @@ DpcRoutineDisableRdtscExitingAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID S
//
AsmVmxVmcall(VMCALL_UNSET_RDTSC_EXITING, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -919,15 +839,10 @@ DpcRoutineDisableRdtscExitingForClearingTscEventsAllCores(KDPC * Dpc, PVOID Defe
//
AsmVmxVmcall(VMCALL_DISABLE_RDTSC_EXITING_ONLY_FOR_TSC_EVENTS, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -951,15 +866,10 @@ DpcRoutineDisableMov2DrExitingForClearingDrEventsAllCores(KDPC * Dpc, PVOID Defe
//
AsmVmxVmcall(VMCALL_DISABLE_MOV_TO_HW_DR_EXITING_ONLY_FOR_DR_EVENTS, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -982,15 +892,10 @@ DpcRoutineDisableMov2CrExitingForClearingCrEventsAllCores(KDPC * Dpc, DEBUGGER_E
//
AsmVmxVmcall(VMCALL_DISABLE_MOV_TO_CR_EXITING_ONLY_FOR_CR_EVENTS, EventOptions->OptionalParam1, EventOptions->OptionalParam2, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1013,15 +918,10 @@ DpcRoutineEnableRdpmcExitingAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID Sy
//
AsmVmxVmcall(VMCALL_SET_RDPMC_EXITING, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1044,15 +944,10 @@ DpcRoutineDisableRdpmcExitingAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID S
//
AsmVmxVmcall(VMCALL_UNSET_RDPMC_EXITING, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1074,15 +969,10 @@ DpcRoutineSetExceptionBitmapOnAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID
//
AsmVmxVmcall(VMCALL_SET_EXCEPTION_BITMAP, (UINT64)DeferredContext, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1104,15 +994,10 @@ DpcRoutineUnsetExceptionBitmapOnAllCores(KDPC * Dpc, PVOID DeferredContext, PVOI
//
AsmVmxVmcall(VMCALL_UNSET_EXCEPTION_BITMAP, (UINT64)DeferredContext, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1139,15 +1024,10 @@ DpcRoutineResetExceptionBitmapOnlyOnClearingExceptionEventsOnAllCores(KDPC * Dpc
//
AsmVmxVmcall(VMCALL_RESET_EXCEPTION_BITMAP_ONLY_ON_CLEARING_EXCEPTION_EVENTS, NULL64_ZERO, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1170,15 +1050,10 @@ DpcRoutineEnableMovDebigRegisterExitingAllCores(KDPC * Dpc, PVOID DeferredContex
//
AsmVmxVmcall(VMCALL_ENABLE_MOV_TO_DEBUG_REGS_EXITING, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1200,15 +1075,10 @@ DpcRoutineEnableMovControlRegisterExitingAllCores(KDPC * Dpc, DEBUGGER_EVENT_OPT
//
AsmVmxVmcall(VMCALL_ENABLE_MOV_TO_CONTROL_REGS_EXITING, EventOptions->OptionalParam1, EventOptions->OptionalParam2, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1230,15 +1100,10 @@ DpcRoutineDisableMovControlRegisterExitingAllCores(KDPC * Dpc, DEBUGGER_EVENT_OP
//
AsmVmxVmcall(VMCALL_DISABLE_MOV_TO_CONTROL_REGS_EXITING, EventOptions->OptionalParam1, EventOptions->OptionalParam2, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1261,15 +1126,10 @@ DpcRoutineDisableMovDebigRegisterExitingAllCores(KDPC * Dpc, PVOID DeferredConte
//
AsmVmxVmcall(VMCALL_DISABLE_MOV_TO_DEBUG_REGS_EXITING, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1292,15 +1152,10 @@ DpcRoutineSetEnableExternalInterruptExitingOnAllCores(KDPC * Dpc, PVOID Deferred
//
AsmVmxVmcall(VMCALL_ENABLE_EXTERNAL_INTERRUPT_EXITING, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1326,15 +1181,10 @@ DpcRoutineSetDisableExternalInterruptExitingOnlyOnClearingInterruptEventsOnAllCo
//
AsmVmxVmcall(VMCALL_DISABLE_EXTERNAL_INTERRUPT_EXITING_ONLY_TO_CLEAR_INTERRUPT_COMMANDS, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1356,15 +1206,10 @@ DpcRoutineChangeIoBitmapOnAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID Syst
//
AsmVmxVmcall(VMCALL_CHANGE_IO_BITMAP, (UINT64)DeferredContext, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1387,15 +1232,10 @@ DpcRoutineResetIoBitmapOnAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID Syste
//
AsmVmxVmcall(VMCALL_RESET_IO_BITMAP, NULL64_ZERO, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1418,15 +1258,10 @@ DpcRoutineEnableBreakpointOnExceptionBitmapOnAllCores(KDPC * Dpc, PVOID Deferred
//
AsmVmxVmcall(VMCALL_SET_EXCEPTION_BITMAP, EXCEPTION_VECTOR_BREAKPOINT, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1449,15 +1284,10 @@ DpcRoutineDisableBreakpointOnExceptionBitmapOnAllCores(KDPC * Dpc, PVOID Deferre
//
AsmVmxVmcall(VMCALL_UNSET_EXCEPTION_BITMAP, EXCEPTION_VECTOR_BREAKPOINT, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1480,15 +1310,10 @@ DpcRoutineEnableNmiVmexitOnAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID Sys
//
AsmVmxVmcall(VMCALL_SET_VM_EXIT_ON_NMIS, NULL64_ZERO, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1511,15 +1336,10 @@ DpcRoutineDisableNmiVmexitOnAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID Sy
//
AsmVmxVmcall(VMCALL_UNSET_VM_EXIT_ON_NMIS, NULL64_ZERO, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1547,15 +1367,10 @@ DpcRoutineEnableDbAndBpExitingOnAllCores(KDPC * Dpc, PVOID DeferredContext, PVOI
//
AsmVmxVmcall(VMCALL_SET_EXCEPTION_BITMAP, EXCEPTION_VECTOR_DEBUG_BREAKPOINT, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1583,15 +1398,10 @@ DpcRoutineDisableDbAndBpExitingOnAllCores(KDPC * Dpc, PVOID DeferredContext, PVO
//
AsmVmxVmcall(VMCALL_UNSET_EXCEPTION_BITMAP, EXCEPTION_VECTOR_DEBUG_BREAKPOINT, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1614,15 +1424,10 @@ DpcRoutineRemoveHookAndInvalidateAllEntriesOnAllCores(KDPC * Dpc, PVOID Deferred
//
AsmVmxVmcall(VMCALL_UNHOOK_ALL_PAGES, NULL64_ZERO, NULL64_ZERO, NULL64_ZERO);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1647,15 +1452,10 @@ DpcRoutineRemoveHookAndInvalidateSingleEntryOnAllCores(KDPC * Dpc, PVOID Deferre
//
AsmVmxVmcall(VMCALL_UNHOOK_SINGLE_PAGE, UnhookingDetail->PhysicalAddress, UnhookingDetail->OriginalEntry, NULL64_ZERO);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1690,15 +1490,10 @@ DpcRoutineInvalidateEptOnAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID Syste
NULL64_ZERO);
}
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1721,15 +1516,10 @@ DpcRoutineInitializeGuest(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgumen
//
AsmVmxSaveState();
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -1755,13 +1545,8 @@ DpcRoutineTerminateGuest(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument
LogError("Err, there were an error terminating vmx");
}
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
diff --git a/hyperdbg/hyperhv/header/common/Dpc.h b/hyperdbg/hyperhv/header/common/Dpc.h
deleted file mode 100644
index 30b419ec..00000000
--- a/hyperdbg/hyperhv/header/common/Dpc.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * @file Dpc.h
- * @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Definition for Windows DPC functions
- * @details
- * @version 0.1
- * @date 2020-04-10
- *
- * @copyright This project is released under the GNU Public License v3.
- *
- */
-#pragma once
-
-//////////////////////////////////////////////////
-// Functions //
-//////////////////////////////////////////////////
-
-NTKERNELAPI
-_IRQL_requires_max_(APC_LEVEL)
-_IRQL_requires_min_(PASSIVE_LEVEL)
-_IRQL_requires_same_
-VOID
-KeGenericCallDpc(
- _In_ PKDEFERRED_ROUTINE Routine,
- _In_opt_ PVOID Context);
-
-NTKERNELAPI
-_IRQL_requires_(DISPATCH_LEVEL)
-_IRQL_requires_same_
-VOID
-KeSignalCallDpcDone(
- _In_ PVOID SystemArgument1);
-
-NTKERNELAPI
-_IRQL_requires_(DISPATCH_LEVEL)
-_IRQL_requires_same_
-LOGICAL
-KeSignalCallDpcSynchronize(
- _In_ PVOID SystemArgument2);
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj b/hyperdbg/hyperhv/hyperhv.vcxproj
index 799267cd..e81659f7 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj
@@ -132,6 +132,7 @@
+
@@ -240,6 +241,7 @@
+
@@ -248,7 +250,6 @@
-
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj.filters b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
index 8af5ccbe..ab96d623 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj.filters
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
@@ -335,6 +335,9 @@
code\platform
+
+ code\platform
+
@@ -343,9 +346,6 @@
header\common
-
- header\common
-
header\common
@@ -619,6 +619,9 @@
header\platform
+
+ header\platform
+
diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h
index a80e7b97..cd708e28 100644
--- a/hyperdbg/hyperhv/pch.h
+++ b/hyperdbg/hyperhv/pch.h
@@ -62,6 +62,7 @@
//
#include "platform/kernel/header/PlatformMem.h"
#include "platform/kernel/header/PlatformIntrinsics.h"
+#include "platform/kernel/header/PlatformBroadcast.h"
//
// Platform intrinsics headers
@@ -97,7 +98,6 @@
#include "vmm/vmx/VmxBroadcast.h"
#include "memory/MemoryMapper.h"
#include "interface/Dispatch.h"
-#include "common/Dpc.h"
#include "common/Msr.h"
#include "memory/PoolManager.h"
#include "common/Trace.h"
diff --git a/hyperdbg/hyperkd/code/debugger/broadcast/DpcRoutines.c b/hyperdbg/hyperkd/code/debugger/broadcast/DpcRoutines.c
index e41bf88f..9296f576 100644
--- a/hyperdbg/hyperkd/code/debugger/broadcast/DpcRoutines.c
+++ b/hyperdbg/hyperkd/code/debugger/broadcast/DpcRoutines.c
@@ -202,15 +202,10 @@ DpcRoutineWriteMsrToAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgu
//
CpuWriteMsr((ULONG)CurrentDebuggingState->MsrState.Msr, CurrentDebuggingState->MsrState.Value);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -236,15 +231,10 @@ DpcRoutineReadMsrToAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgum
//
CurrentDebuggingState->MsrState.Value = CpuReadMsr((ULONG)CurrentDebuggingState->MsrState.Msr);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -267,15 +257,10 @@ DpcRoutineVmExitAndHaltSystemAllCores(KDPC * Dpc, PVOID DeferredContext, PVOID S
//
VmFuncVmxVmcall(DEBUGGER_VMCALL_VM_EXIT_HALT_SYSTEM, 0, 0, 0);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
}
/**
@@ -298,15 +283,10 @@ DpcRoutineSetHardwareDebugRegisters(KDPC * Dpc, PVOID DeferredContext, PVOID Sys
//
UdApplyHardwareDebugRegister(DeferredContext);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
return TRUE;
}
diff --git a/hyperdbg/hyperkd/header/common/Dpc.h b/hyperdbg/hyperkd/header/common/Dpc.h
deleted file mode 100644
index 30b419ec..00000000
--- a/hyperdbg/hyperkd/header/common/Dpc.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * @file Dpc.h
- * @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Definition for Windows DPC functions
- * @details
- * @version 0.1
- * @date 2020-04-10
- *
- * @copyright This project is released under the GNU Public License v3.
- *
- */
-#pragma once
-
-//////////////////////////////////////////////////
-// Functions //
-//////////////////////////////////////////////////
-
-NTKERNELAPI
-_IRQL_requires_max_(APC_LEVEL)
-_IRQL_requires_min_(PASSIVE_LEVEL)
-_IRQL_requires_same_
-VOID
-KeGenericCallDpc(
- _In_ PKDEFERRED_ROUTINE Routine,
- _In_opt_ PVOID Context);
-
-NTKERNELAPI
-_IRQL_requires_(DISPATCH_LEVEL)
-_IRQL_requires_same_
-VOID
-KeSignalCallDpcDone(
- _In_ PVOID SystemArgument1);
-
-NTKERNELAPI
-_IRQL_requires_(DISPATCH_LEVEL)
-_IRQL_requires_same_
-LOGICAL
-KeSignalCallDpcSynchronize(
- _In_ PVOID SystemArgument2);
diff --git a/hyperdbg/hyperkd/header/pch.h b/hyperdbg/hyperkd/header/pch.h
index d611422f..5dfab13a 100644
--- a/hyperdbg/hyperkd/header/pch.h
+++ b/hyperdbg/hyperkd/header/pch.h
@@ -86,6 +86,7 @@
//
#include "platform/kernel/header/PlatformMem.h"
#include "platform/kernel/header/PlatformIntrinsics.h"
+#include "platform/kernel/header/PlatformBroadcast.h"
//
// Optimization algorithms
@@ -135,11 +136,6 @@
#include "header/debugger/broadcast/HaltedRoutines.h"
#include "header/debugger/broadcast/HaltedBroadcast.h"
-//
-// DPC Headers
-//
-#include "header/common/Dpc.h"
-
//
// Events & Meta events
//
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj b/hyperdbg/hyperkd/hyperkd.vcxproj
index 31fa0abd..6e7da846 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj
@@ -108,6 +108,7 @@
+
@@ -155,11 +156,11 @@
+
-
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj.filters b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
index c547d5e5..8ed2e7d1 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj.filters
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
@@ -270,6 +270,9 @@
code\platform
+
+ code\platform
+
@@ -353,9 +356,6 @@
header\macros
-
- header\common
-
header\assembly
@@ -407,6 +407,9 @@
header\platform
+
+ header\platform
+
diff --git a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
index 24b125a6..40d666bf 100644
--- a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
@@ -58,15 +58,10 @@ DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
//
LbrStart(LBR_SELECT_WITHOUT_FILTER);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
return TRUE;
}
@@ -117,15 +112,10 @@ DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, P
}
}
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
return TRUE;
}
@@ -150,15 +140,10 @@ DpcRoutineFlushLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVO
//
LbrFlush();
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
return TRUE;
}
@@ -182,15 +167,10 @@ DpcRoutineFilterLbrOptions(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgume
//
LbrFilter((UINT64)DeferredContext);
+ // ------------------------------------------------------------------------------
+ // Synchronize the end of this routine with the caller
//
- // Wait for all DPCs to synchronize at this point
- //
- KeSignalCallDpcSynchronize(SystemArgument2);
-
- //
- // Mark the DPC as being complete
- //
- KeSignalCallDpcDone(SystemArgument1);
+ PlatformBroadcastSynchronizeEndOfRoutine(SystemArgument1, SystemArgument2);
return TRUE;
}
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index cfdb570f..37d2419a 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -57,11 +57,11 @@
//
#include "platform/kernel/header/PlatformMem.h"
#include "platform/kernel/header/PlatformIntrinsics.h"
+#include "platform/kernel/header/PlatformBroadcast.h"
//
// DPC and broadcasting function headers
//
-#include "broadcast/Dpc.h"
#include "broadcast/DpcRoutines.h"
#include "broadcast/Broadcast.h"
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index aae58804..7d78d544 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -101,6 +101,7 @@
+
@@ -114,13 +115,13 @@
+
-
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
index 09ee1571..f92320e9 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj.filters
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -89,6 +89,9 @@
code\platform
+
+ code\broadcast
+
@@ -106,9 +109,6 @@
header\broadcast
-
- header\broadcast
-
header\broadcast
@@ -133,5 +133,8 @@
header\platform
+
+ header\platform
+
\ No newline at end of file
diff --git a/hyperdbg/include/platform/kernel/code/PlatformBroadcast.c b/hyperdbg/include/platform/kernel/code/PlatformBroadcast.c
new file mode 100644
index 00000000..4c097194
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/PlatformBroadcast.c
@@ -0,0 +1,44 @@
+/**
+ * @file PlatformBroadcast.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for broadcasting routines
+ * @details
+ * @version 0.19
+ * @date 2026-05-08
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformBroadcast.h"
+#endif // defined(__linux__)
+
+/**
+ * @brief This function synchronize the function execution for a single core
+ *
+ * @return VOID
+ */
+VOID
+PlatformBroadcastSynchronizeEndOfRoutine(PVOID SystemArgument1, PVOID SystemArgument2)
+{
+#if defined(_WIN32) || defined(_WIN64)
+ //
+ // Wait for all DPCs to synchronize at this point
+ //
+ KeSignalCallDpcSynchronize(SystemArgument2);
+
+ //
+ // Mark the DPC as being complete
+ //
+ KeSignalCallDpcDone(SystemArgument1);
+
+#elif defined(__linux__)
+ //
+ // Not needed for Linux
+ //
+#else
+# error "Unsupported platform"
+#endif
+}
diff --git a/hyperdbg/hypertrace/header/broadcast/Dpc.h b/hyperdbg/include/platform/kernel/header/PlatformBroadcast.h
similarity index 58%
rename from hyperdbg/hypertrace/header/broadcast/Dpc.h
rename to hyperdbg/include/platform/kernel/header/PlatformBroadcast.h
index 46b6d58b..97b2bab1 100644
--- a/hyperdbg/hypertrace/header/broadcast/Dpc.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformBroadcast.h
@@ -1,21 +1,26 @@
-
/**
- * @file Dpc.h
+ * @file PlatformBroadcast.h
* @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Definition for Windows DPC functions
+ * @brief Cross platform APIs for broadcasting routines
* @details
* @version 0.19
- * @date 2026-04-19
+ * @date 2026-05-08
*
* @copyright This project is released under the GNU Public License v3.
*
*/
#pragma once
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
+#if defined(_WIN32) || defined(_WIN64)
+
NTKERNELAPI
_IRQL_requires_max_(APC_LEVEL)
_IRQL_requires_min_(PASSIVE_LEVEL)
@@ -38,3 +43,12 @@ _IRQL_requires_same_
LOGICAL
KeSignalCallDpcSynchronize(
_In_ PVOID SystemArgument2);
+
+#endif // defined(_WIN32) || defined(_WIN64)
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+VOID
+PlatformBroadcastSynchronizeEndOfRoutine(PVOID SystemArgument1, PVOID SystemArgument2);
From af3b3e2f71a1991197109a5133ec369f885ef710 Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 8 May 2026 18:58:20 +0200
Subject: [PATCH 170/323] fix compiling error for user and kernel intrinsics in
Linux
---
.../platform/kernel/code/PlatformIntrinsics.c | 14 ++-
.../platform/user/code/platform-intrinsics.c | 8 +-
.../user/header/platform-intrinsics.h | 10 +-
hyperdbg/linux/mock/user/Makefile | 4 +-
hyperdbg/linux/mock/user/mock.c | 10 ++
.../linux/mock/user/platform-intrinsics.c | 99 -------------------
6 files changed, 32 insertions(+), 113 deletions(-)
delete mode 100644 hyperdbg/linux/mock/user/platform-intrinsics.c
diff --git a/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c b/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
index 2a7a64da..caf93924 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformIntrinsics.c
@@ -462,9 +462,17 @@ CpuSegmentLimit(UINT32 Selector)
#if defined(_WIN32) || defined(_WIN64)
return __segmentlimit(Selector);
#elif defined(__linux__)
- ULONG __limit;
- __asm__ __volatile__("lsl %1, %0" : "=r"(__limit) : "r"(Selector));
- return __limit;
+
+ UINT32 Limit;
+
+ __asm__ __volatile__(
+ "lsl %1, %0"
+ : "=r"(Limit)
+ : "rm"(Selector)
+ : "cc");
+
+ return Limit;
+
#else
# error "Unsupported platform"
#endif
diff --git a/hyperdbg/include/platform/user/code/platform-intrinsics.c b/hyperdbg/include/platform/user/code/platform-intrinsics.c
index 6bc43027..7340662f 100644
--- a/hyperdbg/include/platform/user/code/platform-intrinsics.c
+++ b/hyperdbg/include/platform/user/code/platform-intrinsics.c
@@ -25,7 +25,7 @@
* @param CpuInfo
* @param FunctionId
*/
-inline VOID
+ VOID
CpuCpuId(INT32 * CpuInfo, INT32 FunctionId)
{
#if defined(_WIN32) || defined(_WIN64)
@@ -44,7 +44,7 @@ CpuCpuId(INT32 * CpuInfo, INT32 FunctionId)
* @param FunctionId
* @param SubFunctionId
*/
-inline VOID
+ VOID
CpuCpuIdEx(INT32 * CpuInfo, INT32 FunctionId, INT32 SubFunctionId)
{
#if defined(_WIN32) || defined(_WIN64)
@@ -65,7 +65,7 @@ CpuCpuIdEx(INT32 * CpuInfo, INT32 FunctionId, INT32 SubFunctionId)
*
* @return UINT64
*/
-inline UINT64
+ UINT64
CpuReadTsc(VOID)
{
#if defined(_WIN32) || defined(_WIN64)
@@ -86,7 +86,7 @@ CpuReadTsc(VOID)
/**
* @brief Execute PAUSE (spin-wait hint)
*/
-inline VOID
+ VOID
CpuPause(VOID)
{
#if defined(_WIN32) || defined(_WIN64)
diff --git a/hyperdbg/include/platform/user/header/platform-intrinsics.h b/hyperdbg/include/platform/user/header/platform-intrinsics.h
index a5190195..c2334a1d 100644
--- a/hyperdbg/include/platform/user/header/platform-intrinsics.h
+++ b/hyperdbg/include/platform/user/header/platform-intrinsics.h
@@ -22,13 +22,13 @@
//
// CPUID
//
-extern inline VOID
+VOID
CpuCpuId(INT32 * CpuInfo, INT32 FunctionId);
//
// CPUID (with sub-leaf)
//
-extern inline VOID
+VOID
CpuCpuIdEx(INT32 * CpuInfo, INT32 FunctionId, INT32 SubFunctionId);
//////////////////////////////////////////////////
@@ -38,8 +38,8 @@ CpuCpuIdEx(INT32 * CpuInfo, INT32 FunctionId, INT32 SubFunctionId);
//
// RDTSC
//
-extern inline UINT64
- CpuReadTsc(VOID);
+UINT64
+CpuReadTsc(VOID);
//////////////////////////////////////////////////
// Misc Instructions //
@@ -48,5 +48,5 @@ extern inline UINT64
//
// PAUSE
//
-extern inline VOID
+VOID
CpuPause(VOID);
diff --git a/hyperdbg/linux/mock/user/Makefile b/hyperdbg/linux/mock/user/Makefile
index acfaf1f3..229a6c0c 100644
--- a/hyperdbg/linux/mock/user/Makefile
+++ b/hyperdbg/linux/mock/user/Makefile
@@ -17,10 +17,10 @@ $(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
%.o: %.c pch.h
- $(CC) $(CFLAGS) -c -o $@ $
+ $(CC) $(CFLAGS) -c -o $@ $<
platform-intrinsics.c:
- cp ../../../include/platform/user/code/platform-intrinsics.c $(PWD)/platform-intrinsics.c
+ cp $(PWD)/../../../include/platform/user/code/platform-intrinsics.c $(PWD)/platform-intrinsics.c
clean:
rm -f $(OBJS) $(TARGET)
diff --git a/hyperdbg/linux/mock/user/mock.c b/hyperdbg/linux/mock/user/mock.c
index 9e3acac9..fea47233 100644
--- a/hyperdbg/linux/mock/user/mock.c
+++ b/hyperdbg/linux/mock/user/mock.c
@@ -15,5 +15,15 @@ int
main(void)
{
printf("Hello world HyperDbg!\n");
+
+ //////////////////////////////////////////////////////////////
+ //
+ // Test for working intrinsics
+ //
+ CpuReadTsc();
+ CpuCpuId(NULL, 0);
+
+ //////////////////////////////////////////////////////////////
+
return 0;
}
diff --git a/hyperdbg/linux/mock/user/platform-intrinsics.c b/hyperdbg/linux/mock/user/platform-intrinsics.c
deleted file mode 100644
index 6bc43027..00000000
--- a/hyperdbg/linux/mock/user/platform-intrinsics.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * @file platform-intrinsics.c
- * @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Implementation of cross platform APIs for intrinsic functions (x86 instructions)
- * @details
- * @version 0.19
- * @date 2026-05-06
- *
- * @copyright This project is released under the GNU Public License v3.
- *
- */
-#include "pch.h"
-
-#if defined(__linux__)
-# include "../header/platform-intrinsics.h"
-#endif // defined(__linux__)
-
-//////////////////////////////////////////////////
-// CPUID Instructions //
-//////////////////////////////////////////////////
-
-/**
- * @brief Execute CPUID
- *
- * @param CpuInfo
- * @param FunctionId
- */
-inline VOID
-CpuCpuId(INT32 * CpuInfo, INT32 FunctionId)
-{
-#if defined(_WIN32) || defined(_WIN64)
- __cpuid(CpuInfo, FunctionId);
-#elif defined(__linux__)
- __asm__ __volatile__("cpuid" : "=a"(CpuInfo[0]), "=b"(CpuInfo[1]), "=c"(CpuInfo[2]), "=d"(CpuInfo[3]) : "a"(FunctionId), "c"(0));
-#else
-# error "Unsupported platform"
-#endif
-}
-
-/**
- * @brief Execute CPUID with sub-leaf
- *
- * @param CpuInfo
- * @param FunctionId
- * @param SubFunctionId
- */
-inline VOID
-CpuCpuIdEx(INT32 * CpuInfo, INT32 FunctionId, INT32 SubFunctionId)
-{
-#if defined(_WIN32) || defined(_WIN64)
- __cpuidex(CpuInfo, FunctionId, SubFunctionId);
-#elif defined(__linux__)
- __asm__ __volatile__("cpuid" : "=a"(CpuInfo[0]), "=b"(CpuInfo[1]), "=c"(CpuInfo[2]), "=d"(CpuInfo[3]) : "a"(FunctionId), "c"(SubFunctionId));
-#else
-# error "Unsupported platform"
-#endif
-}
-
-//////////////////////////////////////////////////
-// TSC Instructions //
-//////////////////////////////////////////////////
-
-/**
- * @brief Read Time-Stamp Counter
- *
- * @return UINT64
- */
-inline UINT64
-CpuReadTsc(VOID)
-{
-#if defined(_WIN32) || defined(_WIN64)
- return __rdtsc();
-#elif defined(__linux__)
- UINT32 __lo, __hi;
- __asm__ __volatile__("rdtsc" : "=a"(__lo), "=d"(__hi));
- return ((UINT64)__hi << 32) | __lo;
-#else
-# error "Unsupported platform"
-#endif
-}
-
-//////////////////////////////////////////////////
-// Misc Instructions //
-//////////////////////////////////////////////////
-
-/**
- * @brief Execute PAUSE (spin-wait hint)
- */
-inline VOID
-CpuPause(VOID)
-{
-#if defined(_WIN32) || defined(_WIN64)
- _mm_pause();
-#elif defined(__linux__)
- __asm__ __volatile__("pause");
-#else
-# error "Unsupported platform"
-#endif
-}
From 90337d37f7188f9c3b93a4252f5bd4e565b64249 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 10 May 2026 00:58:47 +0200
Subject: [PATCH 171/323] refactoring codes for platform independence of
hyperlog and hypertrace and script-eval
---
.github/git/git-help.md | 7 +
hyperdbg/hyperdbg.sln | 18 +++
hyperdbg/hyperhv/pch.h | 4 -
hyperdbg/hyperkd/header/pch.h | 2 +
hyperdbg/hyperkd/hyperkd.vcxproj | 4 +
hyperdbg/hyperkd/hyperkd.vcxproj.filters | 12 ++
hyperdbg/hyperlog/code/Logging.c | 108 +++++++--------
hyperdbg/hyperlog/header/pch.h | 9 +-
hyperdbg/hyperlog/hyperlog.vcxproj | 15 ++
hyperdbg/hyperlog/hyperlog.vcxproj.filters | 45 ++++++
hyperdbg/hypertrace/code/api/TraceApi.c | 4 +-
hyperdbg/hypertrace/header/pch.h | 8 ++
hyperdbg/hypertrace/hypertrace.vcxproj | 2 +
.../hypertrace/hypertrace.vcxproj.filters | 6 +
.../platform/kernel/code/PlatformCpu.c | 62 +++++++++
.../platform/kernel/code/PlatformDbg.c | 44 ++++++
.../platform/kernel/code/PlatformDpc.c | 68 +++++++++
.../platform/kernel/code/PlatformEvent.c | 105 ++++++++++++++
.../include/platform/kernel/code/PlatformIo.c | 89 ++++++++++++
.../platform/kernel/code/PlatformIrql.c | 63 +++++++++
.../platform/kernel/code/PlatformMem.c | 22 +++
.../platform/kernel/code/PlatformProcess.c | 131 ++++++++++++++++++
.../platform/kernel/code/PlatformSpinlock.c | 90 ++++++++++++
.../platform/kernel/code/PlatformTime.c | 90 ++++++++++++
.../platform/kernel/header/PlatformCpu.h | 26 ++++
.../platform/kernel/header/PlatformDbg.h | 23 +++
.../platform/kernel/header/PlatformDpc.h | 30 ++++
.../platform/kernel/header/PlatformEvent.h | 38 +++++
.../platform/kernel/header/PlatformIo.h | 33 +++++
.../platform/kernel/header/PlatformIrql.h | 30 ++++
.../platform/kernel/header/PlatformMem.h | 3 +
.../platform/kernel/header/PlatformProcess.h | 35 +++++
.../platform/kernel/header/PlatformSpinlock.h | 33 +++++
.../platform/kernel/header/PlatformTime.h | 33 +++++
hyperdbg/script-eval/code/PseudoRegisters.c | 14 +-
35 files changed, 1238 insertions(+), 68 deletions(-)
create mode 100644 hyperdbg/include/platform/kernel/code/PlatformCpu.c
create mode 100644 hyperdbg/include/platform/kernel/code/PlatformDbg.c
create mode 100644 hyperdbg/include/platform/kernel/code/PlatformDpc.c
create mode 100644 hyperdbg/include/platform/kernel/code/PlatformEvent.c
create mode 100644 hyperdbg/include/platform/kernel/code/PlatformIo.c
create mode 100644 hyperdbg/include/platform/kernel/code/PlatformIrql.c
create mode 100644 hyperdbg/include/platform/kernel/code/PlatformProcess.c
create mode 100644 hyperdbg/include/platform/kernel/code/PlatformSpinlock.c
create mode 100644 hyperdbg/include/platform/kernel/code/PlatformTime.c
create mode 100644 hyperdbg/include/platform/kernel/header/PlatformCpu.h
create mode 100644 hyperdbg/include/platform/kernel/header/PlatformDbg.h
create mode 100644 hyperdbg/include/platform/kernel/header/PlatformDpc.h
create mode 100644 hyperdbg/include/platform/kernel/header/PlatformEvent.h
create mode 100644 hyperdbg/include/platform/kernel/header/PlatformIo.h
create mode 100644 hyperdbg/include/platform/kernel/header/PlatformIrql.h
create mode 100644 hyperdbg/include/platform/kernel/header/PlatformProcess.h
create mode 100644 hyperdbg/include/platform/kernel/header/PlatformSpinlock.h
create mode 100644 hyperdbg/include/platform/kernel/header/PlatformTime.h
diff --git a/.github/git/git-help.md b/.github/git/git-help.md
index 9505f465..4a418ae9 100644
--- a/.github/git/git-help.md
+++ b/.github/git/git-help.md
@@ -44,6 +44,13 @@ To remove the effects of `git add .` and `git commit -m "test"` or just `git add
git reset --soft HEAD~1
```
+To remove **all uncommitted and untracked changes** in Git and reset your working tree to the last commit:
+
+```bash
+git reset --hard
+git clean -fd
+```
+
---------------
## Releasing instructions
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index b16f1794..2c4bf22d 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -149,19 +149,37 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{6498728B-D9B0-4CAB-A9E3-ACE5BC371010}"
ProjectSection(SolutionItems) = preProject
include\platform\kernel\code\PlatformBroadcast.c = include\platform\kernel\code\PlatformBroadcast.c
+ include\platform\kernel\code\PlatformCpu.c = include\platform\kernel\code\PlatformCpu.c
+ include\platform\kernel\code\PlatformDbg.c = include\platform\kernel\code\PlatformDbg.c
+ include\platform\kernel\code\PlatformDpc.c = include\platform\kernel\code\PlatformDpc.c
+ include\platform\kernel\code\PlatformEvent.c = include\platform\kernel\code\PlatformEvent.c
include\platform\kernel\code\PlatformIntrinsics.c = include\platform\kernel\code\PlatformIntrinsics.c
include\platform\kernel\code\PlatformIntrinsicsVmx.c = include\platform\kernel\code\PlatformIntrinsicsVmx.c
+ include\platform\kernel\code\PlatformIo.c = include\platform\kernel\code\PlatformIo.c
+ include\platform\kernel\code\PlatformIrql.c = include\platform\kernel\code\PlatformIrql.c
include\platform\kernel\code\PlatformMem.c = include\platform\kernel\code\PlatformMem.c
+ include\platform\kernel\code\PlatformProcess.c = include\platform\kernel\code\PlatformProcess.c
+ include\platform\kernel\code\PlatformSpinlock.c = include\platform\kernel\code\PlatformSpinlock.c
+ include\platform\kernel\code\PlatformTime.c = include\platform\kernel\code\PlatformTime.c
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{AA41FFF1-A730-433E-8D26-13DA5B653825}"
ProjectSection(SolutionItems) = preProject
include\platform\kernel\header\pch.h = include\platform\kernel\header\pch.h
include\platform\kernel\header\PlatformBroadcast.h = include\platform\kernel\header\PlatformBroadcast.h
+ include\platform\kernel\header\PlatformCpu.h = include\platform\kernel\header\PlatformCpu.h
+ include\platform\kernel\header\PlatformDbg.h = include\platform\kernel\header\PlatformDbg.h
+ include\platform\kernel\header\PlatformDpc.h = include\platform\kernel\header\PlatformDpc.h
+ include\platform\kernel\header\PlatformEvent.h = include\platform\kernel\header\PlatformEvent.h
include\platform\kernel\header\PlatformIntrinsics.h = include\platform\kernel\header\PlatformIntrinsics.h
include\platform\kernel\header\PlatformIntrinsicsVmx.h = include\platform\kernel\header\PlatformIntrinsicsVmx.h
+ include\platform\kernel\header\PlatformIo.h = include\platform\kernel\header\PlatformIo.h
+ include\platform\kernel\header\PlatformIrql.h = include\platform\kernel\header\PlatformIrql.h
include\platform\kernel\header\PlatformMem.h = include\platform\kernel\header\PlatformMem.h
include\platform\kernel\header\PlatformModuleInfo.h = include\platform\kernel\header\PlatformModuleInfo.h
+ include\platform\kernel\header\PlatformProcess.h = include\platform\kernel\header\PlatformProcess.h
+ include\platform\kernel\header\PlatformSpinlock.h = include\platform\kernel\header\PlatformSpinlock.h
+ include\platform\kernel\header\PlatformTime.h = include\platform\kernel\header\PlatformTime.h
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{4BF590C3-1032-4DD2-BF87-BB9E5781977C}"
diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h
index cd708e28..5e809dde 100644
--- a/hyperdbg/hyperhv/pch.h
+++ b/hyperdbg/hyperhv/pch.h
@@ -63,10 +63,6 @@
#include "platform/kernel/header/PlatformMem.h"
#include "platform/kernel/header/PlatformIntrinsics.h"
#include "platform/kernel/header/PlatformBroadcast.h"
-
-//
-// Platform intrinsics headers
-//
#include "platform/kernel/header/PlatformIntrinsicsVmx.h"
//
diff --git a/hyperdbg/hyperkd/header/pch.h b/hyperdbg/hyperkd/header/pch.h
index 5dfab13a..8da24baa 100644
--- a/hyperdbg/hyperkd/header/pch.h
+++ b/hyperdbg/hyperkd/header/pch.h
@@ -87,6 +87,8 @@
#include "platform/kernel/header/PlatformMem.h"
#include "platform/kernel/header/PlatformIntrinsics.h"
#include "platform/kernel/header/PlatformBroadcast.h"
+#include "platform/kernel/header/PlatformProcess.h"
+#include "platform/kernel/header/PlatformCpu.h"
//
// Optimization algorithms
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj b/hyperdbg/hyperkd/hyperkd.vcxproj
index 6e7da846..2438e56a 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj
@@ -109,8 +109,10 @@
+
+
@@ -157,8 +159,10 @@
+
+
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj.filters b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
index 8ed2e7d1..375ef4fa 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj.filters
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
@@ -273,6 +273,12 @@
code\platform
+
+ code\platform
+
+
+ code\platform
+
@@ -410,6 +416,12 @@
header\platform
+
+ header\platform
+
+
+ header\platform
+
diff --git a/hyperdbg/hyperlog/code/Logging.c b/hyperdbg/hyperlog/code/Logging.c
index ae30cbd8..27e80cc4 100644
--- a/hyperdbg/hyperlog/code/Logging.c
+++ b/hyperdbg/hyperlog/code/Logging.c
@@ -99,7 +99,7 @@ LogInitialize(MESSAGE_TRACING_CALLBACKS * MsgTracingCallbacks)
{
ULONG ProcessorsCount;
- ProcessorsCount = KeQueryActiveProcessorCount(0);
+ ProcessorsCount = PlatformCpuGetActiveProcessorCount();
//
// Initialize buffers for trace message and data messages
@@ -155,8 +155,8 @@ LogInitialize(MESSAGE_TRACING_CALLBACKS * MsgTracingCallbacks)
// for both but the second buffer spinlock is useless
// as we use our custom spinlock
//
- KeInitializeSpinLock(&MessageBufferInformation[i].BufferLock);
- KeInitializeSpinLock(&MessageBufferInformation[i].BufferLockForNonImmMessage);
+ PlatformSpinlockInitialize(&MessageBufferInformation[i].BufferLock);
+ PlatformSpinlockInitialize(&MessageBufferInformation[i].BufferLockForNonImmMessage);
//
// allocate the buffer for regular buffers
@@ -183,9 +183,9 @@ LogInitialize(MESSAGE_TRACING_CALLBACKS * MsgTracingCallbacks)
//
// Zeroing the buffer
//
- RtlZeroMemory((void *)MessageBufferInformation[i].BufferStartAddress, LogBufferSize);
- RtlZeroMemory((void *)MessageBufferInformation[i].BufferForMultipleNonImmediateMessage, PacketChunkSize);
- RtlZeroMemory((void *)MessageBufferInformation[i].BufferStartAddressPriority, LogBufferSizePriority);
+ PlatformZeroMemory((PVOID)MessageBufferInformation[i].BufferStartAddress, LogBufferSize);
+ PlatformZeroMemory((PVOID)MessageBufferInformation[i].BufferForMultipleNonImmediateMessage, PacketChunkSize);
+ PlatformZeroMemory((PVOID)MessageBufferInformation[i].BufferStartAddressPriority, LogBufferSizePriority);
//
// Set the end address
@@ -197,7 +197,7 @@ LogInitialize(MESSAGE_TRACING_CALLBACKS * MsgTracingCallbacks)
//
// Copy the callbacks into the global callback holder
//
- RtlCopyBytes(&g_MsgTracingCallbacks, MsgTracingCallbacks, sizeof(MESSAGE_TRACING_CALLBACKS));
+ PlatformWriteMemory(&g_MsgTracingCallbacks, MsgTracingCallbacks, sizeof(MESSAGE_TRACING_CALLBACKS));
return TRUE;
}
@@ -384,7 +384,7 @@ LogCallbackSendBuffer(UINT32 OperationCode, PVOID Buffer, UINT32 BufferLength, B
//
// vmx non-root
//
- OldIRQL = KeRaiseIrqlToDpcLevel();
+ OldIRQL = PlatformIrqlRaiseToDpcLevel();
}
//
@@ -403,7 +403,7 @@ LogCallbackSendBuffer(UINT32 OperationCode, PVOID Buffer, UINT32 BufferLength, B
//
// vmx non-root
//
- KeLowerIrql(OldIRQL);
+ PlatformIrqlLower(OldIRQL);
}
return TRUE;
@@ -431,7 +431,7 @@ LogCallbackSendBuffer(UINT32 OperationCode, PVOID Buffer, UINT32 BufferLength, B
//
// Acquire the lock
//
- KeAcquireSpinLock(&MessageBufferInformation[Index].BufferLock, &OldIRQL);
+ PlatformSpinlockAcquire(&MessageBufferInformation[Index].BufferLock, &OldIRQL);
}
//
@@ -500,7 +500,7 @@ LogCallbackSendBuffer(UINT32 OperationCode, PVOID Buffer, UINT32 BufferLength, B
//
// Copy the buffer
//
- RtlCopyBytes(SavingBuffer, Buffer, BufferLength);
+ PlatformWriteMemory(SavingBuffer, Buffer, BufferLength);
//
// Increment the next index to write
@@ -531,7 +531,7 @@ LogCallbackSendBuffer(UINT32 OperationCode, PVOID Buffer, UINT32 BufferLength, B
//
// Insert dpc to queue
//
- KeInsertQueueDpc(&g_GlobalNotifyRecord->Dpc, g_GlobalNotifyRecord, NULL);
+ PlatformDpcInsertQueueDpc(&g_GlobalNotifyRecord->Dpc, g_GlobalNotifyRecord, NULL);
//
// set notify routine to null
@@ -552,7 +552,7 @@ LogCallbackSendBuffer(UINT32 OperationCode, PVOID Buffer, UINT32 BufferLength, B
//
// Release the lock
//
- KeReleaseSpinLock(&MessageBufferInformation[Index].BufferLock, OldIRQL);
+ PlatformSpinlockRelease(&MessageBufferInformation[Index].BufferLock, OldIRQL);
}
return TRUE;
@@ -598,7 +598,7 @@ LogMarkAllAsRead(BOOLEAN IsVmxRoot)
//
// Acquire the lock
//
- KeAcquireSpinLock(&MessageBufferInformation[Index].BufferLock, &OldIRQL);
+ PlatformSpinlockAcquire(&MessageBufferInformation[Index].BufferLock, &OldIRQL);
}
//
@@ -632,7 +632,7 @@ LogMarkAllAsRead(BOOLEAN IsVmxRoot)
//
// Release the lock
//
- KeReleaseSpinLock(&MessageBufferInformation[Index].BufferLock, OldIRQL);
+ PlatformSpinlockRelease(&MessageBufferInformation[Index].BufferLock, OldIRQL);
}
return ResultsOfBuffersSetToRead;
@@ -658,7 +658,7 @@ LogMarkAllAsRead(BOOLEAN IsVmxRoot)
// there might be multiple messages on the start of the queue that didn't read yet)
// we don't free the header
//
- RtlZeroMemory(SendingBuffer, Header->BufferLength);
+ PlatformZeroMemory(SendingBuffer, Header->BufferLength);
//
// Check to see whether we passed the index or not
@@ -689,7 +689,7 @@ LogMarkAllAsRead(BOOLEAN IsVmxRoot)
//
// Release the lock
//
- KeReleaseSpinLock(&MessageBufferInformation[Index].BufferLock, OldIRQL);
+ PlatformSpinlockRelease(&MessageBufferInformation[Index].BufferLock, OldIRQL);
}
return ResultsOfBuffersSetToRead;
@@ -737,7 +737,7 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
//
// Acquire the lock
//
- KeAcquireSpinLock(&MessageBufferInformation[Index].BufferLock, &OldIRQL);
+ PlatformSpinlockAcquire(&MessageBufferInformation[Index].BufferLock, &OldIRQL);
}
//
@@ -776,7 +776,7 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
//
// Release the lock
//
- KeReleaseSpinLock(&MessageBufferInformation[Index].BufferLock, OldIRQL);
+ PlatformSpinlockRelease(&MessageBufferInformation[Index].BufferLock, OldIRQL);
}
return FALSE;
@@ -794,7 +794,7 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
//
// First copy the header
//
- RtlCopyBytes(BufferToSaveMessage, &Header->OperationNumber, sizeof(UINT32));
+ PlatformWriteMemory(BufferToSaveMessage, &Header->OperationNumber, sizeof(UINT32));
//
// Second, save the buffer contents
@@ -815,7 +815,7 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
//
PVOID SavingAddress = (PVOID)((UINT64)BufferToSaveMessage + sizeof(UINT32));
- RtlCopyBytes(SavingAddress, SendingBuffer, Header->BufferLength);
+ PlatformWriteMemory(SavingAddress, SendingBuffer, Header->BufferLength);
#if ShowMessagesOnDebugger
@@ -834,17 +834,17 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
{
if (i != 0)
{
- DbgPrint("%s", (char *)((UINT64)SendingBuffer + (DbgPrintLimitation * i) - 2));
+ PlatformDbgPrint("%s", (char *)((UINT64)SendingBuffer + (DbgPrintLimitation * i) - 2));
}
else
{
- DbgPrint("%s", (char *)((UINT64)SendingBuffer + (DbgPrintLimitation * i)));
+ PlatformDbgPrint("%s", (char *)((UINT64)SendingBuffer + (DbgPrintLimitation * i)));
}
}
}
else
{
- DbgPrint("%s", (char *)SendingBuffer);
+ PlatformDbgPrint("%s", (char *)SendingBuffer);
}
}
#endif
@@ -864,7 +864,7 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
// there might be multiple messages on the start of the queue that didn't read yet)
// we don't free the header
//
- RtlZeroMemory(SendingBuffer, Header->BufferLength);
+ PlatformZeroMemory(SendingBuffer, Header->BufferLength);
if (PriorityMessageIsAvailable)
{
@@ -914,7 +914,7 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
//
// Release the lock
//
- KeReleaseSpinLock(&MessageBufferInformation[Index].BufferLock, OldIRQL);
+ PlatformSpinlockRelease(&MessageBufferInformation[Index].BufferLock, OldIRQL);
}
return TRUE;
@@ -998,7 +998,7 @@ LogCallbackPrepareAndSendMessageToQueueWrapper(UINT32 OperationCode,
char * LogMessage = NULL;
char * TempMessage = NULL;
char TimeBuffer[20] = {0};
- ULONG CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+ ULONG CurrentCore = PlatformCpuGetCurrentProcessorNumber();
//
// Set Vmx State
@@ -1069,9 +1069,9 @@ LogCallbackPrepareAndSendMessageToQueueWrapper(UINT32 OperationCode,
//
TIME_FIELDS TimeFields;
LARGE_INTEGER SystemTime, LocalTime;
- KeQuerySystemTime(&SystemTime);
- ExSystemTimeToLocalTime(&SystemTime, &LocalTime);
- RtlTimeToTimeFields(&LocalTime, &TimeFields);
+ PlatformTimeQuerySystemTime(&SystemTime);
+ PlatformTimeConvertToLocalTime(&SystemTime, &LocalTime);
+ PlatformTimeConvertToTimeFields(&LocalTime, &TimeFields);
//
// We won't use this because we can't use in any IRQL
@@ -1287,7 +1287,7 @@ LogCallbackSendMessageToQueue(UINT32 OperationCode, BOOLEAN IsImmediateMessage,
//
// Acquire the lock
//
- KeAcquireSpinLock(&MessageBufferInformation[Index].BufferLockForNonImmMessage, &OldIRQL);
+ PlatformSpinlockAcquire(&MessageBufferInformation[Index].BufferLockForNonImmMessage, &OldIRQL);
}
//
// Set the result to True
@@ -1312,13 +1312,13 @@ LogCallbackSendMessageToQueue(UINT32 OperationCode, BOOLEAN IsImmediateMessage,
// Free the immediate buffer
//
MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer = 0;
- RtlZeroMemory((void *)MessageBufferInformation[Index].BufferForMultipleNonImmediateMessage, PacketChunkSize);
+ PlatformZeroMemory((PVOID)MessageBufferInformation[Index].BufferForMultipleNonImmediateMessage, PacketChunkSize);
}
//
// We have to save the message
//
- RtlCopyBytes((void *)(MessageBufferInformation[Index].BufferForMultipleNonImmediateMessage +
+ PlatformWriteMemory((PVOID)(MessageBufferInformation[Index].BufferForMultipleNonImmediateMessage +
MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer),
LogMessage,
BufferLen);
@@ -1340,7 +1340,7 @@ LogCallbackSendMessageToQueue(UINT32 OperationCode, BOOLEAN IsImmediateMessage,
//
// Release the lock
//
- KeReleaseSpinLock(&MessageBufferInformation[Index].BufferLockForNonImmMessage, OldIRQL);
+ PlatformSpinlockRelease(&MessageBufferInformation[Index].BufferLockForNonImmMessage, OldIRQL);
}
return Result;
@@ -1390,18 +1390,18 @@ LogNotifyUsermodeCallback(PKDPC Dpc, PVOID DeferredContext, PVOID SystemArgument
//
if (!(Irp->CurrentLocation <= Irp->StackCount + 1))
{
- DbgPrint("Err, probably two or more functions called DPC for an object");
+ PlatformDbgPrint("Err, probably two or more functions called DPC for an object");
return;
}
- IrpSp = IoGetCurrentIrpStackLocation(Irp);
+ IrpSp = PlatformIoGetCurrentIrpStackLocation(Irp);
InBuffLength = IrpSp->Parameters.DeviceIoControl.InputBufferLength;
OutBuffLength = IrpSp->Parameters.DeviceIoControl.OutputBufferLength;
if (!InBuffLength || !OutBuffLength)
{
Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
- IoCompleteRequest(Irp, IO_NO_INCREMENT);
+ PlatformIoCompleteRequest(Irp, IO_NO_INCREMENT);
break;
}
@@ -1428,14 +1428,14 @@ LogNotifyUsermodeCallback(PKDPC Dpc, PVOID DeferredContext, PVOID SystemArgument
// we have to return here as there is nothing to send here
//
Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
- IoCompleteRequest(Irp, IO_NO_INCREMENT);
+ PlatformIoCompleteRequest(Irp, IO_NO_INCREMENT);
break;
}
Irp->IoStatus.Information = Length;
Irp->IoStatus.Status = STATUS_SUCCESS;
- IoCompleteRequest(Irp, IO_NO_INCREMENT);
+ PlatformIoCompleteRequest(Irp, IO_NO_INCREMENT);
}
break;
@@ -1443,12 +1443,12 @@ LogNotifyUsermodeCallback(PKDPC Dpc, PVOID DeferredContext, PVOID SystemArgument
//
// Signal the Event created in user-mode.
//
- KeSetEvent(NotifyRecord->Message.Event, 0, FALSE);
+ PlatformEventSet(NotifyRecord->Message.Event, 0, FALSE);
//
// Dereference the object as we are done with it.
//
- ObDereferenceObject(NotifyRecord->Message.Event);
+ PlatformObjectDereference(NotifyRecord->Message.Event);
break;
@@ -1488,7 +1488,7 @@ LogRegisterIrpBasedNotification(PVOID TargetIrp, LONG * Status)
if (g_GlobalNotifyRecord == NULL)
{
- IrpStack = IoGetCurrentIrpStackLocation(Irp);
+ IrpStack = PlatformIoGetCurrentIrpStackLocation(Irp);
RegisterEvent = (PREGISTER_NOTIFY_BUFFER)Irp->AssociatedIrp.SystemBuffer;
//
@@ -1505,12 +1505,12 @@ LogRegisterIrpBasedNotification(PVOID TargetIrp, LONG * Status)
NotifyRecord->Type = IRP_BASED;
NotifyRecord->Message.PendingIrp = Irp;
- KeInitializeDpc(&NotifyRecord->Dpc, // Dpc
+ PlatformDpcInitialize(&NotifyRecord->Dpc, // Dpc
LogNotifyUsermodeCallback, // DeferredRoutine
NotifyRecord // DeferredContext
);
- IoMarkIrpPending(Irp);
+ PlatformIoMarkIrpPending(Irp);
//
// check for new message (for both Vmx-root mode or Vmx non root-mode)
@@ -1527,7 +1527,7 @@ LogRegisterIrpBasedNotification(PVOID TargetIrp, LONG * Status)
//
// Insert dpc to queue
//
- KeInsertQueueDpc(&NotifyRecord->Dpc, NotifyRecord, NULL);
+ PlatformDpcInsertQueueDpc(&NotifyRecord->Dpc, NotifyRecord, NULL);
}
else if (LogCheckForNewMessage(TRUE, TRUE))
{
@@ -1538,7 +1538,7 @@ LogRegisterIrpBasedNotification(PVOID TargetIrp, LONG * Status)
//
// Insert dpc to queue
//
- KeInsertQueueDpc(&NotifyRecord->Dpc, NotifyRecord, NULL);
+ PlatformDpcInsertQueueDpc(&NotifyRecord->Dpc, NotifyRecord, NULL);
}
else if (LogCheckForNewMessage(FALSE, FALSE))
{
@@ -1550,7 +1550,7 @@ LogRegisterIrpBasedNotification(PVOID TargetIrp, LONG * Status)
//
// Insert dpc to queue
//
- KeInsertQueueDpc(&NotifyRecord->Dpc, NotifyRecord, NULL);
+ PlatformDpcInsertQueueDpc(&NotifyRecord->Dpc, NotifyRecord, NULL);
}
else if (LogCheckForNewMessage(TRUE, FALSE))
{
@@ -1561,7 +1561,7 @@ LogRegisterIrpBasedNotification(PVOID TargetIrp, LONG * Status)
//
// Insert dpc to queue
//
- KeInsertQueueDpc(&NotifyRecord->Dpc, NotifyRecord, NULL);
+ PlatformDpcInsertQueueDpc(&NotifyRecord->Dpc, NotifyRecord, NULL);
}
else
{
@@ -1599,7 +1599,7 @@ LogRegisterEventBasedNotification(PVOID TargetIrp)
PREGISTER_NOTIFY_BUFFER RegisterEvent;
PIRP Irp = (PIRP)TargetIrp;
- IrpStack = IoGetCurrentIrpStackLocation(Irp);
+ IrpStack = PlatformIoGetCurrentIrpStackLocation(Irp);
RegisterEvent = (PREGISTER_NOTIFY_BUFFER)Irp->AssociatedIrp.SystemBuffer;
//
@@ -1609,13 +1609,13 @@ LogRegisterEventBasedNotification(PVOID TargetIrp)
if (NULL == NotifyRecord)
{
- DbgPrint("Err, unable to allocate memory for notify record\n");
+ PlatformDbgPrint("Err, unable to allocate memory for notify record\n");
return FALSE;
}
NotifyRecord->Type = EVENT_BASED;
- KeInitializeDpc(&NotifyRecord->Dpc, // Dpc
+ PlatformDpcInitialize(&NotifyRecord->Dpc, // Dpc
LogNotifyUsermodeCallback, // DeferredRoutine
NotifyRecord // DeferredContext
);
@@ -1624,7 +1624,7 @@ LogRegisterEventBasedNotification(PVOID TargetIrp)
// Get the object pointer from the handle
// Note we must be in the context of the process that created the handle
//
- Status = ObReferenceObjectByHandle(RegisterEvent->hEvent,
+ Status = PlatformObjectReferenceByHandle(RegisterEvent->hEvent,
SYNCHRONIZE | EVENT_MODIFY_STATE,
*ExEventObjectType,
Irp->RequestorMode,
@@ -1633,7 +1633,7 @@ LogRegisterEventBasedNotification(PVOID TargetIrp)
if (!NT_SUCCESS(Status))
{
- DbgPrint("Err, unable to reference user mode event object, status = 0x%x\n", Status);
+ PlatformDbgPrint("Err, unable to reference user mode event object, status = 0x%x\n", Status);
PlatformMemFreePool(NotifyRecord);
return FALSE;
}
@@ -1641,7 +1641,7 @@ LogRegisterEventBasedNotification(PVOID TargetIrp)
//
// Insert dpc to the queue
//
- KeInsertQueueDpc(&NotifyRecord->Dpc, NotifyRecord, NULL);
+ PlatformDpcInsertQueueDpc(&NotifyRecord->Dpc, NotifyRecord, NULL);
return TRUE;
}
diff --git a/hyperdbg/hyperlog/header/pch.h b/hyperdbg/hyperlog/header/pch.h
index 021a8c5a..17cd5fec 100644
--- a/hyperdbg/hyperlog/header/pch.h
+++ b/hyperdbg/hyperlog/header/pch.h
@@ -48,5 +48,12 @@
//
// Platform independent headers
//
+#include "platform/kernel/header/PlatformCpu.h"
+#include "platform/kernel/header/PlatformDbg.h"
+#include "platform/kernel/header/PlatformDpc.h"
+#include "platform/kernel/header/PlatformEvent.h"
+#include "platform/kernel/header/PlatformIo.h"
+#include "platform/kernel/header/PlatformIrql.h"
#include "platform/kernel/header/PlatformMem.h"
-#include "platform/kernel/header/PlatformIntrinsics.h"
+#include "platform/kernel/header/PlatformSpinlock.h"
+#include "platform/kernel/header/PlatformTime.h"
diff --git a/hyperdbg/hyperlog/hyperlog.vcxproj b/hyperdbg/hyperlog/hyperlog.vcxproj
index 189b0dd0..4147f9d2 100644
--- a/hyperdbg/hyperlog/hyperlog.vcxproj
+++ b/hyperdbg/hyperlog/hyperlog.vcxproj
@@ -104,13 +104,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hyperdbg/hyperlog/hyperlog.vcxproj.filters b/hyperdbg/hyperlog/hyperlog.vcxproj.filters
index 0dba5ff5..f6867f82 100644
--- a/hyperdbg/hyperlog/hyperlog.vcxproj.filters
+++ b/hyperdbg/hyperlog/hyperlog.vcxproj.filters
@@ -38,6 +38,30 @@
code\platform
+
+ code\platform
+
+
+ code\platform
+
+
+ code\platform
+
+
+ code\platform
+
+
+ code\platform
+
+
+ code\platform
+
+
+ code\platform
+
+
+ code\platform
+
@@ -55,5 +79,26 @@
header\platform
+
+ header\platform
+
+
+ header\platform
+
+
+ header\platform
+
+
+ header\platform
+
+
+ header\platform
+
+
+ header\platform
+
+
+ header\platform
+
\ No newline at end of file
diff --git a/hyperdbg/hypertrace/code/api/TraceApi.c b/hyperdbg/hypertrace/code/api/TraceApi.c
index 950a5532..0f2d951b 100644
--- a/hyperdbg/hypertrace/code/api/TraceApi.c
+++ b/hyperdbg/hypertrace/code/api/TraceApi.c
@@ -43,12 +43,12 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
//
// Save the callbacks
//
- RtlCopyMemory(&g_Callbacks, HypertraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
+ PlatformWriteMemory(&g_Callbacks, HypertraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
//
// Query the number of processors in the system to initialize the global LBR state list accordingly
//
- ProcessorsCount = KeQueryActiveProcessorCount(0);
+ ProcessorsCount = PlatformCpuGetActiveProcessorCount();
//
// Initialize the global LBR state list to hold LBR states for each core
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 37d2419a..574f5cc5 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -58,6 +58,14 @@
#include "platform/kernel/header/PlatformMem.h"
#include "platform/kernel/header/PlatformIntrinsics.h"
#include "platform/kernel/header/PlatformBroadcast.h"
+#include "platform/kernel/header/PlatformCpu.h"
+#include "platform/kernel/header/PlatformSpinlock.h"
+#include "platform/kernel/header/PlatformIrql.h"
+#include "platform/kernel/header/PlatformDpc.h"
+#include "platform/kernel/header/PlatformTime.h"
+#include "platform/kernel/header/PlatformDbg.h"
+#include "platform/kernel/header/PlatformIo.h"
+#include "platform/kernel/header/PlatformEvent.h"
//
// DPC and broadcasting function headers
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index 7d78d544..804c776e 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -102,6 +102,7 @@
+
@@ -116,6 +117,7 @@
+
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
index f92320e9..c81ca949 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj.filters
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -92,6 +92,9 @@
code\broadcast
+
+ code\platform
+
@@ -136,5 +139,8 @@
header\platform
+
+ header\platform
+
\ No newline at end of file
diff --git a/hyperdbg/include/platform/kernel/code/PlatformCpu.c b/hyperdbg/include/platform/kernel/code/PlatformCpu.c
new file mode 100644
index 00000000..eaece365
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/PlatformCpu.c
@@ -0,0 +1,62 @@
+/**
+ * @file PlatformCpu.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for CPU and processor queries
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformCpu.h"
+#endif // defined(__linux__)
+
+/**
+ * @brief Get the count of active logical processors
+ *
+ * @return ULONG
+ */
+ULONG
+PlatformCpuGetActiveProcessorCount(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ return KeQueryActiveProcessorCount(0);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Get the current logical processor number
+ *
+ * @return ULONG
+ */
+ULONG
+PlatformCpuGetCurrentProcessorNumber(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ return KeGetCurrentProcessorNumberEx(NULL);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
diff --git a/hyperdbg/include/platform/kernel/code/PlatformDbg.c b/hyperdbg/include/platform/kernel/code/PlatformDbg.c
new file mode 100644
index 00000000..f1f866ec
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/PlatformDbg.c
@@ -0,0 +1,44 @@
+/**
+ * @file PlatformDbg.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for kernel debug output
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformDbg.h"
+#endif // defined(__linux__)
+
+/**
+ * @brief Print a debug message to the kernel debugger
+ *
+ * @param Format printf-style format string
+ * @param ... Variable arguments
+ * @return VOID
+ */
+VOID
+PlatformDbgPrint(const CHAR * Format, ...)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ va_list ArgList;
+ va_start(ArgList, Format);
+ vDbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, Format, ArgList);
+ va_end(ArgList);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
diff --git a/hyperdbg/include/platform/kernel/code/PlatformDpc.c b/hyperdbg/include/platform/kernel/code/PlatformDpc.c
new file mode 100644
index 00000000..6c459699
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/PlatformDpc.c
@@ -0,0 +1,68 @@
+/**
+ * @file PlatformDpc.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for Deferred Procedure Call (DPC) management
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformDpc.h"
+#endif // defined(__linux__)
+
+/**
+ * @brief Initialize a DPC object
+ *
+ * @param Dpc Pointer to the KDPC structure to initialize
+ * @param DeferredRoutine The deferred procedure to be called
+ * @param DeferredContext Optional context passed to the deferred routine
+ * @return VOID
+ */
+VOID
+PlatformDpcInitialize(PRKDPC Dpc, PKDEFERRED_ROUTINE DeferredRoutine, PVOID DeferredContext)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ KeInitializeDpc(Dpc, DeferredRoutine, DeferredContext);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Insert a DPC into the system DPC queue for execution
+ *
+ * @param Dpc Pointer to the initialized KDPC structure
+ * @param SystemArgument1 First system-defined argument passed to the deferred routine
+ * @param SystemArgument2 Second system-defined argument passed to the deferred routine
+ * @return BOOLEAN TRUE if the DPC was successfully queued, FALSE if it was already in the queue
+ */
+BOOLEAN
+PlatformDpcInsertQueueDpc(PRKDPC Dpc, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ return KeInsertQueueDpc(Dpc, SystemArgument1, SystemArgument2);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
diff --git a/hyperdbg/include/platform/kernel/code/PlatformEvent.c b/hyperdbg/include/platform/kernel/code/PlatformEvent.c
new file mode 100644
index 00000000..aed1673c
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/PlatformEvent.c
@@ -0,0 +1,105 @@
+/**
+ * @file PlatformEvent.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for kernel event and object management
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformEvent.h"
+#endif // defined(__linux__)
+
+/**
+ * @brief Dereference a kernel object, decrementing its reference count
+ *
+ * @param Object Pointer to the kernel object to dereference
+ * @return VOID
+ */
+VOID
+PlatformObjectDereference(PVOID Object)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ ObDereferenceObject(Object);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Signal (set) a kernel event object
+ *
+ * @param Event Pointer to the KEVENT to signal
+ * @param Increment Priority increment for any waiting threads to be awakened
+ * @param Wait If TRUE, the caller intends to immediately call a wait routine after this call
+ * @return LONG The previous signal state of the event
+ */
+LONG
+PlatformEventSet(PKEVENT Event, KPRIORITY Increment, BOOLEAN Wait)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ return KeSetEvent(Event, Increment, Wait);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Obtain a pointer to a kernel object by its user-mode handle and increment its reference count
+ *
+ * @param Handle User-mode handle referencing the kernel object
+ * @param DesiredAccess Access mask for the requested access rights
+ * @param ObjectType Pointer to the object type object (e.g., *ExEventObjectType); NULL to skip type check
+ * @param AccessMode Processor mode to use for access checks (KernelMode or UserMode)
+ * @param Object Receives a pointer to the referenced kernel object body
+ * @param HandleInformation Optional; receives access state information
+ * @return NTSTATUS STATUS_SUCCESS on success, or an error code on failure
+ */
+NTSTATUS
+PlatformObjectReferenceByHandle(HANDLE Handle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_TYPE ObjectType,
+ KPROCESSOR_MODE AccessMode,
+ PVOID * Object,
+ POBJECT_HANDLE_INFORMATION HandleInformation)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ return ObReferenceObjectByHandle(Handle,
+ DesiredAccess,
+ ObjectType,
+ AccessMode,
+ Object,
+ HandleInformation);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
diff --git a/hyperdbg/include/platform/kernel/code/PlatformIo.c b/hyperdbg/include/platform/kernel/code/PlatformIo.c
new file mode 100644
index 00000000..36af0a73
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/PlatformIo.c
@@ -0,0 +1,89 @@
+/**
+ * @file PlatformIo.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for I/O Request Packet (IRP) management
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformIo.h"
+#endif // defined(__linux__)
+
+/**
+ * @brief Get the current I/O stack location from an IRP
+ *
+ * @param Irp Pointer to the IRP (I/O Request Packet)
+ * @return PIO_STACK_LOCATION Pointer to the current stack location
+ */
+PIO_STACK_LOCATION
+PlatformIoGetCurrentIrpStackLocation(PIRP Irp)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ return IoGetCurrentIrpStackLocation(Irp);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Complete an IRP and release it back to the I/O manager
+ *
+ * @param Irp Pointer to the IRP to complete
+ * @param PriorityBoost Priority boost value (e.g., IO_NO_INCREMENT)
+ * @return VOID
+ */
+VOID
+PlatformIoCompleteRequest(PIRP Irp, CCHAR PriorityBoost)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ IoCompleteRequest(Irp, PriorityBoost);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Mark the current IRP stack location as pending
+ *
+ * @param Irp Pointer to the IRP to mark as pending
+ * @return VOID
+ */
+VOID
+PlatformIoMarkIrpPending(PIRP Irp)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ IoMarkIrpPending(Irp);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
diff --git a/hyperdbg/include/platform/kernel/code/PlatformIrql.c b/hyperdbg/include/platform/kernel/code/PlatformIrql.c
new file mode 100644
index 00000000..dd44f269
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/PlatformIrql.c
@@ -0,0 +1,63 @@
+/**
+ * @file PlatformIrql.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for IRQL management
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformIrql.h"
+#endif // defined(__linux__)
+
+/**
+ * @brief Raise the current IRQL to DISPATCH_LEVEL
+ *
+ * @return KIRQL The previous IRQL before the raise
+ */
+KIRQL
+PlatformIrqlRaiseToDpcLevel(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ return KeRaiseIrqlToDpcLevel();
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Lower the current IRQL to the previously saved value
+ *
+ * @param OldIrql The previous IRQL to restore
+ * @return VOID
+ */
+VOID
+PlatformIrqlLower(KIRQL OldIrql)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ KeLowerIrql(OldIrql);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
diff --git a/hyperdbg/include/platform/kernel/code/PlatformMem.c b/hyperdbg/include/platform/kernel/code/PlatformMem.c
index e3f75db8..f93164ae 100644
--- a/hyperdbg/include/platform/kernel/code/PlatformMem.c
+++ b/hyperdbg/include/platform/kernel/code/PlatformMem.c
@@ -121,6 +121,28 @@ PlatformSetMemory(
#endif
}
+/**
+ * @brief Zeros a memory block.
+ * @param Destination Memory address.
+ * @param Size Number of bytes.
+ */
+VOID
+PlatformZeroMemory(
+ PVOID Destination,
+ SIZE_T Size)
+{
+ if (!Destination)
+ return;
+
+#ifdef _WIN32
+ RtlZeroMemory(Destination, Size);
+#elif defined(__linux__)
+ memset(Destination, 0, Size);
+#else
+# error "Unsupported platform"
+#endif
+}
+
/////////////////////////////////////////////////
/// ... Backward Compatibility / Specific APIs ...
/////////////////////////////////////////////////
diff --git a/hyperdbg/include/platform/kernel/code/PlatformProcess.c b/hyperdbg/include/platform/kernel/code/PlatformProcess.c
new file mode 100644
index 00000000..5943df34
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/PlatformProcess.c
@@ -0,0 +1,131 @@
+/**
+ * @file PlatformProcess.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for process and thread queries
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformProcess.h"
+#endif // defined(__linux__)
+
+/**
+ * @brief Get the current thread ID
+ *
+ * @return HANDLE
+ */
+HANDLE
+PlatformProcessGetCurrentThreadId(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ return PsGetCurrentThreadId();
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Get the current process ID
+ *
+ * @return HANDLE
+ */
+HANDLE
+PlatformProcessGetCurrentProcessId(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ return PsGetCurrentProcessId();
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Get the current process (PEPROCESS)
+ *
+ * @return PVOID Pointer to the EPROCESS structure for the current process
+ */
+PVOID
+PlatformProcessGetCurrentProcess(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ return (PVOID)PsGetCurrentProcess();
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Get the current thread (PETHREAD)
+ *
+ * @return PVOID Pointer to the ETHREAD structure for the current thread
+ */
+PVOID
+PlatformProcessGetCurrentThread(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ return (PVOID)PsGetCurrentThread();
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Get the TEB (Thread Environment Block) of the current thread
+ *
+ * @return PVOID Pointer to the TEB of the current thread
+ */
+PVOID
+PlatformProcessGetCurrentThreadTeb(VOID)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ return PsGetCurrentThreadTeb();
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
diff --git a/hyperdbg/include/platform/kernel/code/PlatformSpinlock.c b/hyperdbg/include/platform/kernel/code/PlatformSpinlock.c
new file mode 100644
index 00000000..7e091499
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/PlatformSpinlock.c
@@ -0,0 +1,90 @@
+/**
+ * @file PlatformSpinlock.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for kernel spinlock operations
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformSpinlock.h"
+#endif // defined(__linux__)
+
+/**
+ * @brief Initialize a kernel spinlock
+ *
+ * @param SpinLock Pointer to the KSPIN_LOCK to initialize
+ * @return VOID
+ */
+VOID
+PlatformSpinlockInitialize(PKSPIN_LOCK SpinLock)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ KeInitializeSpinLock(SpinLock);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Acquire a kernel spinlock, raising IRQL to DISPATCH_LEVEL
+ *
+ * @param SpinLock Pointer to the KSPIN_LOCK to acquire
+ * @param OldIrql Receives the previous IRQL value to be restored on release
+ * @return VOID
+ */
+VOID
+PlatformSpinlockAcquire(PKSPIN_LOCK SpinLock, PKIRQL OldIrql)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ KeAcquireSpinLock(SpinLock, OldIrql);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Release a previously acquired kernel spinlock and restore IRQL
+ *
+ * @param SpinLock Pointer to the KSPIN_LOCK to release
+ * @param OldIrql The previous IRQL value saved during acquire
+ * @return VOID
+ */
+VOID
+PlatformSpinlockRelease(PKSPIN_LOCK SpinLock, KIRQL OldIrql)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ KeReleaseSpinLock(SpinLock, OldIrql);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
diff --git a/hyperdbg/include/platform/kernel/code/PlatformTime.c b/hyperdbg/include/platform/kernel/code/PlatformTime.c
new file mode 100644
index 00000000..dcb80a8d
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/code/PlatformTime.c
@@ -0,0 +1,90 @@
+/**
+ * @file PlatformTime.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of cross platform APIs for system time operations
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/PlatformTime.h"
+#endif // defined(__linux__)
+
+/**
+ * @brief Query the current system time
+ *
+ * @param SystemTime Receives the current system time as a LARGE_INTEGER (100-nanosecond units since January 1, 1601)
+ * @return VOID
+ */
+VOID
+PlatformTimeQuerySystemTime(PLARGE_INTEGER SystemTime)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ KeQuerySystemTime(SystemTime);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Convert system time (UTC) to local time
+ *
+ * @param SystemTime Pointer to the system time value in UTC
+ * @param LocalTime Receives the converted local time value
+ * @return VOID
+ */
+VOID
+PlatformTimeConvertToLocalTime(PLARGE_INTEGER SystemTime, PLARGE_INTEGER LocalTime)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ ExSystemTimeToLocalTime(SystemTime, LocalTime);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
+
+/**
+ * @brief Convert a LARGE_INTEGER time value to a TIME_FIELDS structure
+ *
+ * @param Time Pointer to the time value to convert
+ * @param TimeFields Receives the broken-down time fields (year, month, day, hour, minute, etc.)
+ * @return VOID
+ */
+VOID
+PlatformTimeConvertToTimeFields(PLARGE_INTEGER Time, PTIME_FIELDS TimeFields)
+{
+#if defined(_WIN32) || defined(_WIN64)
+
+ RtlTimeToTimeFields(Time, TimeFields);
+
+#elif defined(__linux__)
+
+# error "Not yet implemented"
+
+#else
+
+# error "Unsupported platform"
+
+#endif
+}
diff --git a/hyperdbg/include/platform/kernel/header/PlatformCpu.h b/hyperdbg/include/platform/kernel/header/PlatformCpu.h
new file mode 100644
index 00000000..fb3413f9
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/PlatformCpu.h
@@ -0,0 +1,26 @@
+/**
+ * @file PlatformCpu.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Cross platform APIs for CPU and processor queries
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+ULONG
+PlatformCpuGetActiveProcessorCount(VOID);
+
+ULONG
+PlatformCpuGetCurrentProcessorNumber(VOID);
diff --git a/hyperdbg/include/platform/kernel/header/PlatformDbg.h b/hyperdbg/include/platform/kernel/header/PlatformDbg.h
new file mode 100644
index 00000000..c10e6cc3
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/PlatformDbg.h
@@ -0,0 +1,23 @@
+/**
+ * @file PlatformDbg.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Cross platform APIs for kernel debug output
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+VOID
+PlatformDbgPrint(const CHAR * Format, ...);
diff --git a/hyperdbg/include/platform/kernel/header/PlatformDpc.h b/hyperdbg/include/platform/kernel/header/PlatformDpc.h
new file mode 100644
index 00000000..72476ae8
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/PlatformDpc.h
@@ -0,0 +1,30 @@
+/**
+ * @file PlatformDpc.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Cross platform APIs for Deferred Procedure Call (DPC) management
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+#if defined(_WIN32) || defined(_WIN64)
+
+VOID
+PlatformDpcInitialize(PRKDPC Dpc, PKDEFERRED_ROUTINE DeferredRoutine, PVOID DeferredContext);
+
+BOOLEAN
+PlatformDpcInsertQueueDpc(PRKDPC Dpc, PVOID SystemArgument1, PVOID SystemArgument2);
+
+#endif // defined(_WIN32) || defined(_WIN64)
diff --git a/hyperdbg/include/platform/kernel/header/PlatformEvent.h b/hyperdbg/include/platform/kernel/header/PlatformEvent.h
new file mode 100644
index 00000000..da38a7da
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/PlatformEvent.h
@@ -0,0 +1,38 @@
+/**
+ * @file PlatformEvent.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Cross platform APIs for kernel event and object management
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+VOID
+PlatformObjectDereference(PVOID Object);
+
+#if defined(_WIN32) || defined(_WIN64)
+
+LONG
+PlatformEventSet(PKEVENT Event, KPRIORITY Increment, BOOLEAN Wait);
+
+NTSTATUS
+PlatformObjectReferenceByHandle(HANDLE Handle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_TYPE ObjectType,
+ KPROCESSOR_MODE AccessMode,
+ PVOID * Object,
+ POBJECT_HANDLE_INFORMATION HandleInformation);
+
+#endif // defined(_WIN32) || defined(_WIN64)
diff --git a/hyperdbg/include/platform/kernel/header/PlatformIo.h b/hyperdbg/include/platform/kernel/header/PlatformIo.h
new file mode 100644
index 00000000..e6df744e
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/PlatformIo.h
@@ -0,0 +1,33 @@
+/**
+ * @file PlatformIo.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Cross platform APIs for I/O Request Packet (IRP) management
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+#if defined(_WIN32) || defined(_WIN64)
+
+PIO_STACK_LOCATION
+PlatformIoGetCurrentIrpStackLocation(PIRP Irp);
+
+VOID
+PlatformIoCompleteRequest(PIRP Irp, CCHAR PriorityBoost);
+
+VOID
+PlatformIoMarkIrpPending(PIRP Irp);
+
+#endif // defined(_WIN32) || defined(_WIN64)
diff --git a/hyperdbg/include/platform/kernel/header/PlatformIrql.h b/hyperdbg/include/platform/kernel/header/PlatformIrql.h
new file mode 100644
index 00000000..8ebaa70c
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/PlatformIrql.h
@@ -0,0 +1,30 @@
+/**
+ * @file PlatformIrql.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Cross platform APIs for IRQL (Interrupt Request Level) management
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+#if defined(_WIN32) || defined(_WIN64)
+
+KIRQL
+PlatformIrqlRaiseToDpcLevel(VOID);
+
+VOID
+PlatformIrqlLower(KIRQL OldIrql);
+
+#endif // defined(_WIN32) || defined(_WIN64)
diff --git a/hyperdbg/include/platform/kernel/header/PlatformMem.h b/hyperdbg/include/platform/kernel/header/PlatformMem.h
index af8d5656..c7398722 100644
--- a/hyperdbg/include/platform/kernel/header/PlatformMem.h
+++ b/hyperdbg/include/platform/kernel/header/PlatformMem.h
@@ -31,6 +31,9 @@ PlatformWriteMemory(PVOID Address, PVOID Buffer, SIZE_T Size);
VOID
PlatformSetMemory(PVOID Destination, int Value, SIZE_T Size);
+VOID
+PlatformZeroMemory(PVOID Destination, SIZE_T Size);
+
VOID
PlatformFreeMemory(PVOID Memory);
diff --git a/hyperdbg/include/platform/kernel/header/PlatformProcess.h b/hyperdbg/include/platform/kernel/header/PlatformProcess.h
new file mode 100644
index 00000000..4eedd377
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/PlatformProcess.h
@@ -0,0 +1,35 @@
+/**
+ * @file PlatformProcess.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Cross platform APIs for process and thread queries
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+HANDLE
+PlatformProcessGetCurrentThreadId(VOID);
+
+HANDLE
+PlatformProcessGetCurrentProcessId(VOID);
+
+PVOID
+PlatformProcessGetCurrentProcess(VOID);
+
+PVOID
+PlatformProcessGetCurrentThread(VOID);
+
+PVOID
+PlatformProcessGetCurrentThreadTeb(VOID);
diff --git a/hyperdbg/include/platform/kernel/header/PlatformSpinlock.h b/hyperdbg/include/platform/kernel/header/PlatformSpinlock.h
new file mode 100644
index 00000000..e8327e8e
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/PlatformSpinlock.h
@@ -0,0 +1,33 @@
+/**
+ * @file PlatformSpinlock.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Cross platform APIs for kernel spinlock operations
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+#if defined(_WIN32) || defined(_WIN64)
+
+VOID
+PlatformSpinlockInitialize(PKSPIN_LOCK SpinLock);
+
+VOID
+PlatformSpinlockAcquire(PKSPIN_LOCK SpinLock, PKIRQL OldIrql);
+
+VOID
+PlatformSpinlockRelease(PKSPIN_LOCK SpinLock, KIRQL OldIrql);
+
+#endif // defined(_WIN32) || defined(_WIN64)
diff --git a/hyperdbg/include/platform/kernel/header/PlatformTime.h b/hyperdbg/include/platform/kernel/header/PlatformTime.h
new file mode 100644
index 00000000..b760c184
--- /dev/null
+++ b/hyperdbg/include/platform/kernel/header/PlatformTime.h
@@ -0,0 +1,33 @@
+/**
+ * @file PlatformTime.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Cross platform APIs for system time operations
+ * @details
+ * @version 0.19
+ * @date 2026-05-09
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+#if defined(_WIN32) || defined(_WIN64)
+
+VOID
+PlatformTimeQuerySystemTime(PLARGE_INTEGER SystemTime);
+
+VOID
+PlatformTimeConvertToLocalTime(PLARGE_INTEGER SystemTime, PLARGE_INTEGER LocalTime);
+
+VOID
+PlatformTimeConvertToTimeFields(PLARGE_INTEGER Time, PTIME_FIELDS TimeFields);
+
+#endif // defined(_WIN32) || defined(_WIN64)
diff --git a/hyperdbg/script-eval/code/PseudoRegisters.c b/hyperdbg/script-eval/code/PseudoRegisters.c
index aeaf9a46..a3a46178 100644
--- a/hyperdbg/script-eval/code/PseudoRegisters.c
+++ b/hyperdbg/script-eval/code/PseudoRegisters.c
@@ -29,7 +29,7 @@ ScriptEnginePseudoRegGetTid()
#endif // SCRIPT_ENGINE_USER_MODE
#ifdef SCRIPT_ENGINE_KERNEL_MODE
- return (UINT64)PsGetCurrentThreadId();
+ return (UINT64)PlatformProcessGetCurrentThreadId();
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
@@ -46,7 +46,7 @@ ScriptEnginePseudoRegGetCore()
#endif // SCRIPT_ENGINE_USER_MODE
#ifdef SCRIPT_ENGINE_KERNEL_MODE
- return (UINT64)KeGetCurrentProcessorNumberEx(NULL);
+ return (UINT64)PlatformCpuGetCurrentProcessorNumber();
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
@@ -63,7 +63,7 @@ ScriptEnginePseudoRegGetPid()
#endif // SCRIPT_ENGINE_USER_MODE
#ifdef SCRIPT_ENGINE_KERNEL_MODE
- return (UINT64)PsGetCurrentProcessId();
+ return (UINT64)PlatformProcessGetCurrentProcessId();
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
@@ -112,7 +112,7 @@ ScriptEnginePseudoRegGetPname()
#endif // SCRIPT_ENGINE_USER_MODE
#ifdef SCRIPT_ENGINE_KERNEL_MODE
- return CommonGetProcessNameFromProcessControlBlock(PsGetCurrentProcess());
+ return CommonGetProcessNameFromProcessControlBlock(PlatformProcessGetCurrentProcess());
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
@@ -129,7 +129,7 @@ ScriptEnginePseudoRegGetProc()
#endif // SCRIPT_ENGINE_USER_MODE
#ifdef SCRIPT_ENGINE_KERNEL_MODE
- return (UINT64)PsGetCurrentProcess();
+ return (UINT64)PlatformProcessGetCurrentProcess();
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
@@ -146,7 +146,7 @@ ScriptEnginePseudoRegGetThread()
#endif // SCRIPT_ENGINE_USER_MODE
#ifdef SCRIPT_ENGINE_KERNEL_MODE
- return (UINT64)PsGetCurrentThread();
+ return (UINT64)PlatformProcessGetCurrentThread();
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
@@ -293,7 +293,7 @@ ScriptEnginePseudoRegGetTeb()
#endif // SCRIPT_ENGINE_USER_MODE
#ifdef SCRIPT_ENGINE_KERNEL_MODE
- return (UINT64)PsGetCurrentThreadTeb();
+ return (UINT64)PlatformProcessGetCurrentThreadTeb();
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
From f6fd11627470ed24fe1b24992286192f4af0f9f7 Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 15 May 2026 17:25:56 +0200
Subject: [PATCH 172/323] add new arch-based TO and FROM MSRs
---
hyperdbg/hypertrace/code/lbr/Lbr.c | 27 ++++++++++++++++++++++-----
hyperdbg/hypertrace/header/lbr/Lbr.h | 14 ++++++++++++--
2 files changed, 34 insertions(+), 7 deletions(-)
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index c87e343d..cc2dd756 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -317,8 +317,16 @@ LbrClearHardwareState()
//
for (ULONG i = 0; i < (ULONG)g_LbrCapacity; i++)
{
- xwrmsr(MSR_LBR_NHM_FROM + i, 0);
- xwrmsr(MSR_LBR_NHM_TO + i, 0);
+ if (g_ArchBasedLastBranchRecord)
+ {
+ xwrmsr(IA32_LBR_0_FROM_IP + i, 0);
+ xwrmsr(IA32_LBR_0_TO_IP + i, 0);
+ }
+ else
+ {
+ xwrmsr(MSR_LASTBRANCH_0_FROM_IP + i, 0);
+ xwrmsr(MSR_LASTBRANCH_0_TO_IP + i, 0);
+ }
}
}
@@ -875,9 +883,18 @@ LbrSave()
//
for (ULONG i = 0; i < (ULONG)g_LbrCapacity; i++)
{
- xrdmsr(MSR_LBR_NHM_FROM + i, &State->BranchEntry[i].From);
- xrdmsr(MSR_LBR_NHM_TO + i, &State->BranchEntry[i].To);
- xrdmsr(MSR_LASTBRANCH_INFO_0 + i, &State->LastBranchInfo[i].AsUInt);
+ if (g_ArchBasedLastBranchRecord)
+ {
+ xrdmsr(IA32_LBR_0_FROM_IP + i, &State->BranchEntry[i].From);
+ xrdmsr(IA32_LBR_0_TO_IP + i, &State->BranchEntry[i].To);
+ xrdmsr(IA32_LBR_0_INFO + i, &State->LastBranchInfo[i].AsUInt);
+ }
+ else
+ {
+ xrdmsr(MSR_LASTBRANCH_0_FROM_IP + i, &State->BranchEntry[i].From);
+ xrdmsr(MSR_LASTBRANCH_0_TO_IP + i, &State->BranchEntry[i].To);
+ xrdmsr(MSR_LASTBRANCH_INFO_0 + i, &State->LastBranchInfo[i].AsUInt);
+ }
}
}
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index 50201731..96967dee 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -14,12 +14,22 @@
// Constants //
//////////////////////////////////////////////////
+//
+// Legacy LBR MSRs
+//
#define MSR_LBR_TOS 0x000001C9
-#define MSR_LBR_NHM_FROM 0x00000680
-#define MSR_LBR_NHM_TO 0x000006C0
+#define MSR_LASTBRANCH_0_FROM_IP 0x00000680
+#define MSR_LASTBRANCH_0_TO_IP 0x000006C0
#define MSR_LASTBRANCH_INFO_0 0x00000DC0
#define LBR_SELECT_WITHOUT_FILTER 0x00000000
+//
+// Arch LBR MSRs
+//
+#define IA32_LBR_0_FROM_IP 0x1500
+#define IA32_LBR_0_TO_IP 0x1600
+#define IA32_LBR_0_INFO 0x1200
+
#define CPUID_ARCH_LAST_BRANCH_RECORD_INFORMATION 0x1c
//
From 4ea5b142f4286a6c3324d09829d493da2b539cc2 Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 15 May 2026 20:23:52 +0200
Subject: [PATCH 173/323] fix LBR filter on ARCH LBR CTL
---
hyperdbg/hypertrace/code/lbr/Lbr.c | 50 +++++++++++++++++++++++-------
1 file changed, 38 insertions(+), 12 deletions(-)
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index cc2dd756..f1641ab7 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -204,45 +204,71 @@ LbrCheckAndReadLegacyLbrDetails()
VOID
LbrBuildArchBasedFilterOptions(UINT64 FilterOptions, IA32_LBR_CTL_REGISTER * Ia32LbrCtl)
{
+ //
+ // By default, we are enabling all of them
+ //
+ Ia32LbrCtl->Bits.OS = 1;
+ Ia32LbrCtl->Bits.USR = 1;
+ Ia32LbrCtl->Bits.JCC = 1;
+ Ia32LbrCtl->Bits.NearRelCall = 1;
+ Ia32LbrCtl->Bits.NearIndCall = 1;
+ Ia32LbrCtl->Bits.NearRet = 1;
+ Ia32LbrCtl->Bits.NearIndJmp = 1;
+ Ia32LbrCtl->Bits.NearRelJmp = 1;
+ Ia32LbrCtl->Bits.OtherBranch = 1;
+ Ia32LbrCtl->Bits.CallStack = 1;
+
+ //
+ // Perform filtering the results
+ //
if (FilterOptions & LBR_KERNEL)
{
- Ia32LbrCtl->Bits.OS = 1;
+ Ia32LbrCtl->Bits.OS = 0;
}
+
if (FilterOptions & LBR_USER)
{
- Ia32LbrCtl->Bits.USR = 1;
+ Ia32LbrCtl->Bits.USR = 0;
}
+
if (FilterOptions & LBR_JCC)
{
- Ia32LbrCtl->Bits.JCC = 1;
+ Ia32LbrCtl->Bits.JCC = 0;
}
+
if (FilterOptions & LBR_REL_CALL)
{
- Ia32LbrCtl->Bits.NearRelCall = 1;
+ Ia32LbrCtl->Bits.NearRelCall = 0;
}
+
if (FilterOptions & LBR_IND_CALL)
{
- Ia32LbrCtl->Bits.NearIndCall = 1;
+ Ia32LbrCtl->Bits.NearIndCall = 0;
}
+
if (FilterOptions & LBR_RETURN)
{
- Ia32LbrCtl->Bits.NearRet = 1;
+ Ia32LbrCtl->Bits.NearRet = 0;
}
+
if (FilterOptions & LBR_IND_JMP)
{
- Ia32LbrCtl->Bits.NearIndJmp = 1;
+ Ia32LbrCtl->Bits.NearIndJmp = 0;
}
+
if (FilterOptions & LBR_REL_JMP)
{
- Ia32LbrCtl->Bits.NearRelJmp = 1;
+ Ia32LbrCtl->Bits.NearRelJmp = 0;
}
+
if (FilterOptions & LBR_FAR)
{
- Ia32LbrCtl->Bits.OtherBranch = 1;
+ Ia32LbrCtl->Bits.OtherBranch = 0;
}
+
if (FilterOptions & LBR_CALL_STACK)
{
- Ia32LbrCtl->Bits.CallStack = 1;
+ Ia32LbrCtl->Bits.CallStack = 0;
}
}
@@ -804,7 +830,7 @@ LbrStop()
VOID
LbrFlush()
{
- LogInfo("Flush LBR on cpu core: %d\n", KeGetCurrentProcessorNumberEx(NULL));
+ // LogInfo("Flush LBR on cpu core: %d\n", KeGetCurrentProcessorNumberEx(NULL));
//
// Stop LBR collection and save any remaining entries
@@ -833,7 +859,7 @@ LbrFlush()
VOID
LbrFilter(UINT64 FilterOptions)
{
- LogInfo("Updating LBR filter options: 0x%llx\n", FilterOptions);
+ // LogInfo("Updating LBR filter options: 0x%llx\n", FilterOptions);
//
// First, we flush the LBR to clear out any existing entries that may not meet the new filter criteria
From 517872e07278bcafe6519334dfdde7664cb9c817 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 17 May 2026 02:39:58 +0200
Subject: [PATCH 174/323] create new fields to show branch type in ARCH LBR
---
hyperdbg/hypertrace/code/lbr/Lbr.c | 155 ++++++++++++++++--
.../header/globals/GlobalVariables.h | 6 +
hyperdbg/hypertrace/header/lbr/Lbr.h | 14 +-
hyperdbg/include/SDK/headers/LbrDefinitions.h | 73 +++++++--
.../include/SDK/headers/RequestStructures.h | 2 +-
.../commands/extension-commands/lbr.cpp | 29 ++--
.../commands/extension-commands/lbrdump.cpp | 94 ++++++++++-
7 files changed, 324 insertions(+), 49 deletions(-)
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index f1641ab7..d446012c 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -130,6 +130,14 @@ LbrCheckAndReadArchitecturalLbrDetails()
Ebx1c.AsUInt = b;
Ecx1c.AsUInt = c;
+ //
+ // Store the CPUID.1CH leaf information in a global structure for later use
+ //
+ g_Cpuid28Leafs.Eax = Eax1c;
+ g_Cpuid28Leafs.Ebx = Ebx1c;
+ g_Cpuid28Leafs.Ecx = Ecx1c;
+ g_Cpuid28Leafs.Edx = d;
+
//
// Read LBR capacity from CPUID.1CH.00H:EAX[7:0]
// Based on Intel SDM: For each bit n set in this field, the IA32_LBR_DEPTH.DEPTH value 8 * (n + 1) is supported
@@ -194,6 +202,50 @@ LbrCheckAndReadLegacyLbrDetails()
return TRUE;
}
+/**
+ * @brief Check and adjust compatibility of LBR filterings for ARCH based LBR
+ *
+ * @return VOID
+ */
+VOID
+LbrAdjustArchBasedFilteringCompatibility(IA32_LBR_CTL_REGISTER * Ia32LbrCtl)
+{
+ //
+ // Check capabilities and apply necessary adjustments based on CPU support
+ //
+ if (!g_Cpuid28Leafs.Ebx.LbrCpl)
+ {
+ //
+ // If CPL filtering is not supported
+ // we cannot filter kernel vs user mode branches, so we clear those filter bits to avoid confusion
+ //
+ Ia32LbrCtl->Bits.OS = 0;
+ Ia32LbrCtl->Bits.USR = 0;
+ }
+
+ if (!g_Cpuid28Leafs.Ebx.LbrFilter)
+ {
+ //
+ // If branch filtering is not supported, we cannot filter by branch type, so we clear all the specific branch type filter bits
+ //
+ Ia32LbrCtl->Bits.JCC = 0;
+ Ia32LbrCtl->Bits.NearRelJmp = 0;
+ Ia32LbrCtl->Bits.NearIndJmp = 0;
+ Ia32LbrCtl->Bits.NearRelCall = 0;
+ Ia32LbrCtl->Bits.NearIndCall = 0;
+ Ia32LbrCtl->Bits.NearRet = 0;
+ Ia32LbrCtl->Bits.OtherBranch = 0;
+ }
+
+ if (!g_Cpuid28Leafs.Ebx.LbrCallStack)
+ {
+ //
+ // If call-stack mode is not supported, we cannot filter by call stack, so we clear that filter bit
+ //
+ Ia32LbrCtl->Bits.CallStack = 0;
+ }
+}
+
/**
* @brief Convert a filter options bitmask into IA32_LBR_CTL format for architectural LBR
*
@@ -261,7 +313,7 @@ LbrBuildArchBasedFilterOptions(UINT64 FilterOptions, IA32_LBR_CTL_REGISTER * Ia3
Ia32LbrCtl->Bits.NearRelJmp = 0;
}
- if (FilterOptions & LBR_FAR)
+ if (FilterOptions & LBR_FAR_OTHER_BRANCHES)
{
Ia32LbrCtl->Bits.OtherBranch = 0;
}
@@ -270,8 +322,12 @@ LbrBuildArchBasedFilterOptions(UINT64 FilterOptions, IA32_LBR_CTL_REGISTER * Ia3
{
Ia32LbrCtl->Bits.CallStack = 0;
}
-}
+ //
+ // Adjust LBR fitlering options based on the CPU capabilities to ensure we are not setting unsupported filter bits
+ //
+ LbrAdjustArchBasedFilteringCompatibility(Ia32LbrCtl);
+}
/**
* @brief Set the LBR select filter MSR (MSR_LEGACY_LBR_SELECT) for legacy LBR,
* dispatching via VMCALL when in VMX non-root mode
@@ -924,6 +980,57 @@ LbrSave()
}
}
+/**
+ * @brief Get the branch type name based on the LBR branch type value (only applicable for architectural LBR)
+ *
+ * @details THIS FUNCTION IS ALSO IMPLEMENTED IN THE USER MODE
+ *
+ * @param BrType The raw branch type value from the LBR info MSR
+ * @param BrTypeName A character buffer to receive the branch type name string
+ *
+ * @return VOID
+ */
+VOID
+LbrGetArchBranchTypet(UINT32 BrType, CHAR * BrTypeName)
+{
+ if (BrType == LBR_BR_TYPE_COND)
+ {
+ strncpy(BrTypeName, "COND", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType == LBR_BR_TYPE_JMP_INDIRECT)
+ {
+ strncpy(BrTypeName, "JMP Indirect", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType == LBR_BR_TYPE_JMP_DIRECT)
+ {
+ strncpy(BrTypeName, "JMP Direct", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType == LBR_BR_TYPE_CALL_INDIRECT)
+ {
+ strncpy(BrTypeName, "CALL Indirect", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType == LBR_BR_TYPE_CALL_DIRECT)
+ {
+ strncpy(BrTypeName, "CALL Direct", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType == LBR_BR_TYPE_RET)
+ {
+ strncpy(BrTypeName, "RET", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType >= LBR_BR_TYPE_RESERVED_MIN && BrType <= LBR_BR_TYPE_RESERVED_MAX)
+ {
+ strncpy(BrTypeName, "Reserved", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType >= LBR_BR_TYPE_OTHER_MIN && BrType <= LBR_BR_TYPE_OTHER_MAX)
+ {
+ strncpy(BrTypeName, "Other Branch", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else
+ {
+ strncpy(BrTypeName, "Unknown", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+}
+
/**
* @brief Print collected LBR branches
*
@@ -934,8 +1041,9 @@ LbrPrint()
{
ULONG CurrentIdx;
LBR_STACK_ENTRY * State;
- UINT32 CurrentCore = 0;
-
+ UINT32 CurrentCore = 0;
+ CHAR BrTypeName[LBR_BR_TYPE_NAME_MAX_LEN] = {0};
+ UINT32 BrType = 0;
//
// Get the current core id
//
@@ -967,11 +1075,38 @@ LbrPrint()
continue;
}
- Log("\t [%2u] Branch Mispredicted: %s, Cycle Count (Decimal): %03d - From: %016llx To: %016llx\n",
- CurrentIdx,
- State->LastBranchInfo[CurrentIdx].Mispred ? "true " : "false",
- State->LastBranchInfo[CurrentIdx].CycleCount,
- State->BranchEntry[CurrentIdx].From,
- State->BranchEntry[CurrentIdx].To);
+ if (g_ArchBasedLastBranchRecord)
+ {
+ BrType = (UINT32)State->LastBranchInfo[CurrentIdx].BrType_OnlyArchLbr;
+
+ //
+ // Get the branch type name for better readability when printing
+ //
+ LbrGetArchBranchTypet(BrType, BrTypeName);
+
+ //
+ // Architectural LBR
+ //
+ Log("\t [%2u] Branch Mispredicted: %s, Branch type: %s, Cycle Count (Decimal): %04d (is valid? %s) - From: %016llx To: %016llx\n",
+ CurrentIdx,
+ State->LastBranchInfo[CurrentIdx].Mispred ? "true " : "false",
+ BrTypeName,
+ State->LastBranchInfo[CurrentIdx].CycleCount,
+ State->LastBranchInfo[CurrentIdx].CycCntValid_OnlyArchLbr ? "true " : "false",
+ State->BranchEntry[CurrentIdx].From,
+ State->BranchEntry[CurrentIdx].To);
+ }
+ else
+ {
+ //
+ // Legacy LBR
+ //
+ Log("\t [%2u] Branch Mispredicted: %s, Cycle Count (Decimal): %04d - From: %016llx To: %016llx\n",
+ CurrentIdx,
+ State->LastBranchInfo[CurrentIdx].Mispred ? "true " : "false",
+ State->LastBranchInfo[CurrentIdx].CycleCount,
+ State->BranchEntry[CurrentIdx].From,
+ State->BranchEntry[CurrentIdx].To);
+ }
}
}
diff --git a/hyperdbg/hypertrace/header/globals/GlobalVariables.h b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
index 68a700b4..56d3dd06 100644
--- a/hyperdbg/hypertrace/header/globals/GlobalVariables.h
+++ b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
@@ -64,3 +64,9 @@ LBR_STACK_ENTRY * g_LbrStateList;
*
*/
ULONGLONG g_LbrCapacity;
+
+/**
+ * @brief The global variable to hold CPUID leaf 0x28 information (Architectural LBR Enumeration Leaf)
+ *
+ */
+CPUID28_LEAFS g_Cpuid28Leafs;
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index 96967dee..0561fc74 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -44,9 +44,8 @@
//////////////////////////////////////////////////
/*
- * Intel Architectural LBR CPUID detection/enumeration details:
+ * @brief Intel Architectural LBR CPUID detection/enumeration details:
*/
-
typedef union _CPUID28_EAX
{
struct
@@ -92,6 +91,17 @@ typedef union _CPUID28_ECX
UINT32 AsUInt;
} CPUID28_ECX, *PCPUID28_ECX;
+/*
+ * @brief The structure to hold the CPUID leaf 0x28 details for Architectural LBRs
+ */
+typedef struct _CPUID28_LEAFS
+{
+ CPUID28_EAX Eax;
+ CPUID28_EBX Ebx;
+ CPUID28_ECX Ecx;
+ UINT32 Edx;
+} CPUID28_LEAFS, *PCPUID28_LEAFS;
+
//////////////////////////////////////////////////
// MSR Structures //
//////////////////////////////////////////////////
diff --git a/hyperdbg/include/SDK/headers/LbrDefinitions.h b/hyperdbg/include/SDK/headers/LbrDefinitions.h
index 47bee331..5696644a 100644
--- a/hyperdbg/include/SDK/headers/LbrDefinitions.h
+++ b/hyperdbg/include/SDK/headers/LbrDefinitions.h
@@ -41,16 +41,16 @@
* the actual MSR. But it helps the constraint code to understand
* that this is a separate configuration.
*/
-#define LBR_KERNEL (1 << LBR_KERNEL_BIT)
-#define LBR_USER (1 << LBR_USER_BIT)
-#define LBR_JCC (1 << LBR_JCC_BIT)
-#define LBR_REL_CALL (1 << LBR_REL_CALL_BIT)
-#define LBR_IND_CALL (1 << LBR_IND_CALL_BIT)
-#define LBR_RETURN (1 << LBR_RETURN_BIT)
-#define LBR_IND_JMP (1 << LBR_IND_JMP_BIT)
-#define LBR_REL_JMP (1 << LBR_REL_JMP_BIT)
-#define LBR_FAR (1 << LBR_FAR_BIT)
-#define LBR_CALL_STACK (1 << LBR_CALL_STACK_BIT)
+#define LBR_KERNEL (1 << LBR_KERNEL_BIT)
+#define LBR_USER (1 << LBR_USER_BIT)
+#define LBR_JCC (1 << LBR_JCC_BIT)
+#define LBR_REL_CALL (1 << LBR_REL_CALL_BIT)
+#define LBR_IND_CALL (1 << LBR_IND_CALL_BIT)
+#define LBR_RETURN (1 << LBR_RETURN_BIT)
+#define LBR_IND_JMP (1 << LBR_IND_JMP_BIT)
+#define LBR_REL_JMP (1 << LBR_REL_JMP_BIT)
+#define LBR_FAR_OTHER_BRANCHES (1 << LBR_FAR_BIT) // It is used for OTHER BRANCHES in ARCH LBR
+#define LBR_CALL_STACK (1 << LBR_CALL_STACK_BIT)
/**
* @brief Maximum LBR capacity that is supported by processors
@@ -58,13 +58,28 @@
*/
#define MAXIMUM_LBR_CAPACITY 0x20 // 32 entries, which is the maximum supported by modern Intel CPUs
+/**
+ * @brief Branch Type Encodings (Only on Architectural LBR, not available in Legacy LBR)
+ */
+#define LBR_BR_TYPE_COND 0x0
+#define LBR_BR_TYPE_JMP_INDIRECT 0x1
+#define LBR_BR_TYPE_JMP_DIRECT 0x2
+#define LBR_BR_TYPE_CALL_INDIRECT 0x3
+#define LBR_BR_TYPE_CALL_DIRECT 0x4
+#define LBR_BR_TYPE_RET 0x5
+#define LBR_BR_TYPE_RESERVED_MIN 0x6 /* 011xb */
+#define LBR_BR_TYPE_RESERVED_MAX 0x7 /* 011xb */
+#define LBR_BR_TYPE_OTHER_MIN 0x8 /* 1xxxb */
+#define LBR_BR_TYPE_OTHER_MAX 0xF /* 1xxxb */
+
+#define LBR_BR_TYPE_NAME_MAX_LEN 16 /* longest string is "CALL Indirect\0" = 14 chars, rounded up */
+
//////////////////////////////////////////////////
// MSR Structures //
//////////////////////////////////////////////////
-
/**
* MSR_LBR_INFO_x - Last Branch Record Info Register
- *
+ * Register Address: 1200H-121FH, 4608-4639
*/
typedef union
{
@@ -73,31 +88,53 @@ typedef union
/** Bits 15:0 - Elapsed core clocks since last update to the LBR stack (saturating) */
UINT64 CycleCount : 16;
- /** Bits 60:16 - Reserved (R/W) */
- UINT64 Reserved : 45;
+ /** Bits 55:16 - Undefined. May be zero or non-zero.
+ * Writes of non-zero values do not fault, but reads may return a different value. */
+ UINT64 Reserved : 40;
+
+ /**
+ * Bits 59:56 - Branch type recorded by this LBR entry.
+ * Encodings:
+ * 0000b = COND
+ * 0001b = JMP Indirect
+ * 0010b = JMP Direct
+ * 0011b = CALL Indirect
+ * 0100b = CALL Direct
+ * 0101b = RET
+ * 011xb = Reserved
+ * 1xxxb = Other Branch
+ */
+ UINT64 BrType_OnlyArchLbr : 4;
+
+ /** Bit 60 - When set, the CycleCount field contains a valid elapsed cycle count */
+ UINT64 CycCntValid_OnlyArchLbr : 1;
/**
* Bit 61 - TSX Abort indicator.
* When set:
* LBR_FROM = EIP at the time of the TSX Abort
* LBR_TO = EIP of the start of HLE region OR EIP of the RTM Abort Handler
+ * Undefined on processors that do not support Intel TSX
+ * (CPUID.07H.00H:EBX.HLE[4] = 0 and CPUID.07H.00H:EBX.RTM[11] = 0).
*/
UINT64 TsxAbort : 1;
- /** Bit 62 - When set, indicates the entry occurred in a TSX region */
+ /**
+ * Bit 62 - When set, indicates the branch retired during a TSX transaction.
+ * Undefined on processors that do not support Intel TSX
+ * (CPUID.07H.00H:EBX.HLE[4] = 0 and CPUID.07H.00H:EBX.RTM[11] = 0).
+ */
UINT64 InTsx : 1;
/**
* Bit 63 - Branch misprediction flag.
* When set, the target of the branch was mispredicted and/or the
* direction (taken/non-taken) was mispredicted.
- * When clear, the target branch was predicted.
+ * When clear, the branch target/direction was correctly predicted.
*/
UINT64 Mispred : 1;
};
-
UINT64 AsUInt;
-
} MSR_LBR_INFO, *PMSR_LBR_INFO;
//////////////////////////////////////////////////
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 1680cae4..9c35ad51 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1283,7 +1283,7 @@ typedef struct _HYPERTRACE_LBR_DUMP_PACKETS
{
UINT32 CoreId;
BOOLEAN NextCoreIsValid; // In the case of dumping all cores, this flag indicates whether the next core number is valid
- BOOLEAN ArchBasedLBR; // Whether the LBR is architecture-based (like Intel CET) or not (like Intel LBR or AMD IBS)
+ BOOLEAN ArchBasedLBR; // Whether the LBR is architecture-based
LBR_STACK_ENTRY LbrStack;
UINT8 CurrentLbrCapacity;
UINT32 KernelStatus;
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index b4ce1c0c..84132bf3 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -38,15 +38,20 @@ CommandLbrHelp()
ShowMessages("\t\te.g : !lbr filter user rel_call ind_call return far\n");
ShowMessages("\nlist of filter options: \n");
- ShowMessages("\t kernel: do not capture at ring0\n");
- ShowMessages("\t user: do not capture at ring > 0\n");
- ShowMessages("\t jcc: do not capture conditional branches\n");
- ShowMessages("\t rel_call: do not capture relative calls\n");
- ShowMessages("\t ind_call: do not capture indirect calls\n");
- ShowMessages("\t return: do not capture near returns\n");
- ShowMessages("\t ind_jmp: do not capture indirect jumps\n");
- ShowMessages("\t rel_jmp: do not capture relative jumps\n");
- ShowMessages("\t far: do not capture far branches\n");
+ ShowMessages("\t kernel: do not capture at ring0\n");
+ ShowMessages("\t user: do not capture at ring > 0\n");
+ ShowMessages("\t jcc: do not capture conditional branches\n");
+ ShowMessages("\t rel_call: do not capture relative calls\n");
+ ShowMessages("\t ind_call: do not capture indirect calls\n");
+ ShowMessages("\t return: do not capture near returns\n");
+ ShowMessages("\t ind_jmp: do not capture indirect jumps\n");
+ ShowMessages("\t rel_jmp: do not capture relative jumps\n");
+ ShowMessages("\t far: do not capture far branches (only in legacy LBR. check docs for details)\n");
+ ShowMessages("\t other_branches: do not capture jmp/call ptr*, jmp/call m*, ret (0c8h), sys*, interrupts,\n");
+ ShowMessages("\t exceptions (other than debug exceptions), iret, int3, intn, into, tsx abort\n");
+ ShowMessages("\t eenter, eresume, eexit, aex, init, sipi, rsm (only in ARCH LBR. check docs for details)\n");
+ ShowMessages("\t call_stack: enable LBR stack to use LIFO filtering to capture call stack profile\n");
+ ShowMessages("\t not available on CPUs older than Haswell (needs special treatment. check docs for details)\n");
ShowMessages("\t (no option): capture everything (default option)\n");
}
@@ -192,9 +197,11 @@ CommandLbrParseFilterOperation(vector CommandTokens, HYPERTRACE_LB
{
LbrRequest->LbrFilterOptions |= LBR_REL_JMP;
}
- else if (CompareLowerCaseStrings(CommandTokens.at(i), "far"))
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "far") ||
+ CompareLowerCaseStrings(CommandTokens.at(i), "other_branch") ||
+ CompareLowerCaseStrings(CommandTokens.at(i), "other_branches"))
{
- LbrRequest->LbrFilterOptions |= LBR_FAR;
+ LbrRequest->LbrFilterOptions |= LBR_FAR_OTHER_BRANCHES;
}
else if (CompareLowerCaseStrings(CommandTokens.at(i), "call_stack"))
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
index 078e27f4..372e11cc 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
@@ -88,6 +88,57 @@ CommandLbrdumpHelp()
ShowMessages("\t\te.g : !lbrdump core 1\n");
}
+/**
+ * @brief Get the branch type name based on the LBR branch type value (only applicable for architectural LBR)
+ *
+ * @details THIS FUNCTION IS ALSO IMPLEMENTED IN THE USER MODE
+ *
+ * @param BrType The raw branch type value from the LBR info MSR
+ * @param BrTypeName A character buffer to receive the branch type name string
+ *
+ * @return VOID
+ */
+VOID
+CommandLbrdumpGetArchBranchTypet(UINT32 BrType, CHAR * BrTypeName)
+{
+ if (BrType == LBR_BR_TYPE_COND)
+ {
+ strncpy(BrTypeName, "COND", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType == LBR_BR_TYPE_JMP_INDIRECT)
+ {
+ strncpy(BrTypeName, "JMP Indirect", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType == LBR_BR_TYPE_JMP_DIRECT)
+ {
+ strncpy(BrTypeName, "JMP Direct", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType == LBR_BR_TYPE_CALL_INDIRECT)
+ {
+ strncpy(BrTypeName, "CALL Indirect", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType == LBR_BR_TYPE_CALL_DIRECT)
+ {
+ strncpy(BrTypeName, "CALL Direct", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType == LBR_BR_TYPE_RET)
+ {
+ strncpy(BrTypeName, "RET", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType >= LBR_BR_TYPE_RESERVED_MIN && BrType <= LBR_BR_TYPE_RESERVED_MAX)
+ {
+ strncpy(BrTypeName, "Reserved", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else if (BrType >= LBR_BR_TYPE_OTHER_MIN && BrType <= LBR_BR_TYPE_OTHER_MAX)
+ {
+ strncpy(BrTypeName, "Other Branch", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+ else
+ {
+ strncpy(BrTypeName, "Unknown", LBR_BR_TYPE_NAME_MAX_LEN);
+ }
+}
+
/**
* @brief Print collected LBR branches
*
@@ -99,7 +150,9 @@ VOID
CommandLbrdumpPrint(HYPERTRACE_LBR_DUMP_PACKETS * LbrdumpRequest)
{
ULONG CurrentIdx;
- BOOLEAN IsCoreEmpty = TRUE;
+ BOOLEAN IsCoreEmpty = TRUE;
+ CHAR BrTypeName[LBR_BR_TYPE_NAME_MAX_LEN] = {0};
+ UINT32 BrType = 0;
ShowMessages("LBR Chronological Trace on core (decimal): %d\n\n", LbrdumpRequest->CoreId);
@@ -124,12 +177,39 @@ CommandLbrdumpPrint(HYPERTRACE_LBR_DUMP_PACKETS * LbrdumpRequest)
IsCoreEmpty = FALSE;
- ShowMessages("\t [%2u] Branch Mispredicted: %s, Cycle Count (Decimal): %03d - From: %016llx To: %016llx\n",
- CurrentIdx,
- LbrdumpRequest->LbrStack.LastBranchInfo[CurrentIdx].Mispred ? "true " : "false",
- LbrdumpRequest->LbrStack.LastBranchInfo[CurrentIdx].CycleCount,
- LbrdumpRequest->LbrStack.BranchEntry[CurrentIdx].From,
- LbrdumpRequest->LbrStack.BranchEntry[CurrentIdx].To);
+ if (LbrdumpRequest->ArchBasedLBR)
+ {
+ BrType = (UINT32)LbrdumpRequest->LbrStack.LastBranchInfo[CurrentIdx].BrType_OnlyArchLbr;
+
+ //
+ // Get the branch type name for better readability when printing
+ //
+ CommandLbrdumpGetArchBranchTypet(BrType, BrTypeName);
+
+ //
+ // Architectural LBR
+ //
+ ShowMessages("\t [%2u] Branch Mispredicted: %s, Branch type: %s, Cycle Count (Decimal): %04d (is valid? %s) - From: %016llx To: %016llx\n",
+ CurrentIdx,
+ LbrdumpRequest->LbrStack.LastBranchInfo[CurrentIdx].Mispred ? "true " : "false",
+ BrTypeName,
+ LbrdumpRequest->LbrStack.LastBranchInfo[CurrentIdx].CycleCount,
+ LbrdumpRequest->LbrStack.LastBranchInfo[CurrentIdx].CycCntValid_OnlyArchLbr ? "true " : "false",
+ LbrdumpRequest->LbrStack.BranchEntry[CurrentIdx].From,
+ LbrdumpRequest->LbrStack.BranchEntry[CurrentIdx].To);
+ }
+ else
+ {
+ //
+ // Legacy LBR
+ //
+ ShowMessages("\t [%2u] Branch Mispredicted: %s, Cycle Count (Decimal): %04d - From: %016llx To: %016llx\n",
+ CurrentIdx,
+ LbrdumpRequest->LbrStack.LastBranchInfo[CurrentIdx].Mispred ? "true " : "false",
+ LbrdumpRequest->LbrStack.LastBranchInfo[CurrentIdx].CycleCount,
+ LbrdumpRequest->LbrStack.BranchEntry[CurrentIdx].From,
+ LbrdumpRequest->LbrStack.BranchEntry[CurrentIdx].To);
+ }
}
if (IsCoreEmpty)
From 64328723c864df5bef3d81c2925edf1661c01a8c Mon Sep 17 00:00:00 2001
From: Masoud Rahimi Jafari
Date: Sun, 17 May 2026 03:18:05 +0200
Subject: [PATCH 175/323] Added Intel-PT to hypertrace
---
hyperdbg/hypertrace/code/api/PtApi.c | 380 ++++-
hyperdbg/hypertrace/code/api/TraceApi.c | 33 +
.../hypertrace/code/broadcast/Broadcast.c | 68 +
.../hypertrace/code/broadcast/DpcRoutines.c | 111 ++
hyperdbg/hypertrace/code/pt/Pt.c | 1228 ++++++++++++++++-
hyperdbg/hypertrace/header/api/PtApi.h | 22 +-
.../hypertrace/header/broadcast/Broadcast.h | 18 +
.../hypertrace/header/broadcast/DpcRoutines.h | 18 +
.../header/globals/GlobalVariables.h | 6 +
hyperdbg/hypertrace/header/pt/Pt.h | 119 +-
hyperdbg/include/SDK/HyperDbgSdk.h | 5 +
hyperdbg/include/SDK/headers/PtDefinitions.h | 337 +++++
.../include/SDK/headers/RequestStructures.h | 19 +
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 17 +-
.../commands/extension-commands/pt.cpp | 208 ++-
15 files changed, 2538 insertions(+), 51 deletions(-)
create mode 100644 hyperdbg/include/SDK/headers/PtDefinitions.h
diff --git a/hyperdbg/hypertrace/code/api/PtApi.c b/hyperdbg/hypertrace/code/api/PtApi.c
index 3daf409e..7255c6ca 100644
--- a/hyperdbg/hypertrace/code/api/PtApi.c
+++ b/hyperdbg/hypertrace/code/api/PtApi.c
@@ -1,23 +1,84 @@
/**
* @file PtApi.c
- * @author
+ * @author Sina Karvandi (sina@hyperdbg.org)
* @brief Tracing routines for HyperTrace module (Intel Processor Trace)
* @details
* @version 0.19
- * @date 2026-04-25
+ * @date 2026-04-29
*
* @copyright This project is released under the GNU Public License v3.
*/
#include "pch.h"
/**
- * @brief Example of performing PT trace
+ * @brief Translate a user-mode HYPERTRACE_PT_OPERATION_PACKETS into a
+ * kernel-side PT_TRACE_CONFIG, falling back to defaults when the
+ * caller left fields zero (e.g. a bare `!pt filter`).
*
- * @return BOOLEAN
+ * The returned config is value-typed; HyperTracePtFilter's slow
+ * path copies it into every per-CPU slot via
+ * HyperTracePtSeedConfigOnAllCpus.
*/
-VOID
-HyperTracePtExample()
+static VOID
+HyperTracePtBuildConfig(const HYPERTRACE_PT_OPERATION_PACKETS * Req,
+ PT_TRACE_CONFIG * OutCfg)
{
+ UINT32 Copy;
+
+ //
+ // Start from defaults; only the fields the user can drive are then
+ // overridden.
+ //
+ PtEngineInitDefaultConfig(OutCfg);
+
+ //
+ // If the request specifies neither user nor kernel, default to both
+ // (matches LBR behaviour when filter is empty).
+ //
+ if (Req->TraceUser || Req->TraceKernel)
+ {
+ OutCfg->TraceUser = (Req->TraceUser != 0) ? TRUE : FALSE;
+ OutCfg->TraceKernel = (Req->TraceKernel != 0) ? TRUE : FALSE;
+ }
+
+ OutCfg->TargetCr3 = Req->TargetCr3;
+
+ if (Req->BufferSize != 0)
+ {
+ OutCfg->BufferSize = Req->BufferSize;
+ }
+
+ OutCfg->NumAddrRanges = Req->NumAddrRanges;
+ if (OutCfg->NumAddrRanges > PT_MAX_ADDR_RANGES)
+ OutCfg->NumAddrRanges = PT_MAX_ADDR_RANGES;
+
+ for (Copy = 0; Copy < OutCfg->NumAddrRanges; Copy++)
+ {
+ OutCfg->AddrRanges[Copy] = Req->AddrRanges[Copy];
+ }
+}
+
+/**
+ * @brief Push a fully-formed PT_TRACE_CONFIG into every active per-CPU
+ * slot. Used by the Enable path so PtAllocateAllCpuBuffers picks up
+ * the right BufferSize on every core. Runs at PASSIVE_LEVEL —
+ * does NOT start or stop tracing (callers handle that via DPC).
+ */
+static VOID
+HyperTracePtSeedConfigOnAllCpus(const PT_TRACE_CONFIG * Cfg)
+{
+ UINT32 ProcessorsCount;
+ UINT32 i;
+
+ if (g_PtStateList == NULL || Cfg == NULL)
+ return;
+
+ ProcessorsCount = KeQueryActiveProcessorCount(0);
+
+ for (i = 0; i < ProcessorsCount; i++)
+ {
+ g_PtStateList[i].Config = *Cfg;
+ }
}
/**
@@ -48,6 +109,28 @@ HyperTracePtEnable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest)
return FALSE;
}
+ //
+ // Allocate per-CPU ToPA / output / overflow buffers at PASSIVE_LEVEL
+ // (the contiguous-memory allocator cannot run from a DPC).
+ // PtAllocateAllCpuBuffers reads Cpu->Config.BufferSize, which was set
+ // either at module init (default 2MB) or by a prior !pt filter — so
+ // any pre-enable filter settings are preserved here.
+ //
+ if (!PtAllocateAllCpuBuffers())
+ {
+ //
+ // Roll back any partial allocations so we don't leak on next try.
+ //
+ PtFreeAllCpuBuffers();
+ PtOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_NOT_SUPPORTED;
+ return FALSE;
+ }
+
+ //
+ // Broadcast enabling PT on all cores
+ //
+ BroadcastEnablePtOnAllCores();
+
//
// Set the flag to indicate that PT tracing is enabled
//
@@ -72,9 +155,9 @@ BOOLEAN
HyperTracePtDisable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest)
{
//
- // Check if LBR is already disabled or not
+ // Check if PT is already disabled or not
//
- if (!g_LastBranchRecordEnabled)
+ if (!g_ProcessorTraceEnabled)
{
if (PtOperationRequest != NULL)
{
@@ -89,6 +172,17 @@ HyperTracePtDisable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest)
//
g_ProcessorTraceEnabled = FALSE;
+ //
+ // Broadcast disabling PT on all cores (DPC stops tracing per-core)
+ //
+ BroadcastDisablePtOnAllCores();
+
+ //
+ // Free per-CPU buffers at PASSIVE_LEVEL after the broadcast has stopped
+ // tracing on every core.
+ //
+ PtFreeAllCpuBuffers();
+
//
// Set successful status
//
@@ -100,6 +194,250 @@ HyperTracePtDisable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest)
return TRUE;
}
+/**
+ * @brief Save PT trace state on all cores
+ *
+ * @param HyperTraceOperationRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTracePtSave(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest)
+{
+ //
+ // PT must be enabled first
+ //
+ if (!g_ProcessorTraceEnabled)
+ {
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_ALREADY_DISABLED;
+ }
+ return FALSE;
+ }
+
+ LogInfo("Saving PT state...\n");
+
+ BroadcastSavePtOnAllCores();
+
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
+
+ return TRUE;
+}
+
+/**
+ * @brief Dump PT trace state for HyperTrace
+ *
+ * @param HyperTraceOperationRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTracePtDump(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest)
+{
+ if (!g_ProcessorTraceEnabled)
+ {
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_ALREADY_DISABLED;
+ }
+ return FALSE;
+ }
+
+ LogInfo("Dumping PT trace summary...\n");
+
+ BroadcastDumpPtOnAllCores();
+
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
+
+ return TRUE;
+}
+
+/**
+ * @brief Flush PT trace state on all cores (free buffers)
+ *
+ * @param HyperTraceOperationRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTracePtFlush(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest)
+{
+ if (!g_ProcessorTraceEnabled)
+ {
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_ALREADY_DISABLED;
+ }
+ return FALSE;
+ }
+
+ //
+ // Stop tracing on all cores via DPC (so MSRs are quiesced)
+ //
+ BroadcastFlushPtOnAllCores();
+
+ //
+ // Then free contiguous buffers at PASSIVE_LEVEL
+ //
+ PtFreeAllCpuBuffers();
+
+ //
+ // Reallocate buffers so subsequent !pt save / !pt dump / !pt enable
+ // continue to work — Flush in LBR keeps tracing alive, so we mirror
+ // that by leaving PT primed for the next !pt enable.
+ //
+ if (!PtAllocateAllCpuBuffers())
+ {
+ PtFreeAllCpuBuffers();
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_NOT_SUPPORTED;
+ }
+ g_ProcessorTraceEnabled = FALSE;
+ return FALSE;
+ }
+
+ //
+ // Resume tracing on all cores
+ //
+ BroadcastEnablePtOnAllCores();
+
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
+
+ return TRUE;
+}
+
+/**
+ * @brief Apply a new PT trace configuration (TraceUser / TraceKernel /
+ * TargetCr3 / BufferSize / NumAddrRanges + AddrRanges) on all cores.
+ *
+ * Mirrors HyperTraceLbrUpdateFilterOptions / LbrFilter:
+ *
+ * - If PT is currently enabled, stop tracing on all cores, free
+ * and reallocate buffers (because BufferSize may have changed),
+ * push the new config into every per-CPU slot, and resume
+ * tracing on all cores.
+ * - If PT is currently disabled, only update the per-CPU config
+ * so that the next `!pt enable` picks it up.
+ *
+ * Must be called at IRQL == PASSIVE_LEVEL because of the
+ * contiguous-memory allocator.
+ */
+BOOLEAN
+HyperTracePtFilter(HYPERTRACE_PT_OPERATION_PACKETS * Req)
+{
+ PT_FILTER_OPTIONS Options = {0};
+ BOOLEAN WasEnabled = g_ProcessorTraceEnabled;
+ BOOLEAN BufferChanged = FALSE;
+ UINT64 ExistingSize = 0;
+ UINT32 Copy;
+
+ //
+ // Translate the user-mode packet into PT_FILTER_OPTIONS — the narrow
+ // surface PtFilter operates on. Default to user+kernel when the
+ // caller specified neither (matches LBR's empty-filter behaviour).
+ //
+ if (Req->TraceUser || Req->TraceKernel)
+ {
+ Options.TraceUser = (Req->TraceUser != 0) ? TRUE : FALSE;
+ Options.TraceKernel = (Req->TraceKernel != 0) ? TRUE : FALSE;
+ }
+ else
+ {
+ Options.TraceUser = TRUE;
+ Options.TraceKernel = TRUE;
+ }
+ Options.TargetCr3 = Req->TargetCr3;
+ Options.BufferSize = Req->BufferSize;
+ Options.NumAddrRanges = Req->NumAddrRanges;
+ if (Options.NumAddrRanges > PT_MAX_ADDR_RANGES)
+ Options.NumAddrRanges = PT_MAX_ADDR_RANGES;
+ for (Copy = 0; Copy < Options.NumAddrRanges; Copy++)
+ {
+ Options.AddrRanges[Copy] = Req->AddrRanges[Copy];
+ }
+
+ //
+ // Decide between fast (filter-only) and slow (buffer-resize) paths.
+ //
+ if (g_PtStateList != NULL)
+ {
+ ExistingSize = g_PtStateList[0].Config.BufferSize;
+ }
+ if (Options.BufferSize != 0 && Options.BufferSize != ExistingSize)
+ {
+ BufferChanged = TRUE;
+ }
+
+ if (!WasEnabled || BufferChanged)
+ {
+ //
+ // Slow path — PT is off and/or BufferSize changed. We have to
+ // free + reallocate per-CPU buffers at PASSIVE_LEVEL, so we
+ // can't go through DPC for the config seeding either.
+ //
+ PT_TRACE_CONFIG Cfg;
+
+ if (WasEnabled)
+ {
+ BroadcastFlushPtOnAllCores();
+ PtFreeAllCpuBuffers();
+ }
+
+ //
+ // Build a full PT_TRACE_CONFIG (defaults + the user-tunable
+ // fields from the request) and seed it on every CPU so the next
+ // PtAllocateAllCpuBuffers picks up the right BufferSize and
+ // PtEngineStart programs the right RTIT_CTL bits.
+ //
+ HyperTracePtBuildConfig(Req, &Cfg);
+ HyperTracePtSeedConfigOnAllCpus(&Cfg);
+
+ if (WasEnabled)
+ {
+ if (!PtAllocateAllCpuBuffers())
+ {
+ PtFreeAllCpuBuffers();
+ g_ProcessorTraceEnabled = FALSE;
+ if (Req != NULL)
+ {
+ Req->KernelStatus = DEBUGGER_ERROR_PT_NOT_SUPPORTED;
+ }
+ return FALSE;
+ }
+
+ BroadcastEnablePtOnAllCores();
+ }
+ }
+ else
+ {
+ //
+ // Fast filter-only path: PT is running and BufferSize is
+ // unchanged. Force Options.BufferSize=0 so PtFilter on each core
+ // keeps the buffer that's already allocated, then broadcast.
+ //
+ Options.BufferSize = 0;
+ BroadcastFilterPtOnAllCores(&Options);
+ }
+
+ if (Req != NULL)
+ {
+ Req->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
+
+ return TRUE;
+}
+
/**
* @brief Perform actions related to HyperTrace PT
*
@@ -128,7 +466,7 @@ HyperTracePtPerformOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationReques
{
case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_ENABLE:
- LogInfo("HyperTrace: Enabling LBR tracing...\n");
+ LogInfo("HyperTrace: Enabling PT tracing...\n");
HyperTracePtEnable(PtOperationRequest);
@@ -144,13 +482,33 @@ HyperTracePtPerformOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationReques
case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SAVE:
- LogInfo("HyperTrace: Saving LBR tracing (Not implemented)\n");
+ LogInfo("HyperTrace: Saving PT tracing...\n");
+
+ HyperTracePtSave(PtOperationRequest);
break;
case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DUMP:
- LogInfo("HyperTrace: Showing PT tracing (Not implemented)\n");
+ LogInfo("HyperTrace: Showing PT tracing...\n");
+
+ HyperTracePtDump(PtOperationRequest);
+
+ break;
+
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_FLUSH:
+
+ LogInfo("HyperTrace: Flushing PT tracing...\n");
+
+ HyperTracePtFlush(PtOperationRequest);
+
+ break;
+
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_FILTER:
+
+ LogInfo("HyperTrace: Updating PT filter / config...\n");
+
+ HyperTracePtFilter(PtOperationRequest);
break;
diff --git a/hyperdbg/hypertrace/code/api/TraceApi.c b/hyperdbg/hypertrace/code/api/TraceApi.c
index 950a5532..cd06b411 100644
--- a/hyperdbg/hypertrace/code/api/TraceApi.c
+++ b/hyperdbg/hypertrace/code/api/TraceApi.c
@@ -55,6 +55,22 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
//
g_LbrStateList = (LBR_STACK_ENTRY *)PlatformMemAllocateZeroedNonPagedPool(sizeof(LBR_STACK_ENTRY) * ProcessorsCount);
+ //
+ // Initialize the global PT per-CPU state list. Each entry starts in
+ // PT_STATE_DISABLED with no buffers allocated; PtStart() will lazily
+ // allocate ToPA / output / overflow buffers on first use per core.
+ //
+ g_PtStateList = (PT_PER_CPU *)PlatformMemAllocateZeroedNonPagedPool(sizeof(PT_PER_CPU) * ProcessorsCount);
+ if (g_PtStateList != NULL)
+ {
+ UINT32 i;
+ for (i = 0; i < ProcessorsCount; i++)
+ {
+ PtEngineInitDefaultConfig(&g_PtStateList[i].Config);
+ g_PtStateList[i].State = PT_STATE_DISABLED;
+ }
+ }
+
//
// Set the flag to indicate whether the initialization is being done for hypervisor environment or not
//
@@ -111,6 +127,23 @@ HyperTraceUnInit()
HyperTracePtDisable(NULL);
}
+ //
+ // Free PT buffers (if any) and the per-CPU state list
+ //
+ if (g_PtStateList != NULL)
+ {
+ UINT32 ProcessorsCountLocal = KeQueryActiveProcessorCount(0);
+ UINT32 i;
+
+ for (i = 0; i < ProcessorsCountLocal; i++)
+ {
+ PtEngineFreeBuffers(&g_PtStateList[i]);
+ }
+
+ PlatformMemFreePool(g_PtStateList);
+ g_PtStateList = NULL;
+ }
+
//
// Reset the environment flag to default value
//
diff --git a/hyperdbg/hypertrace/code/broadcast/Broadcast.c b/hyperdbg/hypertrace/code/broadcast/Broadcast.c
index 12dc62cd..85cf2d36 100644
--- a/hyperdbg/hypertrace/code/broadcast/Broadcast.c
+++ b/hyperdbg/hypertrace/code/broadcast/Broadcast.c
@@ -66,3 +66,71 @@ BroadcastFilterLbrOptionsOnAllCores(UINT64 LbrFilterOptions)
//
KeGenericCallDpc(DpcRoutineFilterLbrOptions, (PVOID)(UINT_PTR)LbrFilterOptions);
}
+
+/**
+ * @brief Routines to enable PT on all cores
+ *
+ * @return VOID
+ */
+VOID
+BroadcastEnablePtOnAllCores()
+{
+ KeGenericCallDpc(DpcRoutineEnablePt, NULL);
+}
+
+/**
+ * @brief Routines to disable PT on all cores
+ *
+ * @return VOID
+ */
+VOID
+BroadcastDisablePtOnAllCores()
+{
+ KeGenericCallDpc(DpcRoutineDisablePt, NULL);
+}
+
+/**
+ * @brief Routines to save PT state on all cores
+ *
+ * @return VOID
+ */
+VOID
+BroadcastSavePtOnAllCores()
+{
+ KeGenericCallDpc(DpcRoutineSavePt, NULL);
+}
+
+/**
+ * @brief Routines to dump PT state on all cores
+ *
+ * @return VOID
+ */
+VOID
+BroadcastDumpPtOnAllCores()
+{
+ KeGenericCallDpc(DpcRoutineDumpPt, NULL);
+}
+
+/**
+ * @brief Routines to flush PT state on all cores
+ *
+ * @return VOID
+ */
+VOID
+BroadcastFlushPtOnAllCores()
+{
+ KeGenericCallDpc(DpcRoutineFlushPt, NULL);
+}
+
+/**
+ * @brief Routines to apply a PT filter on all cores. The same Options
+ * pointer is passed to every per-core DPC; KeGenericCallDpc is
+ * synchronous so the caller's storage is valid throughout.
+ *
+ * @return VOID
+ */
+VOID
+BroadcastFilterPtOnAllCores(PT_FILTER_OPTIONS * Options)
+{
+ KeGenericCallDpc(DpcRoutineFilterPt, (PVOID)Options);
+}
diff --git a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
index 9a4b6f63..bee85fb1 100644
--- a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
@@ -170,3 +170,114 @@ DpcRoutineFilterLbrOptions(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgume
return TRUE;
}
+
+/**
+ * @brief Broadcast enabling PT
+ *
+ * @param Dpc
+ * @param DeferredContext
+ * @param SystemArgument1
+ * @param SystemArgument2
+ * @return BOOLEAN
+ */
+BOOLEAN
+DpcRoutineEnablePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ UNREFERENCED_PARAMETER(Dpc);
+ UNREFERENCED_PARAMETER(DeferredContext);
+
+ //
+ // Enable PT on the current core. PT in the current implementation is
+ // controlled via direct MSR writes from kernel context; if PT is later
+ // wired into VMCS save/load controls, the corresponding hypervisor
+ // helpers should be invoked here similar to DpcRoutineEnableLbr.
+ //
+ PtStart();
+
+ KeSignalCallDpcSynchronize(SystemArgument2);
+ KeSignalCallDpcDone(SystemArgument1);
+ return TRUE;
+}
+
+/**
+ * @brief Broadcast disabling PT
+ */
+BOOLEAN
+DpcRoutineDisablePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ UNREFERENCED_PARAMETER(Dpc);
+ UNREFERENCED_PARAMETER(DeferredContext);
+
+ PtStop();
+
+ KeSignalCallDpcSynchronize(SystemArgument2);
+ KeSignalCallDpcDone(SystemArgument1);
+ return TRUE;
+}
+
+/**
+ * @brief Broadcast saving PT state
+ */
+BOOLEAN
+DpcRoutineSavePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ UNREFERENCED_PARAMETER(Dpc);
+ UNREFERENCED_PARAMETER(DeferredContext);
+
+ PtSave();
+
+ KeSignalCallDpcSynchronize(SystemArgument2);
+ KeSignalCallDpcDone(SystemArgument1);
+ return TRUE;
+}
+
+/**
+ * @brief Broadcast dumping PT state
+ */
+BOOLEAN
+DpcRoutineDumpPt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ UNREFERENCED_PARAMETER(Dpc);
+ UNREFERENCED_PARAMETER(DeferredContext);
+
+ PtDump();
+
+ KeSignalCallDpcSynchronize(SystemArgument2);
+ KeSignalCallDpcDone(SystemArgument1);
+ return TRUE;
+}
+
+/**
+ * @brief Broadcast flushing PT state
+ */
+BOOLEAN
+DpcRoutineFlushPt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ UNREFERENCED_PARAMETER(Dpc);
+ UNREFERENCED_PARAMETER(DeferredContext);
+
+ PtFlush();
+
+ KeSignalCallDpcSynchronize(SystemArgument2);
+ KeSignalCallDpcDone(SystemArgument1);
+ return TRUE;
+}
+
+/**
+ * @brief Broadcast applying a PT filter to all cores.
+ *
+ * DeferredContext carries the PT_FILTER_OPTIONS * supplied by the
+ * broadcaster; PtFilter writes the user-tunable fields into the
+ * current CPU's per-CPU PT_TRACE_CONFIG and reprograms PT MSRs.
+ */
+BOOLEAN
+DpcRoutineFilterPt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ UNREFERENCED_PARAMETER(Dpc);
+
+ PtFilter((const PT_FILTER_OPTIONS *)DeferredContext);
+
+ KeSignalCallDpcSynchronize(SystemArgument2);
+ KeSignalCallDpcDone(SystemArgument1);
+ return TRUE;
+}
diff --git a/hyperdbg/hypertrace/code/pt/Pt.c b/hyperdbg/hypertrace/code/pt/Pt.c
index a52701e8..93de8435 100644
--- a/hyperdbg/hypertrace/code/pt/Pt.c
+++ b/hyperdbg/hypertrace/code/pt/Pt.c
@@ -1,22 +1,1238 @@
/**
* @file Pt.c
- * @author
+ * @author Sina Karvandi (sina@hyperdbg.org)
* @brief Processor Trace (PT) tracing implementation for HyperTrace module
- * @details
+ * @details Programs Intel PT MSRs and manages per-CPU ToPA / output buffers.
+ * The engine half (PtEngine*) deals with a single PT_PER_CPU at a
+ * time and is OS-agnostic. The HyperDbg wrappers (PtCheck, PtStart,
+ * PtStop, PtSave, PtDump, PtFlush) operate on the global per-CPU
+ * state list (g_PtStateList) and mirror the LBR API surface.
* @version 0.19
- * @date 2026-04-25
+ * @date 2026-04-29
*
* @copyright This project is released under the GNU Public License v3.
*/
#include "pch.h"
+//////////////////////////////////////////////////
+// Internal allocation helpers //
+//////////////////////////////////////////////////
+
/**
- * @brief Check if the current CPU supports PT
+ * @brief Allocate physically contiguous memory for ToPA / output buffers.
*
- * @return BOOLEAN
+ * Intel PT requires the output region's physical address to be aligned to
+ * its own size. We use MmAllocateContiguousMemorySpecifyCache with a
+ * BoundaryAddressMultipleOf equal to the requested size — the allocator
+ * then picks a base that does not cross any size-aligned boundary, which
+ * for a power-of-two size means the base is a multiple of that size.
+ *
+ * @param Size Bytes to allocate. Must be a power of two for size
+ * alignment.
+ * @param Alignment Requested alignment in bytes. Pass `Size` for the
+ * ToPA output region; pass PT_PAGE_SIZE for the ToPA
+ * table itself and the overflow page.
+ *
+ * @return PVOID Virtual address of the allocation, or NULL on failure.
+ */
+static PVOID
+PtAllocateContiguousAligned(UINT64 Size, UINT64 Alignment)
+{
+ PHYSICAL_ADDRESS Lo = {0};
+ PHYSICAL_ADDRESS Hi = {0};
+ PHYSICAL_ADDRESS Boundary = {0};
+ PVOID Result;
+
+ Hi.QuadPart = MAXULONG64;
+ Boundary.QuadPart = (LONGLONG)Alignment;
+
+ Result = MmAllocateContiguousMemorySpecifyCache(
+ (SIZE_T)Size,
+ Lo,
+ Hi,
+ Boundary,
+ MmCached);
+
+ if (Result != NULL)
+ {
+ RtlSecureZeroMemory(Result, (SIZE_T)Size);
+ }
+
+ return Result;
+}
+
+/**
+ * @brief Free a physically contiguous allocation made by PtAllocateContiguousAligned.
+ */
+static VOID
+PtFreeContiguous(PVOID Va)
+{
+ if (Va != NULL)
+ {
+ MmFreeContiguousMemory(Va);
+ }
+}
+
+/**
+ * @brief Translate a kernel virtual address to a physical address.
+ */
+static UINT64
+PtVaToPa(PVOID Va)
+{
+ PHYSICAL_ADDRESS Pa = MmGetPhysicalAddress(Va);
+ return (UINT64)Pa.QuadPart;
+}
+
+//////////////////////////////////////////////////
+// Engine routines //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Convert a buffer size in bytes to the ToPA Size field encoding.
+ * Valid sizes are 4KB * 2^N for N = 0..15.
+ *
+ * @param SizeInBytes
+ * @return INT32 Encoding 0..15, or -1 if the size is not supported.
+ */
+INT32
+PtEngineSizeToTopaEncoding(UINT64 SizeInBytes)
+{
+ UINT64 Pages;
+ INT32 N;
+
+ if (SizeInBytes < PT_PAGE_SIZE)
+ return -1;
+
+ Pages = SizeInBytes / PT_PAGE_SIZE;
+
+ //
+ // Must be an exact power-of-two number of pages
+ //
+ if ((Pages & (Pages - 1)) != 0)
+ return -1;
+
+ N = 0;
+ while ((Pages >> N) != 1)
+ N++;
+
+ if (N > 15)
+ return -1;
+
+ return N;
+}
+
+/**
+ * @brief Probe Intel PT capabilities via CPUID leaf 7 / leaf 0x14.
+ *
+ * @param OutCaps Optional. If non-NULL, populated with detailed capabilities.
+ *
+ * @return INT32 0 on success (PT supported), -1 if PT is not supported.
+ */
+INT32
+PtEngineQueryCapabilities(PT_CAPABILITIES * OutCaps)
+{
+ int Info[4] = {0};
+ int MaxSubleaf = 0;
+ UINT64 VmxMisc;
+
+ //
+ // Check PT support: CPUID.(EAX=07H,ECX=0):EBX[25]
+ //
+ __cpuidex(Info, 0x07, 0);
+ if ((Info[1] & (1 << 25)) == 0)
+ return -1;
+
+ if (OutCaps == NULL)
+ return 0;
+
+ RtlZeroMemory(OutCaps, sizeof(*OutCaps));
+
+ //
+ // Leaf 0x14, sub-leaf 0: capability flags
+ //
+ Info[0] = Info[1] = Info[2] = Info[3] = 0;
+ __cpuidex(Info, 0x14, 0);
+
+ MaxSubleaf = Info[0]; /* EAX: max valid sub-leaf */
+
+ //
+ // EBX capabilities
+ //
+ OutCaps->Cr3Filtering = (Info[1] >> 0) & 1;
+ OutCaps->PsbCycConfigurable = (Info[1] >> 1) & 1;
+ OutCaps->IpFiltering = (Info[1] >> 2) & 1;
+ OutCaps->MtcSupport = (Info[1] >> 3) & 1;
+ OutCaps->PtwriteSupport = (Info[1] >> 4) & 1;
+ OutCaps->PowerEventTrace = (Info[1] >> 5) & 1;
+
+ //
+ // ECX capabilities
+ //
+ OutCaps->TopaOutput = (Info[2] >> 0) & 1;
+ OutCaps->TopaMultiEntry = (Info[2] >> 1) & 1;
+ OutCaps->SingleRangeOutput = (Info[2] >> 2) & 1;
+ OutCaps->TransportOutput = (Info[2] >> 3) & 1;
+ OutCaps->IpPayloadsAreLip = (Info[2] >> 31) & 1;
+
+ //
+ // Sub-leaf 1: detailed numerics
+ //
+ if (MaxSubleaf >= 1)
+ {
+ Info[0] = Info[1] = Info[2] = Info[3] = 0;
+ __cpuidex(Info, 0x14, 1);
+
+ OutCaps->NumAddrRanges = (UINT32)(Info[0] & 0x7);
+ OutCaps->MtcPeriodBitmap = (UINT16)((Info[0] >> 16) & 0xFFFF);
+ OutCaps->CycThresholdBitmap = (UINT16)(Info[1] & 0xFFFF);
+ OutCaps->PsbFreqBitmap = (UINT16)((Info[1] >> 16) & 0xFFFF);
+ }
+
+ //
+ // VMX support: IA32_VMX_MISC[14] indicates Intel PT may be used in VMX
+ // operation. Reading IA32_VMX_MISC is unconditional on a VMX-capable
+ // CPU; if the CPU isn't VMX-capable the bit is meaningless and the
+ // value falls through as 0.
+ //
+ VmxMisc = __readmsr(0x00000485 /* IA32_VMX_MISC */);
+ OutCaps->VmxSupport = (VmxMisc >> 14) & 1;
+
+ return 0;
+}
+
+/**
+ * @brief Initialize a PT_TRACE_CONFIG with sensible defaults.
+ * Trace user + kernel, branch + TSC packets, 2 MB output buffer.
+ */
+VOID
+PtEngineInitDefaultConfig(PT_TRACE_CONFIG * Config)
+{
+ UINT32 i;
+
+ Config->TraceUser = TRUE;
+ Config->TraceKernel = TRUE;
+ Config->TargetCr3 = 0;
+ Config->NumAddrRanges = 0;
+ Config->EnableBranch = TRUE;
+ Config->EnableTsc = TRUE;
+ Config->EnableMtc = FALSE;
+ Config->EnableCyc = FALSE;
+ Config->EnableRetCompression = FALSE;
+ Config->MtcFreq = 0;
+ Config->CycThresh = 0;
+ Config->PsbFreq = 0;
+ Config->BufferSize = PT_DEFAULT_BUFFER_SIZE;
+
+ for (i = 0; i < PT_MAX_ADDR_RANGES; i++)
+ {
+ Config->AddrRanges[i].Start = 0;
+ Config->AddrRanges[i].End = 0;
+ Config->AddrRanges[i].IsStopRange = FALSE;
+ }
+}
+
+/**
+ * @brief Allocate the ToPA table, output buffer, and overflow zone for one
+ * per-CPU PT context, then build the ToPA entries.
+ *
+ * ToPA layout:
+ * [0] main output buffer (Config->BufferSize), INT=1
+ * [1] overflow page (4 KB), INT=0
+ * [2] END, wraps back to ToPA table (circular)
+ *
+ * @return INT32 0 on success, -1 on allocation failure, -2 on bad config.
+ */
+INT32
+PtEngineAllocateBuffers(PT_PER_CPU * Cpu, const PT_TRACE_CONFIG * Config)
+{
+ INT32 SizeEncoding;
+ UINT64 BufSize;
+ PT_TOPA_ENTRY * Topa;
+
+ if (Cpu == NULL || Config == NULL)
+ return -2;
+
+ BufSize = Config->BufferSize;
+ if (BufSize == 0)
+ BufSize = PT_DEFAULT_BUFFER_SIZE;
+
+ //
+ // Validate buffer size is a valid ToPA encoding
+ //
+ SizeEncoding = PtEngineSizeToTopaEncoding(BufSize);
+ if (SizeEncoding < 0)
+ return -2;
+
+ //
+ // 1. ToPA table — one 4KB page, must be 4KB-aligned
+ //
+ Cpu->Buffer.TopaVa = (PT_TOPA_ENTRY *)PtAllocateContiguousAligned(PT_PAGE_SIZE, PT_PAGE_SIZE);
+ if (Cpu->Buffer.TopaVa == NULL)
+ return -1;
+ Cpu->Buffer.TopaPhysical = PtVaToPa(Cpu->Buffer.TopaVa);
+
+ //
+ // 2. Main output buffer — must be aligned to its own size
+ //
+ Cpu->Buffer.OutputVa = PtAllocateContiguousAligned(BufSize, BufSize);
+ if (Cpu->Buffer.OutputVa == NULL)
+ {
+ PtFreeContiguous(Cpu->Buffer.TopaVa);
+ Cpu->Buffer.TopaVa = NULL;
+ return -1;
+ }
+ Cpu->Buffer.OutputPhysical = PtVaToPa(Cpu->Buffer.OutputVa);
+ Cpu->Buffer.OutputSize = BufSize;
+
+ //
+ // 3. Overflow landing zone — 4KB
+ //
+ Cpu->Buffer.OverflowVa = PtAllocateContiguousAligned(PT_OVERFLOW_SIZE, PT_PAGE_SIZE);
+ if (Cpu->Buffer.OverflowVa == NULL)
+ {
+ PtFreeContiguous(Cpu->Buffer.OutputVa);
+ Cpu->Buffer.OutputVa = NULL;
+ PtFreeContiguous(Cpu->Buffer.TopaVa);
+ Cpu->Buffer.TopaVa = NULL;
+ return -1;
+ }
+ Cpu->Buffer.OverflowPhysical = PtVaToPa(Cpu->Buffer.OverflowVa);
+
+ //
+ // 4. Build the ToPA table — 3 entries
+ //
+ Topa = Cpu->Buffer.TopaVa;
+
+ //
+ // Entry 0: main data buffer, INT=1 (trigger PMI when full)
+ //
+ Topa[0].Value = 0;
+ Topa[0].BaseAddr = Cpu->Buffer.OutputPhysical >> 12;
+ Topa[0].Size = (UINT64)SizeEncoding;
+ Topa[0].Int = 1;
+ Topa[0].Stop = 0;
+
+ //
+ // Entry 1: overflow landing zone (4 KB), no interrupt
+ //
+ Topa[1].Value = 0;
+ Topa[1].BaseAddr = Cpu->Buffer.OverflowPhysical >> 12;
+ Topa[1].Size = PT_TOPA_SIZE_4K;
+ Topa[1].Int = 0;
+ Topa[1].Stop = 0;
+
+ //
+ // Entry 2: END — circular, points back to this ToPA table
+ //
+ Topa[2].Value = 0;
+ Topa[2].End = 1;
+ Topa[2].BaseAddr = Cpu->Buffer.TopaPhysical >> 12;
+
+ //
+ // Copy config and initialize state
+ //
+ Cpu->Config = *Config;
+ Cpu->Config.BufferSize = BufSize;
+ Cpu->SavedCtl.Value = 0;
+ Cpu->State = PT_STATE_READY;
+ Cpu->TotalBytesCaptured = 0;
+
+ return 0;
+}
+
+/**
+ * @brief Free all PT buffers belonging to one per-CPU context.
+ * Must not be called while State == PT_STATE_TRACING.
+ */
+VOID
+PtEngineFreeBuffers(PT_PER_CPU * Cpu)
+{
+ if (Cpu == NULL)
+ return;
+
+ //
+ // Refuse to free while tracing — caller must stop first
+ //
+ if (Cpu->State == PT_STATE_TRACING)
+ return;
+
+ if (Cpu->Buffer.OverflowVa)
+ {
+ PtFreeContiguous(Cpu->Buffer.OverflowVa);
+ Cpu->Buffer.OverflowVa = NULL;
+ Cpu->Buffer.OverflowPhysical = 0;
+ }
+ if (Cpu->Buffer.OutputVa)
+ {
+ PtFreeContiguous(Cpu->Buffer.OutputVa);
+ Cpu->Buffer.OutputVa = NULL;
+ Cpu->Buffer.OutputPhysical = 0;
+ Cpu->Buffer.OutputSize = 0;
+ }
+ if (Cpu->Buffer.TopaVa)
+ {
+ PtFreeContiguous(Cpu->Buffer.TopaVa);
+ Cpu->Buffer.TopaVa = NULL;
+ Cpu->Buffer.TopaPhysical = 0;
+ }
+
+ Cpu->State = PT_STATE_DISABLED;
+ Cpu->TotalBytesCaptured = 0;
+ Cpu->SavedCtl.Value = 0;
+}
+
+/**
+ * @brief Build IA32_RTIT_CTL from a config + capabilities.
+ * Does not set TraceEn; caller is responsible for enabling last.
+ */
+static PT_RTIT_CTL_REGISTER
+PtEngineBuildCtlFromConfig(const PT_TRACE_CONFIG * Cfg,
+ const PT_CAPABILITIES * Caps)
+{
+ PT_RTIT_CTL_REGISTER Ctl;
+ Ctl.Value = 0;
+
+ //
+ // Core settings
+ //
+ Ctl.TraceEn = 0; /* enabled last, after everything is set */
+ Ctl.ToPA = 1; /* always use ToPA output */
+ Ctl.FabricEn = 0; /* always output to memory */
+
+ //
+ // Privilege filter
+ //
+ Ctl.Os = Cfg->TraceKernel ? 1 : 0;
+ Ctl.User = Cfg->TraceUser ? 1 : 0;
+
+ //
+ // CR3 filtering
+ //
+ Ctl.Cr3Filter = (Cfg->TargetCr3 != 0) ? 1 : 0;
+
+ //
+ // Branch tracing — the core functionality
+ //
+ Ctl.BranchEn = Cfg->EnableBranch ? 1 : 0;
+
+ //
+ // Timing packets
+ //
+ Ctl.TscEn = Cfg->EnableTsc ? 1 : 0;
+
+ if (Caps->MtcSupport)
+ {
+ Ctl.MtcEn = Cfg->EnableMtc ? 1 : 0;
+ if (Cfg->EnableMtc && ((1 << Cfg->MtcFreq) & Caps->MtcPeriodBitmap))
+ Ctl.MtcFreq = Cfg->MtcFreq;
+ }
+
+ if (Caps->PsbCycConfigurable)
+ {
+ Ctl.CycEn = Cfg->EnableCyc ? 1 : 0;
+ if (Cfg->EnableCyc && ((1 << Cfg->CycThresh) & Caps->CycThresholdBitmap))
+ Ctl.CycThresh = Cfg->CycThresh;
+ if ((1 << Cfg->PsbFreq) & Caps->PsbFreqBitmap)
+ Ctl.PsbFreq = Cfg->PsbFreq;
+ }
+
+ //
+ // RET compression
+ //
+ Ctl.DisRetc = Cfg->EnableRetCompression ? 0 : 1;
+
+ //
+ // IP filter range configuration
+ //
+ Ctl.Addr0Cfg = 0;
+ Ctl.Addr1Cfg = 0;
+ Ctl.Addr2Cfg = 0;
+ Ctl.Addr3Cfg = 0;
+
+ if (Cfg->NumAddrRanges > 0 && Caps->IpFiltering)
+ {
+ if (Cfg->NumAddrRanges >= 1 && Caps->NumAddrRanges >= 1)
+ Ctl.Addr0Cfg = Cfg->AddrRanges[0].IsStopRange ? 2 : 1;
+ if (Cfg->NumAddrRanges >= 2 && Caps->NumAddrRanges >= 2)
+ Ctl.Addr1Cfg = Cfg->AddrRanges[1].IsStopRange ? 2 : 1;
+ if (Cfg->NumAddrRanges >= 3 && Caps->NumAddrRanges >= 3)
+ Ctl.Addr2Cfg = Cfg->AddrRanges[2].IsStopRange ? 2 : 1;
+ if (Cfg->NumAddrRanges >= 4 && Caps->NumAddrRanges >= 4)
+ Ctl.Addr3Cfg = Cfg->AddrRanges[3].IsStopRange ? 2 : 1;
+ }
+
+ return Ctl;
+}
+
+/**
+ * @brief Start tracing on the CURRENT CPU using the passed PT_PER_CPU.
+ * Programs all PT MSRs and sets TraceEn=1.
+ *
+ * Must be called from the target CPU (DPC or VMX root).
+ *
+ * @return INT32 0 on success, -1 on error.
+ */
+INT32
+PtEngineStart(PT_PER_CPU * Cpu)
+{
+ PT_RTIT_CTL_REGISTER Ctl;
+ PT_CAPABILITIES Caps;
+ UINT32 i;
+ BOOLEAN IsOnVmxRootMode = FALSE;
+
+ if (Cpu == NULL)
+ return -1;
+ if (Cpu->State != PT_STATE_READY && Cpu->State != PT_STATE_STOPPED)
+ return -1;
+ if (Cpu->Buffer.TopaVa == NULL || Cpu->Buffer.OutputVa == NULL)
+ return -1;
+
+ if (PtEngineQueryCapabilities(&Caps) != 0)
+ return -1;
+
+ //
+ // Detect VMX-root context if running under HyperDbg's hypervisor.
+ //
+ // Intel PT MSRs (IA32_RTIT_*) are NOT in the default MSR bitmap, so a
+ // direct WRMSR to them in either VMX root or VMX non-root passes
+ // through to hardware without trapping. This means the same MSR
+ // sequence below works correctly from a DPC running in the guest as
+ // well as from a VMX-root packet handler. We still read the mode for
+ // logging and for any future hypervisor-only code (e.g. setting the
+ // "Clear IA32_RTIT_CTL on VM-exit" VMCS control or saving guest-side
+ // RTIT state across VM transitions).
+ //
+ if (g_RunningOnHypervisorEnvironment)
+ {
+ IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
+ LogInfo("PT: PtEngineStart on core %u (vmx-root=%u)\n",
+ KeGetCurrentProcessorNumberEx(NULL),
+ (UINT32)IsOnVmxRootMode);
+ }
+
+ //
+ // Don't request more IP ranges or features than the CPU supports
+ //
+ if (Cpu->Config.NumAddrRanges > Caps.NumAddrRanges)
+ return -1;
+ if (Cpu->Config.NumAddrRanges > 0 && !Caps.IpFiltering)
+ return -1;
+ if (Cpu->Config.TargetCr3 != 0 && !Caps.Cr3Filtering)
+ return -1;
+
+ //
+ // Step 1: Ensure tracing is off and clear status
+ //
+ {
+ PT_RTIT_CTL_REGISTER Cur;
+ Cur.Value = __readmsr(MSR_IA32_RTIT_CTL);
+ if (Cur.TraceEn)
+ {
+ Cur.TraceEn = 0;
+ __writemsr(MSR_IA32_RTIT_CTL, Cur.Value);
+ }
+ }
+
+ __writemsr(MSR_IA32_RTIT_STATUS, 0);
+
+ //
+ // Step 2: Set output base and reset output position
+ //
+ __writemsr(MSR_IA32_RTIT_OUTPUT_BASE, Cpu->Buffer.TopaPhysical);
+ {
+ PT_OUTPUT_MASK_PTRS_REGISTER InitMask;
+ InitMask.Value = 0;
+ InitMask.LowerMask = 0x7F;
+ InitMask.MaskOrTableOffset = 0;
+ InitMask.OutputOffset = 0;
+ __writemsr(MSR_IA32_RTIT_OUTPUT_MASK_PTRS, InitMask.Value);
+ }
+
+ //
+ // Step 3: Set CR3 filter
+ //
+ __writemsr(MSR_IA32_RTIT_CR3_MATCH, Cpu->Config.TargetCr3);
+
+ //
+ // Step 4: Set IP address ranges. IMPORTANT: only touch ADDRn MSRs the
+ // CPU actually supports; writing to non-existent ADDRn MSRs causes #GP.
+ //
+ for (i = 0; i < Caps.NumAddrRanges; i++)
+ {
+ UINT32 MsrA = MSR_IA32_RTIT_ADDR0_A + (i * 2);
+ UINT32 MsrB = MSR_IA32_RTIT_ADDR0_B + (i * 2);
+
+ if (i < Cpu->Config.NumAddrRanges)
+ {
+ __writemsr(MsrA, Cpu->Config.AddrRanges[i].Start);
+ __writemsr(MsrB, Cpu->Config.AddrRanges[i].End);
+ }
+ else
+ {
+ __writemsr(MsrA, 0);
+ __writemsr(MsrB, 0);
+ }
+ }
+
+ //
+ // Step 5: Build IA32_RTIT_CTL and enable
+ //
+ Ctl = PtEngineBuildCtlFromConfig(&Cpu->Config, &Caps);
+
+ //
+ // Save the CTL value for resume
+ //
+ Cpu->SavedCtl = Ctl;
+
+ //
+ // Enable tracing — MUST be the last MSR write
+ //
+ Ctl.TraceEn = 1;
+ Cpu->SavedCtl.TraceEn = 1;
+ __writemsr(MSR_IA32_RTIT_CTL, Ctl.Value);
+
+ //
+ // Step 6: Verify tracing started
+ //
+ {
+ PT_RTIT_STATUS_REGISTER Status;
+ Status.Value = __readmsr(MSR_IA32_RTIT_STATUS);
+ if (Status.Error)
+ {
+ Ctl.TraceEn = 0;
+ __writemsr(MSR_IA32_RTIT_CTL, Ctl.Value);
+ Cpu->State = PT_STATE_ERROR;
+ return -1;
+ }
+ }
+
+ Cpu->State = PT_STATE_TRACING;
+ return 0;
+}
+
+/**
+ * @brief Read current output position, calculate bytes written, and
+ * optionally copy trace data into Out starting at Out->WriteOffset,
+ * then advance WriteOffset.
+ */
+static UINT64
+PtEngineReadBytesWritten(const PT_BUFFER * Buf, PT_OUTPUT_BUFFER * Out)
+{
+ PT_OUTPUT_MASK_PTRS_REGISTER Mask;
+ UINT32 TopaIndex;
+ UINT32 BytesInEntry;
+ UINT64 Total = 0;
+
+ Mask.Value = __readmsr(MSR_IA32_RTIT_OUTPUT_MASK_PTRS);
+
+ TopaIndex = (UINT32)(Mask.MaskOrTableOffset >> 0);
+ BytesInEntry = (UINT32)Mask.OutputOffset;
+
+ //
+ // ToPA layout:
+ // Entry[0] = main buffer (OutputSize bytes)
+ // Entry[1] = overflow (4KB)
+ // Entry[2] = END
+ //
+ if (TopaIndex == 0)
+ {
+ Total = BytesInEntry;
+ }
+ else if (TopaIndex >= 1)
+ {
+ Total = Buf->OutputSize + BytesInEntry;
+ }
+
+ //
+ // Copy trace data if the caller provided a buffer with enough room
+ //
+ if (Out != NULL && Out->Buffer != NULL && Total > 0)
+ {
+ if (Out->WriteOffset + Total <= Out->Length)
+ {
+ UINT8 * Dest = (UINT8 *)Out->Buffer + Out->WriteOffset;
+ UINT64 MainBytes = (Total < Buf->OutputSize) ? Total : Buf->OutputSize;
+ UINT64 SpillBytes = (Total > Buf->OutputSize) ? (Total - Buf->OutputSize) : 0;
+
+ RtlCopyMemory(Dest, Buf->OutputVa, (SIZE_T)MainBytes);
+
+ if (SpillBytes > 0)
+ RtlCopyMemory(Dest + MainBytes, Buf->OverflowVa, (SIZE_T)SpillBytes);
+
+ Out->WriteOffset += Total;
+ }
+ // else: not enough space — skip copy, WriteOffset unchanged
+ }
+
+ return Total;
+}
+
+/**
+ * @brief Stop tracing on the CURRENT CPU. Reads final output position,
+ * copies trace data if requested, resets PT MSRs.
+ *
+ * @return UINT64 Total bytes captured (across all PMIs + final), or 0 on error.
+ */
+UINT64
+PtEngineStop(PT_PER_CPU * Cpu, PT_OUTPUT_BUFFER * Out)
+{
+ UINT64 BytesThisRun;
+ UINT32 i;
+ BOOLEAN IsOnVmxRootMode = FALSE;
+
+ if (Cpu == NULL)
+ return 0;
+ if (Cpu->State != PT_STATE_TRACING && Cpu->State != PT_STATE_PAUSED)
+ return 0;
+
+ //
+ // Detect VMX-root context for symmetry with PtEngineStart. Direct WRMSR
+ // works in both modes for PT MSRs (not in MSR bitmap by default).
+ //
+ if (g_RunningOnHypervisorEnvironment)
+ {
+ IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
+ LogInfo("PT: PtEngineStop on core %u (vmx-root=%u)\n",
+ KeGetCurrentProcessorNumberEx(NULL),
+ (UINT32)IsOnVmxRootMode);
+ }
+
+ //
+ // Disable tracing
+ //
+ {
+ PT_RTIT_CTL_REGISTER Ctl;
+ Ctl.Value = __readmsr(MSR_IA32_RTIT_CTL);
+ Ctl.TraceEn = 0;
+ __writemsr(MSR_IA32_RTIT_CTL, Ctl.Value);
+ }
+
+ //
+ // Read final output position and copy data if requested
+ //
+ BytesThisRun = PtEngineReadBytesWritten(&Cpu->Buffer, Out);
+ Cpu->TotalBytesCaptured += BytesThisRun;
+
+ //
+ // Check for hardware error
+ //
+ {
+ PT_RTIT_STATUS_REGISTER Status;
+ Status.Value = __readmsr(MSR_IA32_RTIT_STATUS);
+ if (Status.Error)
+ {
+ Cpu->State = PT_STATE_ERROR;
+ return 0;
+ }
+ }
+
+ //
+ // Reset all PT MSRs
+ //
+ __writemsr(MSR_IA32_RTIT_CTL, 0);
+ __writemsr(MSR_IA32_RTIT_STATUS, 0);
+ __writemsr(MSR_IA32_RTIT_OUTPUT_BASE, 0);
+ __writemsr(MSR_IA32_RTIT_OUTPUT_MASK_PTRS, 0);
+ __writemsr(MSR_IA32_RTIT_CR3_MATCH, 0);
+
+ //
+ // Clear all ADDRn MSRs that this CPU supports.
+ // NumAddrRanges was validated against caps in PtEngineStart.
+ //
+ for (i = 0; i < Cpu->Config.NumAddrRanges; i++)
+ {
+ __writemsr(MSR_IA32_RTIT_ADDR0_A + (i * 2), 0);
+ __writemsr(MSR_IA32_RTIT_ADDR0_B + (i * 2), 0);
+ }
+
+ Cpu->State = PT_STATE_STOPPED;
+ return Cpu->TotalBytesCaptured;
+}
+
+/**
+ * @brief Pause tracing on the CURRENT CPU. Preserves buffer state.
+ */
+INT32
+PtEnginePause(PT_PER_CPU * Cpu)
+{
+ PT_RTIT_CTL_REGISTER Ctl;
+
+ if (Cpu == NULL || Cpu->State != PT_STATE_TRACING)
+ return -1;
+
+ Ctl.Value = __readmsr(MSR_IA32_RTIT_CTL);
+ Ctl.TraceEn = 0;
+ __writemsr(MSR_IA32_RTIT_CTL, Ctl.Value);
+
+ Cpu->State = PT_STATE_PAUSED;
+ return 0;
+}
+
+/**
+ * @brief Resume tracing on the CURRENT CPU after pause.
+ */
+INT32
+PtEngineResume(PT_PER_CPU * Cpu)
+{
+ PT_RTIT_CTL_REGISTER Ctl;
+
+ if (Cpu == NULL || Cpu->State != PT_STATE_PAUSED)
+ return -1;
+
+ Ctl = Cpu->SavedCtl;
+ Ctl.TraceEn = 1;
+ __writemsr(MSR_IA32_RTIT_CTL, Ctl.Value);
+
+ Cpu->State = PT_STATE_TRACING;
+ return 0;
+}
+
+/**
+ * @brief Check whether the latest PMI was raised by Intel PT
+ * (IA32_PERF_GLOBAL_STATUS bit 55).
+ */
+BOOLEAN
+PtEngineIsPtPmi()
+{
+ UINT64 GlobalStatus = __readmsr(MSR_IA32_PERF_GLOBAL_STATUS);
+ return (GlobalStatus & PERF_GLOBAL_STATUS_TOPA_PMI) ? TRUE : FALSE;
+}
+
+/**
+ * @brief Handle a ToPA PMI on the CURRENT CPU. Caller is responsible for
+ * having already disabled tracing (e.g. via VMCS clear of RTIT_CTL).
+ *
+ * @return UINT64 number of bytes captured in this PMI event.
+ */
+UINT64
+PtEngineHandlePmi(PT_PER_CPU * Cpu, PT_OUTPUT_BUFFER * Out)
+{
+ UINT64 BytesThisEvent;
+
+ if (Cpu == NULL)
+ return 0;
+
+ //
+ // 1. Read how many bytes were written and copy them out
+ //
+ BytesThisEvent = PtEngineReadBytesWritten(&Cpu->Buffer, Out);
+ Cpu->TotalBytesCaptured += BytesThisEvent;
+
+ //
+ // 2. Reset output position to start of buffer BEFORE acknowledging the
+ // PMI. PT keeps tracing during the handler (TraceEn stays 1) and the
+ // hardware is free to raise another ToPA PMI as soon as PendTopaPmi /
+ // PERF_GLOBAL_STATUS.TopaPmi are cleared. If MASK_PTRS still points
+ // deep into the overflow page (or past wrap) at that moment, a
+ // back-to-back PMI would observe stale state.
+ //
+ {
+ PT_OUTPUT_MASK_PTRS_REGISTER ResetMask;
+ ResetMask.Value = 0;
+ ResetMask.LowerMask = 0x7F;
+ ResetMask.MaskOrTableOffset = 0;
+ ResetMask.OutputOffset = 0;
+ __writemsr(MSR_IA32_RTIT_OUTPUT_MASK_PTRS, ResetMask.Value);
+ }
+
+ //
+ // 3. Clear PT pending PMI bits in IA32_RTIT_STATUS
+ //
+ {
+ PT_RTIT_STATUS_REGISTER Status;
+ Status.Value = __readmsr(MSR_IA32_RTIT_STATUS);
+ Status.PendTopaPmi = 0;
+ Status.PendPsbPmi = 0;
+ Status.Error = 0;
+ Status.Stopped = 0;
+ __writemsr(MSR_IA32_RTIT_STATUS, Status.Value);
+ }
+
+ //
+ // 4. Acknowledge the global PMI bit
+ //
+ __writemsr(MSR_IA32_PERF_GLOBAL_OVF_CTRL, PERF_GLOBAL_STATUS_TOPA_PMI);
+
+ return BytesThisEvent;
+}
+
+//////////////////////////////////////////////////
+// HyperDbg-style wrappers //
+// (mirror of Lbr.c API surface) //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Check whether Intel PT is supported on the current CPU.
+ * Mirrors LbrCheck — must be called once before any Pt* operation.
+ *
+ * If running under HyperDbg's hypervisor we also verify that the
+ * platform's IA32_VMX_MISC MSR advertises PT-in-VMX support, since
+ * without that bit set we may not be able to keep PT alive across
+ * VM transitions in a future VMCS-controlled implementation. This
+ * is a soft check — the current direct-MSR path still works because
+ * PT MSRs aren't trapped — but it surfaces the situation in the log.
+ *
+ * @return BOOLEAN TRUE if Intel PT is available.
*/
BOOLEAN
PtCheck()
{
- return FALSE;
+ PT_CAPABILITIES Caps = {0};
+
+ if (PtEngineQueryCapabilities(&Caps) != 0)
+ return FALSE;
+
+ //
+ // We require ToPA output for our buffer scheme
+ //
+ if (!Caps.TopaOutput)
+ {
+ LogInfo("PT: CPU does not support ToPA output; PT cannot be used here.\n");
+ return FALSE;
+ }
+
+ if (g_RunningOnHypervisorEnvironment && !Caps.VmxSupport)
+ {
+ LogInfo("PT: IA32_VMX_MISC[14] is clear — Intel PT in VMX is not "
+ "advertised on this CPU. Direct MSR programming still works "
+ "from VMX non-root because PT MSRs are not trapped.\n");
+ }
+
+ return TRUE;
+}
+
+/**
+ * @brief Allocate ToPA / output / overflow buffers for every active CPU.
+ *
+ * Must be called at IRQL == PASSIVE_LEVEL (before broadcasting the
+ * per-core enable DPC), because MmAllocateContiguousMemorySpecifyCache
+ * is paged.
+ *
+ * Idempotent: cores that already have buffers (State != DISABLED)
+ * are skipped.
+ *
+ * @return BOOLEAN TRUE if every core ended up with a usable buffer set.
+ */
+BOOLEAN
+PtAllocateAllCpuBuffers()
+{
+ UINT32 ProcessorsCount;
+ UINT32 i;
+
+ if (g_PtStateList == NULL)
+ return FALSE;
+
+ ProcessorsCount = KeQueryActiveProcessorCount(0);
+
+ for (i = 0; i < ProcessorsCount; i++)
+ {
+ PT_PER_CPU * Cpu = &g_PtStateList[i];
+ PT_TRACE_CONFIG Cfg = Cpu->Config;
+
+ if (Cpu->State != PT_STATE_DISABLED)
+ continue;
+
+ if (Cfg.BufferSize == 0)
+ PtEngineInitDefaultConfig(&Cfg);
+
+ if (PtEngineAllocateBuffers(Cpu, &Cfg) != 0)
+ {
+ LogInfo("PT: buffer allocation failed on core %u\n", i);
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+/**
+ * @brief Free ToPA / output / overflow buffers for every active CPU.
+ *
+ * Must be called at IRQL == PASSIVE_LEVEL (after broadcasting any
+ * per-core disable DPC), because MmFreeContiguousMemory is paged.
+ */
+VOID
+PtFreeAllCpuBuffers()
+{
+ UINT32 ProcessorsCount;
+ UINT32 i;
+
+ if (g_PtStateList == NULL)
+ return;
+
+ ProcessorsCount = KeQueryActiveProcessorCount(0);
+
+ for (i = 0; i < ProcessorsCount; i++)
+ {
+ PtEngineFreeBuffers(&g_PtStateList[i]);
+ }
+}
+
+/**
+ * @brief Start PT tracing on the CURRENT CPU. Buffers must already be
+ * allocated by PtAllocateAllCpuBuffers (called at PASSIVE_LEVEL).
+ *
+ * Mirrors LbrStart but takes no parameters: per-CPU configuration is
+ * sourced from g_PtStateList[core].Config (defaulted at init time).
+ *
+ * @return BOOLEAN TRUE on success.
+ */
+BOOLEAN
+PtStart()
+{
+ UINT32 CurrentCore;
+ PT_PER_CPU * Cpu;
+
+ if (g_PtStateList == NULL)
+ {
+ LogInfo("PT: per-CPU state not initialized.\n");
+ return FALSE;
+ }
+
+ CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+ Cpu = &g_PtStateList[CurrentCore];
+
+ if (Cpu->State == PT_STATE_DISABLED)
+ {
+ //
+ // Buffers should have been allocated at PASSIVE_LEVEL beforehand.
+ // Allocating from a DPC is unsafe (MmAllocateContiguousMemory* is
+ // a paged routine) so just bail out.
+ //
+ LogInfo("PT: buffers not allocated for core %u\n", CurrentCore);
+ return FALSE;
+ }
+
+ if (PtEngineStart(Cpu) != 0)
+ {
+ LogInfo("PT: PtEngineStart failed on core %u (state=%d)\n", CurrentCore, Cpu->State);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/**
+ * @brief Stop PT tracing on the CURRENT CPU.
+ * Trace data accumulated in the per-CPU output buffer is left in
+ * place; PtSave / PtDump can read it later.
+ */
+VOID
+PtStop()
+{
+ UINT32 CurrentCore;
+ PT_PER_CPU * Cpu;
+
+ if (g_PtStateList == NULL)
+ return;
+
+ CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+ Cpu = &g_PtStateList[CurrentCore];
+
+ LogInfo("PT: stopping trace on core %d\n", CurrentCore);
+
+ PtEngineStop(Cpu, NULL);
+}
+
+/**
+ * @brief Snapshot the current bytes-captured counter for the CURRENT CPU
+ * without disturbing tracing state. PT data still resides in the
+ * per-CPU output buffer; nothing is copied out.
+ *
+ * Mirrors LbrSave.
+ */
+VOID
+PtSave()
+{
+ UINT32 CurrentCore;
+ PT_PER_CPU * Cpu;
+ PT_OUTPUT_MASK_PTRS_REGISTER Mask;
+ UINT32 TopaIndex;
+ UINT32 BytesInEntry;
+ UINT64 Total;
+
+ if (g_PtStateList == NULL)
+ return;
+
+ CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+ Cpu = &g_PtStateList[CurrentCore];
+
+ if (Cpu->State != PT_STATE_TRACING && Cpu->State != PT_STATE_PAUSED && Cpu->State != PT_STATE_STOPPED)
+ return;
+
+ //
+ // Read MASK_PTRS without touching MSRs that would disturb tracing.
+ // For an active trace this gives the live byte count; for stopped
+ // traces it returns the position at the moment tracing was disabled.
+ //
+ Mask.Value = __readmsr(MSR_IA32_RTIT_OUTPUT_MASK_PTRS);
+ TopaIndex = (UINT32)Mask.MaskOrTableOffset;
+ BytesInEntry = (UINT32)Mask.OutputOffset;
+
+ if (TopaIndex == 0)
+ Total = BytesInEntry;
+ else
+ Total = Cpu->Buffer.OutputSize + BytesInEntry;
+
+ Cpu->TotalBytesCaptured += Total;
+}
+
+/**
+ * @brief Print PT trace summary for the CURRENT CPU.
+ *
+ * PT packets are a compressed binary stream that requires a decoder
+ * (libipt or similar) to be human-readable, so this only emits the
+ * per-CPU statistics; bulk packet data is preserved in the output
+ * buffer for offline retrieval.
+ */
+VOID
+PtDump()
+{
+ UINT32 CurrentCore;
+ PT_PER_CPU * Cpu;
+
+ if (g_PtStateList == NULL)
+ return;
+
+ CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+ Cpu = &g_PtStateList[CurrentCore];
+
+ Log("PT trace summary for core %u\n", CurrentCore);
+ Log(" State : %d\n", Cpu->State);
+ Log(" TotalBytesCaptured : 0x%llx\n", Cpu->TotalBytesCaptured);
+ Log(" OutputBufferSize : 0x%llx\n", Cpu->Buffer.OutputSize);
+ Log(" TopaPhysical : 0x%llx\n", Cpu->Buffer.TopaPhysical);
+ Log(" OutputPhysical : 0x%llx\n", Cpu->Buffer.OutputPhysical);
+ Log(" TraceUser/Kernel : %u / %u\n", Cpu->Config.TraceUser, Cpu->Config.TraceKernel);
+ Log(" TargetCr3 : 0x%llx\n", Cpu->Config.TargetCr3);
+}
+
+/**
+ * @brief LBR-style filter wrapper: refresh tracing on the CURRENT CPU with
+ * a fresh PT_FILTER_OPTIONS.
+ *
+ * Mirrors LbrFilter — the caller hands in only the fields a user is
+ * allowed to drive (TraceUser, TraceKernel, TargetCr3, BufferSize,
+ * NumAddrRanges, AddrRanges) and PtFilter writes them into the
+ * per-CPU PT_TRACE_CONFIG one at a time. Engine-managed options
+ * (BranchEn, TscEn, MtcEn, CycEn, RetCompression, *Freq) are left
+ * alone, so a filter call can never accidentally turn off the
+ * packet types the engine relies on.
+ *
+ * BufferSize == 0 keeps the per-CPU value already in place, so
+ * pure filter changes (privilege bits, CR3, IP ranges) skip any
+ * reallocation of the ToPA / output / overflow buffers and can
+ * run entirely from a DPC. Genuine buffer-size changes still need
+ * a PASSIVE_LEVEL caller to free + reallocate; HyperTracePtFilter
+ * handles that case before broadcasting.
+ */
+VOID
+PtFilter(const PT_FILTER_OPTIONS * Options)
+{
+ UINT32 CurrentCore;
+ PT_PER_CPU * Cpu;
+ UINT32 i;
+ PT_CAPABILITIES Caps = {0};
+
+ if (g_PtStateList == NULL || Options == NULL)
+ return;
+
+ if (PtEngineQueryCapabilities(&Caps) != 0)
+ return;
+
+ CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+ Cpu = &g_PtStateList[CurrentCore];
+
+ LogInfo("PT: applying filter on core %u\n", CurrentCore);
+
+ //
+ // Stop tracing on this CPU first so we can safely mutate Cpu->Config
+ // and reprogram the RTIT_CTL bits.
+ //
+ if (Cpu->State == PT_STATE_TRACING || Cpu->State == PT_STATE_PAUSED)
+ {
+ PtEngineStop(Cpu, NULL);
+ }
+
+ //
+ // Apply only the user-tunable fields to this CPU's per-CPU config.
+ //
+ Cpu->Config.TraceUser = Options->TraceUser;
+ Cpu->Config.TraceKernel = Options->TraceKernel;
+
+ if (Options->TargetCr3 != 0 && !Caps.Cr3Filtering)
+ {
+ LogInfo("PT: CR3 filtering requested but not supported by CPU\n");
+ Cpu->Config.TargetCr3 = 0;
+ }
+ else
+ {
+ Cpu->Config.TargetCr3 = Options->TargetCr3;
+ }
+
+ if (Options->NumAddrRanges > Caps.NumAddrRanges)
+ {
+ LogInfo("PT: requested %u IP filter ranges, but CPU only supports %u\n", Options->NumAddrRanges, Caps.NumAddrRanges);
+ Cpu->Config.NumAddrRanges = Caps.NumAddrRanges;
+ }
+ else if (Options->NumAddrRanges > 0 && !Caps.IpFiltering)
+ {
+ LogInfo("PT: IP filtering requested but not supported by CPU\n");
+ Cpu->Config.NumAddrRanges = 0;
+ }
+ else
+ {
+ Cpu->Config.NumAddrRanges = Options->NumAddrRanges;
+ }
+
+ if (Options->BufferSize != 0)
+ {
+ Cpu->Config.BufferSize = Options->BufferSize;
+ }
+
+ for (i = 0; i < PT_MAX_ADDR_RANGES; i++)
+ {
+ Cpu->Config.AddrRanges[i] = Options->AddrRanges[i];
+ }
+
+ //
+ // If the per-CPU buffers haven't been allocated yet, leave the slot
+ // configured so the next PtStart picks it up — skip starting here
+ // because PtEngineStart needs ToPA / output / overflow already
+ // allocated at PASSIVE_LEVEL.
+ //
+ if (Cpu->State == PT_STATE_DISABLED)
+ return;
+
+ PtEngineStart(Cpu);
+}
+
+/**
+ * @brief Flush PT trace state on the CURRENT CPU — disables tracing and
+ * clears the bytes-captured counter so the next PtStart begins from
+ * a fresh baseline. Buffer freeing happens at PASSIVE_LEVEL via
+ * PtFreeAllCpuBuffers; this is safe to call from a DPC.
+ *
+ * Mirrors LbrFlush.
+ */
+VOID
+PtFlush()
+{
+ UINT32 CurrentCore;
+ PT_PER_CPU * Cpu;
+
+ if (g_PtStateList == NULL)
+ return;
+
+ CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+ Cpu = &g_PtStateList[CurrentCore];
+
+ LogInfo("PT: flush on core %u\n", CurrentCore);
+
+ if (Cpu->State == PT_STATE_TRACING || Cpu->State == PT_STATE_PAUSED)
+ {
+ PtEngineStop(Cpu, NULL);
+ }
+
+ Cpu->TotalBytesCaptured = 0;
}
diff --git a/hyperdbg/hypertrace/header/api/PtApi.h b/hyperdbg/hypertrace/header/api/PtApi.h
index 8ba8c25b..e49cfaf9 100644
--- a/hyperdbg/hypertrace/header/api/PtApi.h
+++ b/hyperdbg/hypertrace/header/api/PtApi.h
@@ -1,18 +1,30 @@
/**
* @file PtApi.h
- * @author
+ * @author Sina Karvandi (sina@hyperdbg.org)
* @brief Header for PT tracing routines for HyperTrace module (Intel Processor Trace)
* @details
* @version 0.19
- * @date 2026-04-25
+ * @date 2026-04-29
*
* @copyright This project is released under the GNU Public License v3.
*/
#pragma once
//////////////////////////////////////////////////
-// Globals //
+// Functions //
//////////////////////////////////////////////////
-VOID
-HyperTracePtExample();
+BOOLEAN
+HyperTracePtEnable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
+
+BOOLEAN
+HyperTracePtSave(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
+
+BOOLEAN
+HyperTracePtDump(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
+
+BOOLEAN
+HyperTracePtFlush(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
+
+BOOLEAN
+HyperTracePtFilter(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
diff --git a/hyperdbg/hypertrace/header/broadcast/Broadcast.h b/hyperdbg/hypertrace/header/broadcast/Broadcast.h
index f4a8615d..1889163f 100644
--- a/hyperdbg/hypertrace/header/broadcast/Broadcast.h
+++ b/hyperdbg/hypertrace/header/broadcast/Broadcast.h
@@ -27,3 +27,21 @@ BroadcastFlushLbrOnAllCores();
VOID
BroadcastFilterLbrOptionsOnAllCores(UINT64 LbrFilterOptions);
+
+VOID
+BroadcastEnablePtOnAllCores();
+
+VOID
+BroadcastDisablePtOnAllCores();
+
+VOID
+BroadcastSavePtOnAllCores();
+
+VOID
+BroadcastDumpPtOnAllCores();
+
+VOID
+BroadcastFlushPtOnAllCores();
+
+VOID
+BroadcastFilterPtOnAllCores(PT_FILTER_OPTIONS * Options);
diff --git a/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h b/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
index f4da097a..ebfe3732 100644
--- a/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
+++ b/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
@@ -27,3 +27,21 @@ DpcRoutineFlushLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVO
BOOLEAN
DpcRoutineFilterLbrOptions(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+
+BOOLEAN
+DpcRoutineEnablePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+
+BOOLEAN
+DpcRoutineDisablePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+
+BOOLEAN
+DpcRoutineSavePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+
+BOOLEAN
+DpcRoutineDumpPt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+
+BOOLEAN
+DpcRoutineFlushPt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+
+BOOLEAN
+DpcRoutineFilterPt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
diff --git a/hyperdbg/hypertrace/header/globals/GlobalVariables.h b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
index 53a8f06f..5c8669ca 100644
--- a/hyperdbg/hypertrace/header/globals/GlobalVariables.h
+++ b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
@@ -51,3 +51,9 @@ BOOLEAN g_ProcessorTraceEnabled;
*
*/
LBR_STACK_ENTRY * g_LbrStateList;
+
+/**
+ * @brief Dynamically allocated array of per-CPU Intel PT state.
+ * Sized to KeQueryActiveProcessorCount(0) at hypertrace init.
+ */
+PT_PER_CPU * g_PtStateList;
diff --git a/hyperdbg/hypertrace/header/pt/Pt.h b/hyperdbg/hypertrace/header/pt/Pt.h
index c70b4657..283cae2d 100644
--- a/hyperdbg/hypertrace/header/pt/Pt.h
+++ b/hyperdbg/hypertrace/header/pt/Pt.h
@@ -1,10 +1,12 @@
/**
* @file Pt.h
- * @author
+ * @author Sina Karvandi (sina@hyperdbg.org)
* @brief Header for Processor Trace (PT) tracing routines for HyperTrace module
- * @details
+ * @details Engine that programs Intel PT MSRs from VMX root or kernel context.
+ * Buffer / ToPA management is kept here; user-visible PT structures
+ * live in the SDK header [PtDefinitions.h].
* @version 0.19
- * @date 2026-04-25
+ * @date 2026-04-29
*
* @copyright This project is released under the GNU Public License v3.
*/
@@ -14,21 +16,120 @@
// Constants //
//////////////////////////////////////////////////
+//
+// Pool tag for PT contiguous allocations (ASCII "PtHd")
+//
+#define POOL_TAG_PT 'dHtP'
+
//////////////////////////////////////////////////
// Structures //
//////////////////////////////////////////////////
-//////////////////////////////////////////////////
-// Platform Wrappers //
-//////////////////////////////////////////////////
+/**
+ * @brief Narrow input descriptor for PtFilter.
+ *
+ * These are the only fields a caller is allowed to set per-CPU
+ * when reconfiguring an active PT trace. Engine-internal options
+ * (BranchEn, TscEn, MtcEn, CycEn, RetCompression, *Freq, etc.)
+ * stay under the engine's control and are NOT exposed here.
+ *
+ * BufferSize == 0 means "keep whatever the per-CPU slot already
+ * has" — pure filter changes don't touch the ToPA / output /
+ * overflow buffers and can run from a DPC.
+ */
+typedef struct _PT_FILTER_OPTIONS
+{
+ BOOLEAN TraceUser;
+ BOOLEAN TraceKernel;
+ UINT64 TargetCr3;
+ UINT64 BufferSize;
+ UINT32 NumAddrRanges;
+ PT_ADDR_RANGE AddrRanges[PT_MAX_ADDR_RANGES];
-//////////////////////////////////////////////////
-// Global Variables //
-//////////////////////////////////////////////////
+} PT_FILTER_OPTIONS, *PPT_FILTER_OPTIONS;
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
+//
+// HyperDbg-style wrappers (mirroring Lbr*)
+//
+
BOOLEAN
PtCheck();
+
+BOOLEAN
+PtStart();
+
+VOID
+PtStop();
+
+VOID
+PtSave();
+
+VOID
+PtDump();
+
+VOID
+PtFlush();
+
+//
+// LBR-style filter wrapper, one CPU at a time. Mirrors LbrFilter in shape:
+// caller passes a PT_FILTER_OPTIONS describing only the user-tunable bits
+// (TraceUser, TraceKernel, TargetCr3, BufferSize, NumAddrRanges, AddrRanges),
+// and PtFilter handles the stop / config-update / start sequence on the
+// CURRENT CPU. Engine-internal config (BranchEn, TscEn, etc.) is left
+// untouched in the per-CPU PT_TRACE_CONFIG.
+//
+VOID
+PtFilter(const PT_FILTER_OPTIONS * Options);
+
+//
+// PASSIVE_LEVEL helpers — call before / after the per-core DPC broadcasts.
+// Required because MmAllocateContiguousMemorySpecifyCache and
+// MmFreeContiguousMemory must run at IRQL == PASSIVE_LEVEL.
+//
+
+BOOLEAN
+PtAllocateAllCpuBuffers();
+
+VOID
+PtFreeAllCpuBuffers();
+
+//
+// Engine routines (operate on a specific PT_PER_CPU instance)
+//
+
+INT32
+PtEngineQueryCapabilities(PT_CAPABILITIES * OutCaps);
+
+VOID
+PtEngineInitDefaultConfig(PT_TRACE_CONFIG * Config);
+
+INT32
+PtEngineAllocateBuffers(PT_PER_CPU * Cpu, const PT_TRACE_CONFIG * Config);
+
+VOID
+PtEngineFreeBuffers(PT_PER_CPU * Cpu);
+
+INT32
+PtEngineStart(PT_PER_CPU * Cpu);
+
+UINT64
+PtEngineStop(PT_PER_CPU * Cpu, PT_OUTPUT_BUFFER * Out);
+
+INT32
+PtEnginePause(PT_PER_CPU * Cpu);
+
+INT32
+PtEngineResume(PT_PER_CPU * Cpu);
+
+UINT64
+PtEngineHandlePmi(PT_PER_CPU * Cpu, PT_OUTPUT_BUFFER * Out);
+
+BOOLEAN
+PtEngineIsPtPmi();
+
+INT32
+PtEngineSizeToTopaEncoding(UINT64 SizeInBytes);
diff --git a/hyperdbg/include/SDK/HyperDbgSdk.h b/hyperdbg/include/SDK/HyperDbgSdk.h
index 71bafe53..2ee39895 100644
--- a/hyperdbg/include/SDK/HyperDbgSdk.h
+++ b/hyperdbg/include/SDK/HyperDbgSdk.h
@@ -21,6 +21,11 @@
//
#include "SDK/headers/LbrDefinitions.h"
+//
+// Intel Processor Trace
+//
+#include "SDK/headers/PtDefinitions.h"
+
//
// Asserts
//
diff --git a/hyperdbg/include/SDK/headers/PtDefinitions.h b/hyperdbg/include/SDK/headers/PtDefinitions.h
new file mode 100644
index 00000000..7692d824
--- /dev/null
+++ b/hyperdbg/include/SDK/headers/PtDefinitions.h
@@ -0,0 +1,337 @@
+/**
+ * @file PtDefinitions.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Intel Processor Trace (PT) related data structures and hardware
+ * definitions shared between the kernel and user-mode components.
+ * @details
+ * @version 0.19
+ * @date 2026-04-29
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// MSR Addresses //
+// (Intel SDM Vol. 3, Chapter 32) //
+//////////////////////////////////////////////////
+
+#define MSR_IA32_RTIT_OUTPUT_BASE 0x00000560
+#define MSR_IA32_RTIT_OUTPUT_MASK_PTRS 0x00000561
+#define MSR_IA32_RTIT_CTL 0x00000570
+#define MSR_IA32_RTIT_STATUS 0x00000571
+#define MSR_IA32_RTIT_CR3_MATCH 0x00000572
+
+#define MSR_IA32_RTIT_ADDR0_A 0x00000580
+#define MSR_IA32_RTIT_ADDR0_B 0x00000581
+#define MSR_IA32_RTIT_ADDR1_A 0x00000582
+#define MSR_IA32_RTIT_ADDR1_B 0x00000583
+#define MSR_IA32_RTIT_ADDR2_A 0x00000584
+#define MSR_IA32_RTIT_ADDR2_B 0x00000585
+#define MSR_IA32_RTIT_ADDR3_A 0x00000586
+#define MSR_IA32_RTIT_ADDR3_B 0x00000587
+
+//
+// Used in PMI acknowledgment
+//
+#define MSR_IA32_PERF_GLOBAL_STATUS 0x0000038E
+#define MSR_IA32_PERF_GLOBAL_OVF_CTRL 0x00000390
+
+//
+// Bit 55 of IA32_PERF_GLOBAL_STATUS: ToPA PMI pending
+//
+#define PERF_GLOBAL_STATUS_TOPA_PMI (1ULL << 55)
+
+//////////////////////////////////////////////////
+// Constants //
+//////////////////////////////////////////////////
+
+#define PT_PAGE_SIZE 0x1000ULL /* 4 KB */
+#define PT_DEFAULT_BUFFER_SIZE 0x200000ULL /* 2 MB */
+#define PT_OVERFLOW_SIZE PT_PAGE_SIZE /* 4 KB overflow landing zone */
+#define PT_MAX_ADDR_RANGES 4
+
+//
+// ToPA entry Size field encoding: value N = 4KB * 2^N
+//
+#define PT_TOPA_SIZE_4K 0
+#define PT_TOPA_SIZE_8K 1
+#define PT_TOPA_SIZE_16K 2
+#define PT_TOPA_SIZE_32K 3
+#define PT_TOPA_SIZE_64K 4
+#define PT_TOPA_SIZE_128K 5
+#define PT_TOPA_SIZE_256K 6
+#define PT_TOPA_SIZE_512K 7
+#define PT_TOPA_SIZE_1M 8
+#define PT_TOPA_SIZE_2M 9
+#define PT_TOPA_SIZE_4M 10
+#define PT_TOPA_SIZE_8M 11
+#define PT_TOPA_SIZE_16M 12
+#define PT_TOPA_SIZE_32M 13
+#define PT_TOPA_SIZE_64M 14
+#define PT_TOPA_SIZE_128M 15
+
+//////////////////////////////////////////////////
+// MSR Structures //
+//////////////////////////////////////////////////
+
+/**
+ * @brief IA32_RTIT_CTL — PT master control register
+ * @details Intel SDM Vol. 3, Section 32.2.7.2
+ */
+typedef union _PT_RTIT_CTL_REGISTER
+{
+ struct
+ {
+ UINT64 TraceEn : 1; /* [0] Enable tracing */
+ UINT64 CycEn : 1; /* [1] CYC packets */
+ UINT64 Os : 1; /* [2] Trace CPL 0 */
+ UINT64 User : 1; /* [3] Trace CPL > 0 */
+ UINT64 PwrEvtEn : 1; /* [4] Power event trace */
+ UINT64 FupOnPtw : 1; /* [5] FUP on PTWRITE */
+ UINT64 FabricEn : 1; /* [6] Trace to fabric (must be 0) */
+ UINT64 Cr3Filter : 1; /* [7] Filter by CR3 */
+ UINT64 ToPA : 1; /* [8] Use ToPA output scheme */
+ UINT64 MtcEn : 1; /* [9] MTC packets */
+ UINT64 TscEn : 1; /* [10] TSC packets */
+ UINT64 DisRetc : 1; /* [11] Disable RET compression */
+ UINT64 PtwEn : 1; /* [12] PTWRITE packets */
+ UINT64 BranchEn : 1; /* [13] Branch trace (TNT, TIP, FUP) */
+ UINT64 MtcFreq : 4; /* [14:17] MTC frequency */
+ UINT64 Reserved0 : 1; /* [18] Must be 0 */
+ UINT64 CycThresh : 4; /* [19:22] CYC threshold */
+ UINT64 Reserved1 : 1; /* [23] Must be 0 */
+ UINT64 PsbFreq : 4; /* [24:27] PSB frequency */
+ UINT64 Reserved2 : 4; /* [28:31] Must be 0 */
+ UINT64 Addr0Cfg : 4; /* [32:35] Range 0 mode (1=filter / 2=stop) */
+ UINT64 Addr1Cfg : 4; /* [36:39] Range 1 mode */
+ UINT64 Addr2Cfg : 4; /* [40:43] Range 2 mode */
+ UINT64 Addr3Cfg : 4; /* [44:47] Range 3 mode */
+ UINT64 Reserved3 : 16; /* [48:63] Must be 0 */
+ };
+ UINT64 Value;
+} PT_RTIT_CTL_REGISTER, *PPT_RTIT_CTL_REGISTER;
+
+/**
+ * @brief IA32_RTIT_STATUS — PT status / error register
+ * @details Intel SDM Vol. 3, Section 32.2.7.4
+ */
+typedef union _PT_RTIT_STATUS_REGISTER
+{
+ struct
+ {
+ UINT64 FilterEn : 1; /* [0] RO: IP filter allowing trace */
+ UINT64 ContextEn : 1; /* [1] RO: Context (CR3) allowing trace */
+ UINT64 TriggerEn : 1; /* [2] RO: Trigger conditions met */
+ UINT64 Reserved0 : 1; /* [3] Must be 0 */
+ UINT64 Error : 1; /* [4] RO/Sticky: Operational error */
+ UINT64 Stopped : 1; /* [5] RO: TraceStop hit */
+ UINT64 PendTopaPmi : 1; /* [6] RW: ToPA PMI pending — clear this */
+ UINT64 PendPsbPmi : 1; /* [7] RW: PSB+ PMI pending — clear this */
+ UINT64 Reserved1 : 24; /* [8:31] Must be 0 */
+ UINT64 PacketByteCnt : 17; /* [32:48] Bytes since last PSB */
+ UINT64 Reserved2 : 15; /* [49:63] Must be 0 */
+ };
+ UINT64 Value;
+} PT_RTIT_STATUS_REGISTER, *PPT_RTIT_STATUS_REGISTER;
+
+/**
+ * @brief IA32_RTIT_OUTPUT_MASK_PTRS — Output position tracker
+ * @details Intel SDM Vol. 3, Section 32.2.7.8
+ */
+typedef union _PT_OUTPUT_MASK_PTRS_REGISTER
+{
+ struct
+ {
+ UINT64 LowerMask : 7; /* [0:6] Forced to 0x7F */
+ UINT64 MaskOrTableOffset : 25; /* [7:31] ToPA: table entry index */
+ UINT64 OutputOffset : 32; /* [32:63] Byte offset in current entry */
+ };
+ UINT64 Value;
+} PT_OUTPUT_MASK_PTRS_REGISTER, *PPT_OUTPUT_MASK_PTRS_REGISTER;
+
+/**
+ * @brief ToPA Table Entry
+ * @details Intel SDM Vol. 3, Section 32.2.7.2 (Table of Physical Addresses)
+ */
+typedef union _PT_TOPA_ENTRY
+{
+ struct
+ {
+ UINT64 End : 1; /* [0] Last entry — wraps to next table */
+ UINT64 Reserved0 : 1; /* [1] Must be 0 */
+ UINT64 Int : 1; /* [2] Generate PMI when region fills */
+ UINT64 Reserved1 : 1; /* [3] Must be 0 */
+ UINT64 Stop : 1; /* [4] Stop tracing when region fills */
+ UINT64 Reserved2 : 1; /* [5] Must be 0 */
+ UINT64 Size : 4; /* [6:9] Region size (4K*2^N) */
+ UINT64 Reserved3 : 2; /* [10:11] Must be 0 */
+ UINT64 BaseAddr : 36; /* [12:47] Physical address >> 12 */
+ UINT64 Reserved4 : 16; /* [48:63] Must be 0 */
+ };
+ UINT64 Value;
+} PT_TOPA_ENTRY, *PPT_TOPA_ENTRY;
+
+//////////////////////////////////////////////////
+// Capability / Config //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Discovered Intel PT capabilities (populated from CPUID leaf 0x14).
+ */
+typedef struct _PT_CAPABILITIES
+{
+ UINT32 Cr3Filtering : 1; /* Can filter by process CR3 */
+ UINT32 PsbCycConfigurable : 1; /* PSBFreq and CYC configurable */
+ UINT32 IpFiltering : 1; /* IP filtering and TraceStop supported */
+ UINT32 MtcSupport : 1; /* MTC packets supported */
+ UINT32 PtwriteSupport : 1; /* PTWRITE instruction supported */
+ UINT32 PowerEventTrace : 1; /* Power event trace supported */
+ UINT32 VmxSupport : 1; /* PT works in VMX operations */
+ UINT32 TopaOutput : 1; /* ToPA output scheme supported */
+ UINT32 TopaMultiEntry : 1; /* ToPA tables can have >1 entry */
+ UINT32 SingleRangeOutput : 1; /* Single contiguous range output */
+ UINT32 TransportOutput : 1; /* Trace transport subsystem output */
+ UINT32 IpPayloadsAreLip : 1; /* IP payloads are LIP (not RIP) */
+ UINT32 Reserved : 20;
+
+ UINT32 NumAddrRanges; /* Number of ADDRn_CFG pairs (0-4) */
+ UINT16 MtcPeriodBitmap; /* Supported MTC period values */
+ UINT16 CycThresholdBitmap; /* Supported CYC threshold values */
+ UINT16 PsbFreqBitmap; /* Supported PSB frequency values */
+
+} PT_CAPABILITIES, *PPT_CAPABILITIES;
+
+/**
+ * @brief Intel PT trace state machine.
+ */
+typedef enum _PT_STATE
+{
+ PT_STATE_DISABLED = 0, /* No buffers allocated, PT off */
+ PT_STATE_READY, /* Buffers allocated, MSRs not yet programmed */
+ PT_STATE_TRACING, /* TraceEn=1, actively generating packets */
+ PT_STATE_PAUSED, /* TraceEn=0 temporarily (PMI or user pause) */
+ PT_STATE_STOPPED, /* Tracing done, buffer has valid data */
+ PT_STATE_ERROR /* Hardware error (check IA32_RTIT_STATUS) */
+} PT_STATE;
+
+/**
+ * @brief Intel PT IP filter range.
+ */
+typedef struct _PT_ADDR_RANGE
+{
+ UINT64 Start; /* Start virtual address — written to ADDRn_A */
+ UINT64 End; /* End virtual address — written to ADDRn_B */
+ BOOLEAN IsStopRange; /* FALSE = filter (only trace inside range)
+ TRUE = trace-stop (stop when entering range) */
+} PT_ADDR_RANGE, *PPT_ADDR_RANGE;
+
+/**
+ * @brief Intel PT trace configuration — what the user specifies.
+ */
+typedef struct _PT_TRACE_CONFIG
+{
+ //
+ // What to trace
+ //
+ BOOLEAN TraceUser; /* Trace CPL 3 (user mode) */
+ BOOLEAN TraceKernel; /* Trace CPL 0 (kernel mode) */
+ UINT64 TargetCr3; /* Process to trace (0 = trace all) */
+
+ //
+ // IP filtering
+ //
+ UINT32 NumAddrRanges; /* 0-4 active ranges */
+ PT_ADDR_RANGE AddrRanges[PT_MAX_ADDR_RANGES];
+
+ //
+ // Packet options
+ //
+ BOOLEAN EnableBranch; /* BranchEn — must be TRUE for useful traces */
+ BOOLEAN EnableTsc; /* TscEn — timestamps at PSB boundaries */
+ BOOLEAN EnableMtc; /* MtcEn — wall-clock timing packets */
+ BOOLEAN EnableCyc; /* CycEn — cycle-accurate packets */
+ BOOLEAN EnableRetCompression; /* TRUE keeps RET compression */
+ UINT8 MtcFreq; /* 0-15: MTC period (must be in capabilities) */
+ UINT8 CycThresh; /* 0-15: CYC threshold */
+ UINT8 PsbFreq; /* 0-15: PSB frequency (0 = every 2KB) */
+
+ //
+ // Buffer size
+ //
+ UINT64 BufferSize; /* Main output buffer size in bytes
+ Must be 4KB * 2^N (4KB, 8KB, ..., 128MB)
+ Default: PT_DEFAULT_BUFFER_SIZE (2MB) */
+} PT_TRACE_CONFIG, *PPT_TRACE_CONFIG;
+
+//////////////////////////////////////////////////
+// Per-CPU Trace State //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Per-CPU PT buffer layout
+ *
+ * ToPA Table (one 4KB page, 3 entries used):
+ * Entry[0] — Main data buffer (BufferSize), INT=1
+ * Entry[1] — Overflow zone (4KB), INT=0
+ * Entry[2] — END, points back to ToPA table (circular)
+ */
+typedef struct _PT_BUFFER
+{
+ //
+ // ToPA table
+ //
+ PT_TOPA_ENTRY * TopaVa; /* Virtual addr of the ToPA table */
+ UINT64 TopaPhysical; /* Physical addr — IA32_RTIT_OUTPUT_BASE */
+
+ //
+ // Main output buffer
+ //
+ PVOID OutputVa; /* Virtual addr — read trace data from here */
+ UINT64 OutputPhysical; /* Physical addr — goes into ToPA entry[0] */
+ UINT64 OutputSize; /* Bytes (e.g., 0x200000 for 2MB) */
+
+ //
+ // Overflow landing zone (4KB)
+ //
+ PVOID OverflowVa; /* Virtual addr of overflow page */
+ UINT64 OverflowPhysical; /* Physical addr — ToPA entry[1] */
+
+} PT_BUFFER, *PPT_BUFFER;
+
+/**
+ * @brief Per-CPU Intel PT state — one of these per logical processor.
+ */
+typedef struct _PT_PER_CPU
+{
+ PT_BUFFER Buffer; /* ToPA + output buffers */
+ PT_RTIT_CTL_REGISTER SavedCtl; /* Last written IA32_RTIT_CTL */
+ PT_TRACE_CONFIG Config; /* Current trace configuration */
+ PT_STATE State; /* Current state machine position */
+ UINT64 TotalBytesCaptured; /* Accumulated across PMI events */
+
+} PT_PER_CPU, *PPT_PER_CPU;
+
+//////////////////////////////////////////////////
+// Trace Output Descriptor //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Trace output descriptor
+ *
+ * Passed to the engine to receive trace data. WriteOffset serves dual purpose:
+ * - Input: where in Buffer to start writing new data.
+ * - Output: updated to Buffer[0..WriteOffset) = valid data after the call.
+ *
+ * If the remaining space (Length - WriteOffset) is smaller than the new data,
+ * the copy is skipped and WriteOffset is not updated.
+ * Pass NULL instead of a PT_OUTPUT_BUFFER * to skip copying entirely.
+ */
+typedef struct _PT_OUTPUT_BUFFER
+{
+ PVOID Buffer; /* Destination buffer for trace data */
+ UINT64 Length; /* Total size of Buffer in bytes */
+ UINT64 WriteOffset; /* Next write position; valid data is [0..WriteOffset) */
+
+} PT_OUTPUT_BUFFER, *PPT_OUTPUT_BUFFER;
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index e3a80d62..2802ea08 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1283,18 +1283,37 @@ typedef enum _HYPERTRACE_PT_OPERATION_REQUEST_TYPE
HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE,
HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SAVE,
HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DUMP,
+ HYPERTRACE_PT_OPERATION_REQUEST_TYPE_FLUSH,
} HYPERTRACE_PT_OPERATION_REQUEST_TYPE;
/**
* @brief The structure of HyperTrace PT result packet in HyperDbg
*
+ * Configuration fields (TraceUser/TraceKernel/TargetCr3/BufferSize/
+ * NumAddrRanges/AddrRanges) are populated by the caller for ENABLE
+ * and FILTER operations. For other operations they are ignored.
+ *
+ * BufferSize must be a power of two multiple of 4 KB (4KB ... 128MB).
+ * Pass 0 to keep the existing per-CPU value (default 2 MB on first
+ * enable).
*/
typedef struct _HYPERTRACE_PT_OPERATION_PACKETS
{
HYPERTRACE_PT_OPERATION_REQUEST_TYPE PtOperationType;
UINT32 KernelStatus;
+ //
+ // Filter / config (used by FILTER and ENABLE)
+ //
+ UINT32 TraceUser; /* Boolean: trace CPL > 0 */
+ UINT32 TraceKernel; /* Boolean: trace CPL == 0 */
+ UINT64 TargetCr3; /* CR3 to filter by (0 = no filter) */
+ UINT64 BufferSize; /* Output buffer size (0 = keep current) */
+ UINT32 NumAddrRanges; /* Number of valid AddrRanges entries */
+ UINT32 Reserved; /* Padding to keep the array 8-aligned */
+ PT_ADDR_RANGE AddrRanges[PT_MAX_ADDR_RANGES];
+
} HYPERTRACE_PT_OPERATION_PACKETS, *PHYPERTRACE_PT_OPERATION_PACKETS;
/**
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 6c08d31c..5d1979e7 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -58,9 +58,24 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
// PT Functions //
//////////////////////////////////////////////////
-BOOLEAN
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTracePtEnable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
+
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTracePtDisable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTracePtSave(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
+
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTracePtDump(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
+
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTracePtFlush(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
+
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTracePtFilter(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
+
//
// Perform operations related to HyperTrace PT based on the request type and parameters
//
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp
index 0c86476a..8e988cc1 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp
@@ -4,7 +4,7 @@
* @brief !pt command
* @details
* @version 0.19
- * @date 2026-04-25
+ * @date 2026-04-29
*
* @copyright This project is released under the GNU Public License v3.
*
@@ -24,13 +24,37 @@ extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
VOID
CommandPtHelp()
{
- ShowMessages("!pt : enables and disables Processor Trace (PT).\n");
+ ShowMessages("!pt : enables, disables and configures Intel Processor Trace (PT).\n");
ShowMessages("syntax : \t!pt [Function (string)]\n");
+ ShowMessages("syntax : \t!pt filter [user] [kernel] [cr3 ] [buffer ]\n");
+ ShowMessages("\t [range ] [stoprange ]\n");
ShowMessages("\n");
ShowMessages("\t\te.g : !pt enable\n");
ShowMessages("\t\te.g : !pt disable\n");
+ ShowMessages("\t\te.g : !pt save\n");
+ ShowMessages("\t\te.g : !pt dump\n");
+ ShowMessages("\t\te.g : !pt flush\n");
+
+ ShowMessages("\n");
+ ShowMessages("\t\te.g : !pt filter user\n");
+ ShowMessages("\t\te.g : !pt filter kernel\n");
+ ShowMessages("\t\te.g : !pt filter user kernel\n");
+ ShowMessages("\t\te.g : !pt filter user cr3 0x1aabb000\n");
+ ShowMessages("\t\te.g : !pt filter user buffer 0x100000\n");
+ ShowMessages("\t\te.g : !pt filter user range 0x140001000 0x140002000\n");
+ ShowMessages("\t\te.g : !pt filter user stoprange 0x140003000 0x140004000\n");
+
+ ShowMessages("\nlist of filter options: \n");
+ ShowMessages("\t user : trace CPL > 0\n");
+ ShowMessages("\t kernel : trace CPL == 0\n");
+ ShowMessages("\t cr3 : only trace when CR3 matches (0 = no filter)\n");
+ ShowMessages("\t buffer : per-CPU output buffer size, must be 4KB * 2^N\n");
+ ShowMessages("\t (4KB, 8KB, ... up to 128MB; default 2MB)\n");
+ ShowMessages("\t range : keep trace inside [start..end] (up to 4 ranges)\n");
+ ShowMessages("\t stoprange : stop tracing when execution enters [s..e]\n");
+ ShowMessages("\t (no option) : trace user + kernel, no CR3 / IP filter (default)\n");
}
/**
@@ -109,6 +133,130 @@ HyperDbgPerformPtOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtRequest)
return CommandPtSendRequest(PtRequest);
}
+/**
+ * @brief Parse a `!pt filter ...` clause into a HYPERTRACE_PT_OPERATION_PACKETS.
+ *
+ * Returns TRUE on success, FALSE if the syntax was bad (caller
+ * should print help and bail).
+ */
+static BOOLEAN
+CommandPtParseFilterOptions(vector & CommandTokens,
+ HYPERTRACE_PT_OPERATION_PACKETS * PtRequest)
+{
+ BOOLEAN AnyMode = FALSE;
+
+ PtRequest->TraceUser = 0;
+ PtRequest->TraceKernel = 0;
+ PtRequest->TargetCr3 = 0;
+ PtRequest->BufferSize = 0;
+ PtRequest->NumAddrRanges = 0;
+
+ for (size_t i = 2; i < CommandTokens.size(); i++)
+ {
+ if (CompareLowerCaseStrings(CommandTokens.at(i), "user"))
+ {
+ PtRequest->TraceUser = 1;
+ AnyMode = TRUE;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "kernel"))
+ {
+ PtRequest->TraceKernel = 1;
+ AnyMode = TRUE;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "cr3"))
+ {
+ if (i + 1 >= CommandTokens.size())
+ {
+ ShowMessages("err, '%s' expects a value\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(i)).c_str());
+ return FALSE;
+ }
+ i++;
+ if (!ConvertTokenToUInt64(CommandTokens.at(i), &PtRequest->TargetCr3))
+ {
+ ShowMessages("err, '%s' is not a valid number\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(i)).c_str());
+ return FALSE;
+ }
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "buffer"))
+ {
+ if (i + 1 >= CommandTokens.size())
+ {
+ ShowMessages("err, 'buffer' expects a size in bytes\n");
+ return FALSE;
+ }
+ i++;
+ if (!ConvertTokenToUInt64(CommandTokens.at(i), &PtRequest->BufferSize))
+ {
+ ShowMessages("err, '%s' is not a valid number\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(i)).c_str());
+ return FALSE;
+ }
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(i), "range") ||
+ CompareLowerCaseStrings(CommandTokens.at(i), "stoprange"))
+ {
+ BOOLEAN IsStop = CompareLowerCaseStrings(CommandTokens.at(i), "stoprange");
+
+ if (i + 2 >= CommandTokens.size())
+ {
+ ShowMessages("err, '%s' expects \n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(i)).c_str());
+ return FALSE;
+ }
+
+ if (PtRequest->NumAddrRanges >= PT_MAX_ADDR_RANGES)
+ {
+ ShowMessages("err, no more than %u address ranges supported\n",
+ (UINT32)PT_MAX_ADDR_RANGES);
+ return FALSE;
+ }
+
+ UINT64 Start = 0, End = 0;
+
+ i++;
+ if (!ConvertTokenToUInt64(CommandTokens.at(i), &Start))
+ {
+ ShowMessages("err, '%s' is not a valid address\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(i)).c_str());
+ return FALSE;
+ }
+ i++;
+ if (!ConvertTokenToUInt64(CommandTokens.at(i), &End))
+ {
+ ShowMessages("err, '%s' is not a valid address\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(i)).c_str());
+ return FALSE;
+ }
+
+ UINT32 Idx = PtRequest->NumAddrRanges;
+ PtRequest->AddrRanges[Idx].Start = Start;
+ PtRequest->AddrRanges[Idx].End = End;
+ PtRequest->AddrRanges[Idx].IsStopRange = IsStop;
+ PtRequest->NumAddrRanges = Idx + 1;
+ }
+ else
+ {
+ ShowMessages("unknown filter option '%s'\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(i)).c_str());
+ return FALSE;
+ }
+ }
+
+ //
+ // Default to both modes if neither was specified — matches LBR's
+ // empty-filter behaviour.
+ //
+ if (!AnyMode)
+ {
+ PtRequest->TraceUser = 1;
+ PtRequest->TraceKernel = 1;
+ }
+
+ return TRUE;
+}
+
/**
* @brief !pt command handler
*
@@ -122,7 +270,7 @@ CommandPt(vector CommandTokens, string Command)
{
HYPERTRACE_PT_OPERATION_PACKETS PtRequest = {0};
- if (CommandTokens.size() != 2)
+ if (CommandTokens.size() == 1)
{
ShowMessages("incorrect use of the '%s'\n\n",
GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
@@ -131,22 +279,36 @@ CommandPt(vector CommandTokens, string Command)
return;
}
- if (CompareLowerCaseStrings(CommandTokens.at(1), "enable"))
+ if (CompareLowerCaseStrings(CommandTokens.at(1), "enable") && CommandTokens.size() == 2)
{
PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_ENABLE;
}
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "disable"))
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "disable") && CommandTokens.size() == 2)
{
PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE;
}
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "save"))
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "save") && CommandTokens.size() == 2)
{
PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SAVE;
}
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "dump"))
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "dump") && CommandTokens.size() == 2)
{
PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DUMP;
}
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "flush") && CommandTokens.size() == 2)
+ {
+ PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_FLUSH;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "filter"))
+ {
+ PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_FILTER;
+
+ if (!CommandPtParseFilterOptions(CommandTokens, &PtRequest))
+ {
+ CommandPtHelp();
+ return;
+ }
+ }
else
{
ShowMessages("incorrect use of the '%s'\n\n",
@@ -160,21 +322,29 @@ CommandPt(vector CommandTokens, string Command)
//
if (CommandPtSendRequest(&PtRequest))
{
- if (PtRequest.PtOperationType == HYPERTRACE_PT_OPERATION_REQUEST_TYPE_ENABLE)
+ switch (PtRequest.PtOperationType)
{
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_ENABLE:
ShowMessages("PT enabled successfully\n");
- }
- else if (PtRequest.PtOperationType == HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE)
- {
+ break;
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE:
ShowMessages("PT disabled successfully\n");
- }
- else if (PtRequest.PtOperationType == HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SAVE)
- {
- ShowMessages("PT branches are saved\n");
- }
- else if (PtRequest.PtOperationType == HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DUMP)
- {
- ShowMessages("PT branches are shown\n");
+ break;
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SAVE:
+ ShowMessages("PT trace state is saved\n");
+ break;
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DUMP:
+ ShowMessages("PT trace state is shown\n");
+ break;
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_FLUSH:
+ ShowMessages("PT trace state is flushed\n");
+ break;
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_FILTER:
+ ShowMessages("PT filter / config updated successfully\n");
+ break;
+ default:
+ ShowMessages("unknown PT operation type\n");
+ break;
}
}
else
From 61c30822fbf908c124c75abcc52708134b483179 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 17 May 2026 04:27:56 +0200
Subject: [PATCH 176/323] perform adjustments for call_stack filter option of
LBR
---
CHANGELOG.md | 1 +
hyperdbg/hypertrace/code/lbr/Lbr.c | 84 +++++++++++++++----
hyperdbg/hypertrace/header/lbr/Lbr.h | 3 +
hyperdbg/include/SDK/headers/LbrDefinitions.h | 12 ++-
.../commands/extension-commands/lbr.cpp | 63 +++++++++++++-
.../code/debugger/core/interpreter.cpp | 3 +-
6 files changed, 145 insertions(+), 21 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0b9418d0..096e64d1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,6 +18,7 @@ New release of the HyperDbg Debugger.
- HyperDbg SDK now compiles on Linux (GCC) for both user-mode and kernel-mode
- VMX instructions are ported to platform-independent files to support Linux
- All CPU-related intrinsic instructions are ported to platform-independent files to support Linux
+- Add '!help' alias for the '.help' command
### Changed
- Fix the problem of not applying the EAX index in the CPUID event extension command ([link](https://docs.hyperdbg.org/commands/extension-commands/cpuid#parameters))
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index d446012c..124929bd 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -726,6 +726,72 @@ LbrResetControlRegisters()
}
}
+/**
+ * @brief Adjust filter options for call stack
+ *
+ * @param FilterOptions A bitmask of filter options
+ * @return VOID
+ */
+VOID
+LbrAdjustFilterOptionsForCallStack(UINT64 * FilterOptions)
+{
+ //
+ // Call-stack mode should be used with branch type enabling configured to capture only CALLs (NEAR_REL_CALL and
+ // NEAR_IND_CALL) and RETs (NEAR_RET). When configured in this manner, the LBR array emulates a call stack,
+ // where CALLs are "pushed" and RETs "pop" them off the stack. If other branch types (JCC, NEAR_*_JMP, or
+ // OTHER_BRANCH) are enabled for recording with call-stack mode, LBR behavior may be undefined, so we will
+ // mask out any branch type filters that are not CALLs or RETs when call-stack mode is requested to ensure
+ // we are correctly emulating a call stack and avoiding undefined behavior
+ //
+
+ //
+ // If it is call_stack then we only keep the user and kernel bit and filter all branch types
+ // except calls and rets to ensure we are only capturing call stack profile
+ //
+ if (*FilterOptions & LBR_CALL_STACK)
+ {
+ //
+ // Preserve only the user/kernel privilege bits from the original options,
+ // then apply the mandatory call stack base flags
+ //
+ *FilterOptions = LBR_CALL_STACK_BASE_FLAGS | (*FilterOptions & (LBR_KERNEL | LBR_USER));
+ }
+}
+
+/**
+ * @brief Adjust filter options
+ *
+ * @param FilterOptions A bitmask of filter options
+ * @param Ia32LbrCtl Pointer to the IA32_LBR_CTL_REGISTER to adjust based on the filter options and CPU capabilities
+ *
+ * @return VOID
+ */
+VOID
+LbrAdjustFilterOptions(UINT64 FilterOptions, IA32_LBR_CTL_REGISTER * Ia32LbrCtl)
+{
+ //
+ // Adjust filter options in case of call_stack
+ //
+ LbrAdjustFilterOptionsForCallStack(&FilterOptions);
+
+ //
+ // For architectural LBR, convert filter options into IA32_LBR_CTL bit fields
+ //
+ if (g_ArchBasedLastBranchRecord)
+ {
+ LbrBuildArchBasedFilterOptions(FilterOptions, Ia32LbrCtl);
+ }
+
+ //
+ // For legacy LBR, write the raw filter options to MSR_LEGACY_LBR_SELECT
+ // Architectural LBR encodes its filters in IA32_LBR_CTL and does not use this MSR
+ //
+ if (!g_ArchBasedLastBranchRecord)
+ {
+ LbrSetLbrSelectFilter(FilterOptions);
+ }
+}
+
/**
* @brief Start collecting LBR branches
*
@@ -742,26 +808,14 @@ LbrStart(UINT64 FilterOptions)
if (g_LbrCapacity == 0)
{
- LogInfo("LBR: Aborting, CPU model not supported.\n");
+ LogInfo("Err, LBR aborting, CPU model not supported\n");
return FALSE;
}
//
- // For architectural LBR, convert filter options into IA32_LBR_CTL bit fields
+ // Adjust and set filter options
//
- if (g_ArchBasedLastBranchRecord)
- {
- LbrBuildArchBasedFilterOptions(FilterOptions, &Ia32LbrCtl);
- }
-
- //
- // For legacy LBR, write the raw filter options to MSR_LEGACY_LBR_SELECT
- // Architectural LBR encodes its filters in IA32_LBR_CTL and does not use this MSR
- //
- if (!g_ArchBasedLastBranchRecord)
- {
- LbrSetLbrSelectFilter(FilterOptions);
- }
+ LbrAdjustFilterOptions(FilterOptions, &Ia32LbrCtl);
//
// Clear hardware state before enabling LBR
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index 0561fc74..20dc5a3c 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -17,6 +17,9 @@
//
// Legacy LBR MSRs
//
+#ifndef MSR_LEGACY_LBR_SELECT
+# define MSR_LEGACY_LBR_SELECT 0x000001C8 // originally defined in SDK to be used by other module like HyperHV
+#endif // !MSR_LEGACY_LBR_SELECT
#define MSR_LBR_TOS 0x000001C9
#define MSR_LASTBRANCH_0_FROM_IP 0x00000680
#define MSR_LASTBRANCH_0_TO_IP 0x000006C0
diff --git a/hyperdbg/include/SDK/headers/LbrDefinitions.h b/hyperdbg/include/SDK/headers/LbrDefinitions.h
index 5696644a..49e634d3 100644
--- a/hyperdbg/include/SDK/headers/LbrDefinitions.h
+++ b/hyperdbg/include/SDK/headers/LbrDefinitions.h
@@ -20,6 +20,12 @@
*/
#define MSR_LEGACY_LBR_SELECT 0x000001C8
+/**
+ * @brief Maximum LBR capacity that is supported by processors
+ *
+ */
+#define MAXIMUM_LBR_CAPACITY 0x20 // 32 entries, which is the maximum supported by modern Intel CPUs
+
/*
* Intel LBR_SELECT bits
*
@@ -53,10 +59,10 @@
#define LBR_CALL_STACK (1 << LBR_CALL_STACK_BIT)
/**
- * @brief Maximum LBR capacity that is supported by processors
- *
+ * @brief For call-stack mode, only CALLs and RETs should be captured
+ * Capturing other branch types may lead to undefined behavior
*/
-#define MAXIMUM_LBR_CAPACITY 0x20 // 32 entries, which is the maximum supported by modern Intel CPUs
+#define LBR_CALL_STACK_BASE_FLAGS (LBR_CALL_STACK | (LBR_JCC | LBR_IND_JMP | LBR_REL_JMP | LBR_FAR_OTHER_BRANCHES))
/**
* @brief Branch Type Encodings (Only on Architectural LBR, not available in Legacy LBR)
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index 84132bf3..17fdc19e 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -36,6 +36,8 @@ CommandLbrHelp()
ShowMessages("\t\te.g : !lbr filter kernel jcc return ind_jmp rel_jmp far\n");
ShowMessages("\t\te.g : !lbr filter kernel jcc ind_jmp rel_jmp\n");
ShowMessages("\t\te.g : !lbr filter user rel_call ind_call return far\n");
+ ShowMessages("\t\te.g : !lbr filter call_stack user\n");
+ ShowMessages("\t\te.g : !lbr filter call_stack kernel\n");
ShowMessages("\nlist of filter options: \n");
ShowMessages("\t kernel: do not capture at ring0\n");
@@ -51,8 +53,9 @@ CommandLbrHelp()
ShowMessages("\t exceptions (other than debug exceptions), iret, int3, intn, into, tsx abort\n");
ShowMessages("\t eenter, eresume, eexit, aex, init, sipi, rsm (only in ARCH LBR. check docs for details)\n");
ShowMessages("\t call_stack: enable LBR stack to use LIFO filtering to capture call stack profile\n");
- ShowMessages("\t not available on CPUs older than Haswell (needs special treatment. check docs for details)\n");
- ShowMessages("\t (no option): capture everything (default option)\n");
+ ShowMessages("\t not available on CPUs older than Haswell. for this item you can only specify the 'user'\n");
+ ShowMessages("\t or the 'kernel'. it prevents all types of branches except calls and rets\n");
+ ShowMessages("\t (no option): capture everything (default option)\n");
}
/**
@@ -149,6 +152,32 @@ CommandLbrParseSimpleOperation(vector CommandTokens, HYPERTRACE_LB
return TRUE;
}
+/**
+ * @brief Check validity of the filter options in case of call_stack mode
+ *
+ * @param LbrRequest
+ * @return BOOLEAN TRUE if the filter options are valid in case of call_stack mode
+ */
+BOOLEAN
+CommandLbrValidateCallStackFilterOptions(HYPERTRACE_LBR_OPERATION_PACKETS * LbrRequest)
+{
+ if (LbrRequest->LbrFilterOptions & LBR_CALL_STACK)
+ {
+ //
+ // Call-stack mode should be used with branch type enabling configured to capture only CALLs (NEAR_REL_CALL and
+ // NEAR_IND_CALL) and RETs (NEAR_RET). if the user specifed LBR_REL_CALL | LBR_IND_CALL | LBR_RETURN then
+ // it is invalid
+ //
+ if ((LbrRequest->LbrFilterOptions & (LBR_REL_CALL | LBR_IND_CALL | LBR_RETURN)))
+ {
+ ShowMessages("err, invalid filter options for 'call_stack' mode. when the 'call_stack' is enabled,"
+ " 'rel_call', 'ind_call', and 'return' could not be specified as filter options\n\n");
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
/**
* @brief Parses the LBR filter operation and accumulates filter option flags
*
@@ -215,6 +244,36 @@ CommandLbrParseFilterOperation(vector CommandTokens, HYPERTRACE_LB
}
}
+ //
+ // Call-stack mode should be used with branch type enabling configured to capture only CALLs (NEAR_REL_CALL and
+ // NEAR_IND_CALL) and RETs (NEAR_RET). When configured in this manner, the LBR array emulates a call stack,
+ // where CALLs are "pushed" and RETs "pop" them off the stack. If other branch types (JCC, NEAR_*_JMP, or
+ // OTHER_BRANCH) are enabled for recording with call-stack mode, LBR behavior may be undefined, so we will
+ // mask out any branch type filters that are not CALLs or RETs when call-stack mode is requested to ensure
+ // we are correctly emulating a call stack and avoiding undefined behavior
+ //
+
+ //
+ // If it is call_stack then we only keep the user and kernel bit and filter all branch types
+ // except calls and rets to ensure we are only capturing call stack profile
+ //
+ if (LbrRequest->LbrFilterOptions & LBR_CALL_STACK)
+ {
+ //
+ // Validate the filter options in case of call_stack mode
+ //
+ if (CommandLbrValidateCallStackFilterOptions(LbrRequest) == FALSE)
+ {
+ return FALSE;
+ }
+
+ //
+ // Preserve only the user/kernel privilege bits from the original options,
+ // then apply the mandatory call stack base flags
+ //
+ LbrRequest->LbrFilterOptions = LBR_CALL_STACK_BASE_FLAGS | (LbrRequest->LbrFilterOptions & (LBR_KERNEL | LBR_USER));
+ }
+
return TRUE;
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
index 1e10e18f..a5a002ed 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
@@ -947,7 +947,7 @@ HyperDbgInterpreter(CHAR * Command)
// Detect whether it's a .help command or not
//
if (!FirstCommand.compare(".help") || !FirstCommand.compare("help") ||
- !FirstCommand.compare(".hh"))
+ !FirstCommand.compare(".hh") || !FirstCommand.compare("!help"))
{
if (Tokens.size() == 2)
{
@@ -1345,6 +1345,7 @@ InitializeCommandsDictionary()
g_CommandsList[".help"] = {NULL, &CommandHelpHelp, DEBUGGER_COMMAND_HELP_ATTRIBUTES};
g_CommandsList[".hh"] = {NULL, &CommandHelpHelp, DEBUGGER_COMMAND_HELP_ATTRIBUTES};
g_CommandsList["help"] = {NULL, &CommandHelpHelp, DEBUGGER_COMMAND_HELP_ATTRIBUTES};
+ g_CommandsList["!help"] = {NULL, &CommandHelpHelp, DEBUGGER_COMMAND_HELP_ATTRIBUTES};
g_CommandsList["clear"] = {&CommandCls, &CommandClsHelp, DEBUGGER_COMMAND_CLEAR_ATTRIBUTES};
g_CommandsList[".cls"] = {&CommandCls, &CommandClsHelp, DEBUGGER_COMMAND_CLEAR_ATTRIBUTES};
From ef1ce11154aca1500ac7ceb9a12be89794a65960 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 17 May 2026 04:57:09 +0200
Subject: [PATCH 177/323] check LBR support within nested virtualization
environments
---
hyperdbg/hypertrace/code/api/LbrApi.c | 9 ++++
hyperdbg/hypertrace/code/lbr/Lbr.c | 46 ++++++++++++++++++-
hyperdbg/hypertrace/header/lbr/Lbr.h | 3 ++
.../code/debugger/core/debugger.cpp | 3 +-
4 files changed, 58 insertions(+), 3 deletions(-)
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index c68f5e7b..f6f286c1 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -128,6 +128,15 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
//
BroadcastEnableLbrOnAllCores();
+ //
+ // Check if LBR is enabled or not (for example in VMs, LBR flags are usually masked)
+ //
+ if (!LbrCheck())
+ {
+ HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_NOT_SUPPORTED);
+ return FALSE;
+ }
+
//
// Set the flag to indicate that LBR tracing is enabled
//
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 124929bd..61095ef8 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -437,8 +437,8 @@ LbrEnableLegacyBased(ULONGLONG * DbgCtlMsr)
// Enable LBR and CLEAR 'Freeze LBRs on PMI' (Bit 11)
// If Bit 11 is set, the LBR stops recording as soon as a single PMI interrupt fires
//
- *DbgCtlMsr |= IA32_DEBUGCTL_LBR_FLAG; // Bit 0 = 1
- *DbgCtlMsr &= ~(1ULL << 11); // Bit 11 = 0
+ *DbgCtlMsr |= IA32_DEBUGCTL_LBR_FLAG; // Bit 0 = 1
+ *DbgCtlMsr &= ~(1ULL << IA32_DEBUGCTL_FREEZE_LBRS_ON_PMI_BIT); // Bit 11 = 0
}
/**
@@ -792,6 +792,48 @@ LbrAdjustFilterOptions(UINT64 FilterOptions, IA32_LBR_CTL_REGISTER * Ia32LbrCtl)
}
}
+/**
+ * @brief Check if LBR is enabled or not
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrCheck()
+{
+ ULONGLONG DbgCtlMsr = 0;
+ IA32_LBR_CTL_REGISTER Ia32LbrCtl = {0};
+
+ //
+ // Check if LBR is enabled or not
+ //
+ if (g_ArchBasedLastBranchRecord)
+ {
+ xrdmsr(IA32_LBR_CTL, &Ia32LbrCtl.AsUInt);
+
+ if (Ia32LbrCtl.Bits.LBREn)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+ else
+ {
+ xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
+
+ if (DbgCtlMsr & IA32_DEBUGCTL_LBR_FLAG)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+}
+
/**
* @brief Start collecting LBR branches
*
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index 20dc5a3c..15a89331 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -172,6 +172,9 @@ LbrStart(UINT64 FilterOptions);
VOID
LbrFilter(UINT64 FilterOptions);
+BOOLEAN
+LbrCheck();
+
VOID
LbrStop();
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index f45afd95..44d572f2 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -590,7 +590,8 @@ ShowErrorMessage(UINT32 Error)
break;
case DEBUGGER_ERROR_LBR_NOT_SUPPORTED:
- ShowMessages("err, LBR is not supported on this processor (%x)\n",
+ ShowMessages("err, LBR is not supported on this processor, this is likely caused by running inside "
+ "a nested virtualization (VM) environment that masks and removes LBR CPU flags (%x)\n",
Error);
break;
From 1c5f4f3853a077fd0c362ff341f5c71cfe85c068 Mon Sep 17 00:00:00 2001
From: orbisai0security
Date: Sun, 17 May 2026 04:43:55 +0000
Subject: [PATCH 178/323] fix: V-004 security vulnerability
Automated security fix generated by Orbis Security AI
---
hyperdbg/script-eval/code/Functions.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index 046ab531..50300cc3 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -325,6 +325,17 @@ ScriptEngineFunctionMemcpy(UINT64 Destination, UINT64 Source, UINT32 Num, BOOL *
UINT64 PrevReadLen = 0;
BYTE MovingBuffer[DebuggerScriptEngineMemcpyMovingBufferSize] = {0};
+ //
+ // Reject zero-length copies: a Num of 0 would pass address-range
+ // validation vacuously (checking 0 bytes at any mapped page succeeds),
+ // which could be abused as a kernel address-mapping oracle.
+ //
+ if (Num == 0)
+ {
+ *HasError = TRUE;
+ return;
+ }
+
#ifdef SCRIPT_ENGINE_USER_MODE
//
From 1369aa777bd851304401c0c7253d4510a5d5ee93 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 17 May 2026 17:07:59 +0200
Subject: [PATCH 179/323] refactor IOCTL codes
---
hyperdbg/hyperkd/code/driver/Ioctl.c | 1245 ++++++-----------
hyperdbg/include/SDK/headers/Events.h | 8 +-
.../include/SDK/headers/RequestStructures.h | 5 +
hyperdbg/include/SDK/headers/Symbols.h | 2 +
4 files changed, 420 insertions(+), 840 deletions(-)
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index e95cf6c8..4fa7fa55 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -12,6 +12,77 @@
*/
#include "pch.h"
+/**
+ * @brief Validates amd adjusts the parameters of an IOCTL request
+ * @param BufferSize The expected size of the input buffer
+ * @param Irp The IRP representing the IOCTL request
+ * @IrpStack The current stack location of the IRP
+ * @InBuffLength Output parameter to receive the actual input buffer length
+ * @OutBuffLength Output parameter to receive the actual output buffer length
+ *
+ * @return TRUE if the parameters are valid, FALSE otherwise
+ */
+BOOLEAN
+DrvValidateAndAdjustIoctlParameter(UINT32 BufferSize,
+ PVOID * TargetBuffer,
+ PIRP Irp,
+ PIO_STACK_LOCATION IrpStack,
+ ULONG * InBuffLength,
+ ULONG * OutBuffLength)
+{
+ //
+ // First validate the parameters
+ //
+ if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < BufferSize || Irp->AssociatedIrp.SystemBuffer == NULL)
+ {
+ LogError("Err, invalid parameter to IOCTL dispatcher");
+ return FALSE;
+ }
+
+ *InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
+ *OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
+
+ if (!*InBuffLength || !*OutBuffLength)
+ {
+ return FALSE;
+ }
+
+ //
+ // Set the target buffer to the system buffer of the IRP
+ //
+ *TargetBuffer = Irp->AssociatedIrp.SystemBuffer;
+
+ //
+ // Validation was successful
+ //
+ return TRUE;
+}
+
+/**
+ * @brief Adjusts the status and output buffer size for an IOCTL request
+ *
+ * @param ExpectedOutputBufferSize The expected size of the output buffer
+ * @param DoNotChangeInformation Output parameter to indicate whether to change the information field of the IRP's I/O status block
+ * @param Irp The IRP representing the IOCTL request
+ * @param Status Output parameter to receive the status to be set in the IRP's I/O status block
+ *
+ * @return VOID
+ */
+VOID
+DrvAdjustStatusAndSetOutputSize(UINT32 ExpectedOutputBufferSize,
+ BOOLEAN * DoNotChangeInformation,
+ PIRP Irp,
+ NTSTATUS * Status)
+{
+ Irp->IoStatus.Information = ExpectedOutputBufferSize;
+ *Status = STATUS_SUCCESS;
+
+ //
+ // Avoid zeroing it
+ //
+ *DoNotChangeInformation = TRUE;
+}
+
/**
* @brief Driver IOCTL Dispatcher
*
@@ -163,27 +234,21 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
break;
case IOCTL_DEBUGGER_READ_MEMORY:
- //
- // First validate the parameters.
- //
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_READ_MEMORY || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_READ_MEMORY,
+ (PVOID *)&DebuggerReadMemRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- DebuggerReadMemRequest = (PDEBUGGER_READ_MEMORY)Irp->AssociatedIrp.SystemBuffer;
-
if (DebuggerCommandReadMemory(DebuggerReadMemRequest,
((CHAR *)DebuggerReadMemRequest) + SIZEOF_DEBUGGER_READ_MEMORY,
&ReturnSize) == TRUE)
@@ -191,48 +256,34 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Return the header a read bytes
//
- Irp->IoStatus.Information = ReturnSize + SIZEOF_DEBUGGER_READ_MEMORY;
+ DrvAdjustStatusAndSetOutputSize((UINT32)(ReturnSize + SIZEOF_DEBUGGER_READ_MEMORY), &DoNotChangeInformation, Irp, &Status);
}
else
{
//
// Just return the header to the user-mode
//
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_READ_MEMORY;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_READ_MEMORY, &DoNotChangeInformation, Irp, &Status);
}
- Status = STATUS_SUCCESS;
-
- //
- // Avoid zeroing it
- //
- DoNotChangeInformation = TRUE;
-
break;
case IOCTL_DEBUGGER_READ_OR_WRITE_MSR:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_READ_AND_WRITE_ON_MSR || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_READ_AND_WRITE_ON_MSR,
+ (PVOID *)&DebuggerReadOrWriteMsrRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- DebuggerReadOrWriteMsrRequest = (PDEBUGGER_READ_AND_WRITE_ON_MSR)Irp->AssociatedIrp.SystemBuffer;
-
//
// Only the rdmsr needs and output buffer
//
@@ -256,12 +307,10 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
if (Status == STATUS_SUCCESS)
{
- Irp->IoStatus.Information = ReturnSize;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize((UINT32)ReturnSize, &DoNotChangeInformation, Irp, &Status);
}
break;
@@ -269,65 +318,48 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
case IOCTL_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS,
+ (PVOID *)&DebuggerPteRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- DebuggerPteRequest = (PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Both usermode and to send to usermode and the coming buffer are
// at the same place (it's not in vmx-root)
//
ExtensionCommandPte(DebuggerPteRequest, FALSE);
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_DEBUGGER_REGISTER_EVENT:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < sizeof(DEBUGGER_GENERAL_EVENT_DETAIL) || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_GENERAL_EVENT_DETAIL,
+ (PVOID *)&DebuggerNewEventRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- DebuggerNewEventRequest = (PDEBUGGER_GENERAL_EVENT_DETAIL)Irp->AssociatedIrp.SystemBuffer;
-
//
// Both usermode and to send to usermode and the coming buffer are
// at the same place (not coming from the VMX-root mode)
@@ -336,39 +368,29 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
(PDEBUGGER_EVENT_AND_ACTION_RESULT)Irp->AssociatedIrp.SystemBuffer,
FALSE);
- Irp->IoStatus.Information = sizeof(DEBUGGER_EVENT_AND_ACTION_RESULT);
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(sizeof(DEBUGGER_EVENT_AND_ACTION_RESULT), &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_DEBUGGER_ADD_ACTION_TO_EVENT:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < sizeof(DEBUGGER_GENERAL_ACTION) || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_GENERAL_ACTION,
+ (PVOID *)&DebuggerNewActionRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- DebuggerNewActionRequest = (PDEBUGGER_GENERAL_ACTION)Irp->AssociatedIrp.SystemBuffer;
-
//
// Both usermode and to send to usermode and the coming buffer are
// at the same place
@@ -377,39 +399,29 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
(PDEBUGGER_EVENT_AND_ACTION_RESULT)Irp->AssociatedIrp.SystemBuffer,
FALSE);
- Irp->IoStatus.Information = sizeof(DEBUGGER_EVENT_AND_ACTION_RESULT);
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(sizeof(DEBUGGER_EVENT_AND_ACTION_RESULT), &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_DEBUGGER_HIDE_AND_UNHIDE_TO_TRANSPARENT_THE_DEBUGGER:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE,
+ (PVOID *)&DebuggerHideAndUnhideRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- DebuggerHideAndUnhideRequest = (PDEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE)Irp->AssociatedIrp.SystemBuffer;
-
//
// check if it's a !hide or !unhide command
//
@@ -429,41 +441,28 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
}
//
- // Set size
+ // Adjust the status and output size
//
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE;
- Status = STATUS_SUCCESS;
-
- //
- // Avoid zeroing it
- //
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS,
+ (PVOID *)&DebuggerVa2paAndPa2vaRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- DebuggerVa2paAndPa2vaRequest = (PDEBUGGER_VA2PA_AND_PA2VA_COMMANDS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Both usermode and to send to usermode and the coming buffer are
// at the same place (we're not in vmx-root here)
@@ -471,44 +470,28 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
ExtensionCommandVa2paAndPa2va(DebuggerVa2paAndPa2vaRequest, FALSE);
//
- // Configure IRP status
+ // Adjust the status and output size
//
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS;
- Status = STATUS_SUCCESS;
-
- //
- // Avoid zeroing it
- //
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_DEBUGGER_EDIT_MEMORY:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_EDIT_MEMORY || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_EDIT_MEMORY,
+ (PVOID *)&DebuggerEditMemoryRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Cast buffer to understandable buffer
- //
- DebuggerEditMemoryRequest = (PDEBUGGER_EDIT_MEMORY)Irp->AssociatedIrp.SystemBuffer;
-
//
// Here we should validate whether the input parameter is
// valid or in other words whether we received enough space or not
@@ -526,48 +509,28 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
DebuggerCommandEditMemory(DebuggerEditMemoryRequest);
//
- // Configure IRP status
+ // Adjust the status and output size
//
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_EDIT_MEMORY;
- Status = STATUS_SUCCESS;
-
- //
- // Avoid zeroing it
- //
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_EDIT_MEMORY, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_DEBUGGER_SEARCH_MEMORY:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_SEARCH_MEMORY || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- //
- // The OutBuffLength should have at least MaximumSearchResults * sizeof(UINT64)
- // free space to store the results
- //
- if (!InBuffLength || OutBuffLength < MaximumSearchResults * sizeof(UINT64))
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_SEARCH_MEMORY,
+ (PVOID *)&DebuggerSearchMemoryRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Cast buffer to understandable buffer
- //
- DebuggerSearchMemoryRequest = (PDEBUGGER_SEARCH_MEMORY)Irp->AssociatedIrp.SystemBuffer;
-
//
// Here we should validate whether the input parameter is
// valid or in other words whether we received enough space or not
@@ -596,292 +559,195 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
// Configure IRP status, and also we send the results
// buffer, with it's null values (if any)
//
- Irp->IoStatus.Information = MaximumSearchResults * sizeof(UINT64);
- Status = STATUS_SUCCESS;
-
- //
- // Avoid zeroing it
- //
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(MaximumSearchResults * sizeof(UINT64), &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_DEBUGGER_MODIFY_EVENTS:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < sizeof(DEBUGGER_MODIFY_EVENTS) || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_MODIFY_EVENTS,
+ (PVOID *)&DebuggerModifyEventRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- DebuggerModifyEventRequest = (PDEBUGGER_MODIFY_EVENTS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Both usermode and to send to usermode and the coming buffer are
// at the same place
//
DebuggerParseEventsModification(DebuggerModifyEventRequest, FALSE, EnableInstantEventMechanism ? g_KernelDebuggerState : FALSE);
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_MODIFY_EVENTS;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_MODIFY_EVENTS, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_DEBUGGER_FLUSH_LOGGING_BUFFERS:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_FLUSH_LOGGING_BUFFERS || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_FLUSH_LOGGING_BUFFERS,
+ (PVOID *)&DebuggerFlushBuffersRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerFlushBuffersRequest = (PDEBUGGER_FLUSH_LOGGING_BUFFERS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the flush
//
DebuggerCommandFlush(DebuggerFlushBuffersRequest);
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_FLUSH_LOGGING_BUFFERS;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_FLUSH_LOGGING_BUFFERS, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS,
+ (PVOID *)&DebuggerAttachOrDetachToThreadRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerAttachOrDetachToThreadRequest = (PDEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the attach to the target process
//
AttachingTargetProcess(DebuggerAttachOrDetachToThreadRequest);
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_PREPARE_DEBUGGEE:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_PREPARE_DEBUGGEE || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PREPARE_DEBUGGEE,
+ (PVOID *)&DebuggeeRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggeeRequest = (PDEBUGGER_PREPARE_DEBUGGEE)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the action
//
SerialConnectionPrepare(DebuggeeRequest);
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_PREPARE_DEBUGGEE;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREPARE_DEBUGGEE, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_PAUSE_PACKET_RECEIVED:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_PAUSE_PACKET_RECEIVED || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PAUSE_PACKET_RECEIVED,
+ (PVOID *)&DebuggerPauseKernelRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerPauseKernelRequest = (PDEBUGGER_PAUSE_PACKET_RECEIVED)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the action
//
KdHaltSystem(DebuggerPauseKernelRequest);
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_PAUSE_PACKET_RECEIVED;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PAUSE_PACKET_RECEIVED, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_SEND_SIGNAL_EXECUTION_IN_DEBUGGEE_FINISHED:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL,
+ (PVOID *)&DebuggerCommandExecutionFinishedRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerCommandExecutionFinishedRequest = (PDEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the signal operation
//
DebuggerCommandSignalExecutionState(DebuggerCommandExecutionFinishedRequest);
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_SEND_USERMODE_MESSAGES_TO_DEBUGGER:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER,
+ (PVOID *)&DebuggerSendUsermodeMessageRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerSendUsermodeMessageRequest = (PDEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER)Irp->AssociatedIrp.SystemBuffer;
-
//
// Second validation phase
//
@@ -897,43 +763,29 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
DebuggerCommandSendMessage(DebuggerSendUsermodeMessageRequest);
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_SEND_GENERAL_BUFFER_FROM_DEBUGGEE_TO_DEBUGGER:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER,
+ (PVOID *)&DebuggerSendBufferFromDebuggeeToDebuggerRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerSendBufferFromDebuggeeToDebuggerRequest = (PDEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER)Irp->AssociatedIrp.SystemBuffer;
-
//
// Second validation phase
//
@@ -949,253 +801,164 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
DebuggerCommandSendGeneralBufferToDebugger(DebuggerSendBufferFromDebuggeeToDebuggerRequest);
- Irp->IoStatus.Information = SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_PERFORM_KERNEL_SIDE_TESTS:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS,
+ (PVOID *)&DebuggerKernelTestRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerKernelTestRequest = (PDEBUGGER_PERFORM_KERNEL_TESTS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the kernel-side tests
//
TestKernelPerformTests(DebuggerKernelTestRequest);
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_RESERVE_PRE_ALLOCATED_POOLS:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_PREALLOC_COMMAND || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PREALLOC_COMMAND,
+ (PVOID *)&DebuggerReservePreallocPoolRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerReservePreallocPoolRequest = (PDEBUGGER_PREALLOC_COMMAND)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the reservation pools
//
DebuggerCommandReservePreallocatedPools(DebuggerReservePreallocPoolRequest);
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_PREALLOC_COMMAND;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREALLOC_COMMAND, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_PREACTIVATE_FUNCTIONALITY:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_PREACTIVATE_COMMAND || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PREACTIVATE_COMMAND,
+ (PVOID *)&DebuggerPreactivationRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerPreactivationRequest = (PDEBUGGER_PREACTIVATE_COMMAND)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the activation of the functionality
//
DebuggerCommandPreactivateFunctionality(DebuggerPreactivationRequest);
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_PREACTIVATE_COMMAND;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREACTIVATE_COMMAND, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_PERFORM_ACTIONS_ON_APIC:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_APIC_REQUEST || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_APIC_REQUEST,
+ (PVOID *)&DebuggerApicRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
//
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
+ // Adjust the status and output size
//
- DebuggerApicRequest = (PDEBUGGER_APIC_REQUEST)Irp->AssociatedIrp.SystemBuffer;
-
- //
- // Perform the actions relating to the APIC request
- //
- Irp->IoStatus.Information = ExtensionCommandPerformActionsForApicRequests(DebuggerApicRequest);
- Status = STATUS_SUCCESS;
-
- //
- // Avoid zeroing it
- //
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(ExtensionCommandPerformActionsForApicRequests(DebuggerApicRequest), &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_QUERY_IDT_ENTRY:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS ||
- Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS,
+ (PVOID *)&DebuggerQueryIdtRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerQueryIdtRequest = (PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the query of IDT entries (not from vmx-root)
//
ExtensionCommandPerformQueryIdtEntriesRequest(DebuggerQueryIdtRequest, FALSE);
- Irp->IoStatus.Information = SIZEOF_INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_SET_BREAKPOINT_USER_DEBUGGER:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGEE_BP_PACKET ||
- Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_BP_PACKET,
+ (PVOID *)&DebuggerBreakpointRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerBreakpointRequest = (PDEBUGGEE_BP_PACKET)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform setting the breakpoint (for the user mode debugger)
// Switching to the target process memory is needed as we are
@@ -1204,227 +967,150 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
BreakpointAddNew(DebuggerBreakpointRequest, TRUE);
- Irp->IoStatus.Information = SIZEOF_DEBUGGEE_BP_PACKET;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_BP_PACKET, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_PERFORM_SMI_OPERATION:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_SMI_OPERATION_PACKETS ||
- Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_SMI_OPERATION_PACKETS,
+ (PVOID *)&SmiOperationRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- SmiOperationRequest = (PSMI_OPERATION_PACKETS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the SMI operation (it's not from vmx-root)
//
VmFuncSmmPerformSmiOperation(SmiOperationRequest, FALSE);
- Irp->IoStatus.Information = SIZEOF_SMI_OPERATION_PACKETS;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_SMI_OPERATION_PACKETS, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS ||
- Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS,
+ (PVOID *)&HyperTraceLbrOperationRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- HyperTraceLbrOperationRequest = (PHYPERTRACE_LBR_OPERATION_PACKETS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the HyperTrace LBR operation
//
HyperTraceLbrPerformOperation(HyperTraceLbrOperationRequest);
- Irp->IoStatus.Information = SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_PERFORM_HYPERTRACE_LBR_DUMP:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS ||
- Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS,
+ (PVOID *)&HyperTraceLbrdumpRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- HyperTraceLbrdumpRequest = (PHYPERTRACE_LBR_DUMP_PACKETS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the HyperTrace LBR dump operation
//
HyperTraceLbrPerformDump(HyperTraceLbrdumpRequest);
- Irp->IoStatus.Information = SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_PERFORM_HYPERTRACE_PT_OPERATION:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS ||
- Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS,
+ (PVOID *)&HyperTracePtOperationRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- HyperTracePtOperationRequest = (PHYPERTRACE_PT_OPERATION_PACKETS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the HyperTrace PT operation
//
HyperTracePtPerformOperation(HyperTracePtOperationRequest);
- Irp->IoStatus.Information = SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_SEND_USER_DEBUGGER_COMMANDS:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < sizeof(DEBUGGER_UD_COMMAND_PACKET) || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_UD_COMMAND_PACKET,
+ (PVOID *)&DebuggerUdCommandRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerUdCommandRequest = (PDEBUGGER_UD_COMMAND_PACKET)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the dispatching of user debugger command
//
UdDispatchUsermodeCommands(DebuggerUdCommandRequest, InBuffLength, OutBuffLength);
- Irp->IoStatus.Information = OutBuffLength;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
break;
@@ -1448,85 +1134,57 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
AttachingQueryDetailsOfActiveDebuggingThreadsAndProcesses(BufferToStoreThreadsAndProcessesDetails, OutBuffLength);
- Irp->IoStatus.Information = OutBuffLength;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_GET_USER_MODE_MODULE_DETAILS:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < sizeof(USERMODE_LOADED_MODULE_DETAILS) || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_USERMODE_LOADED_MODULE_DETAILS,
+ (PVOID *)&DebuggerUsermodeModulesRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerUsermodeModulesRequest = (PUSERMODE_LOADED_MODULE_DETAILS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Getting the modules details
//
UserAccessGetLoadedModules(DebuggerUsermodeModulesRequest, OutBuffLength);
- Irp->IoStatus.Information = OutBuffLength;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_QUERY_COUNT_OF_ACTIVE_PROCESSES_OR_THREADS:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < sizeof(DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS) || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS,
+ (PVOID *)&DebuggerUsermodeProcessOrThreadQueryRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerUsermodeProcessOrThreadQueryRequest = (PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Getting the count result
//
@@ -1539,43 +1197,29 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
ThreadQueryCount(DebuggerUsermodeProcessOrThreadQueryRequest);
}
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_GET_LIST_OF_THREADS_AND_PROCESSES:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < sizeof(DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS) || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS,
+ (PVOID *)&DebuggerUsermodeProcessOrThreadQueryRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerUsermodeProcessOrThreadQueryRequest = (PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS)Irp->AssociatedIrp.SystemBuffer;
-
//
// Getting the list of processes or threads
//
@@ -1592,256 +1236,181 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
OutBuffLength);
}
- Irp->IoStatus.Information = OutBuffLength;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_QUERY_CURRENT_THREAD:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET,
+ (PVOID *)&GetInformationThreadRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- GetInformationThreadRequest = (PDEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET)Irp->AssociatedIrp.SystemBuffer;
-
//
// Get the information
//
ThreadQueryDetails(GetInformationThreadRequest);
- Irp->IoStatus.Information = SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_QUERY_CURRENT_PROCESS:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET,
+ (PVOID *)&GetInformationProcessRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- GetInformationProcessRequest = (PDEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET)Irp->AssociatedIrp.SystemBuffer;
-
//
// Get the information
//
ProcessQueryDetails(GetInformationProcessRequest);
- Irp->IoStatus.Information = SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_REQUEST_REV_MACHINE_SERVICE:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength || !OutBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST,
+ (PVOID *)&RevServiceRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- RevServiceRequest = (PREVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST)Irp->AssociatedIrp.SystemBuffer;
-
//
// Perform the service request
//
ConfigureInitializeExecTrapOnAllProcessors();
- Irp->IoStatus.Information = SIZEOF_REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_DEBUGGER_BRING_PAGES_IN:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGER_PAGE_IN_REQUEST || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PAGE_IN_REQUEST,
+ (PVOID *)&DebuggerPageinRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- DebuggerPageinRequest = (PDEBUGGER_PAGE_IN_REQUEST)Irp->AssociatedIrp.SystemBuffer;
-
//
// Both usermode and to send to usermode and the coming buffer are
// at the same place (it's in VMI-mode)
//
DebuggerCommandBringPagein(DebuggerPageinRequest);
- Irp->IoStatus.Information = SIZEOF_DEBUGGER_PAGE_IN_REQUEST;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PAGE_IN_REQUEST, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_PCIE_ENDPOINT_ENUM:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET,
+ (PVOID *)&PcitreeRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- PcitreeRequest = (PDEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET)Irp->AssociatedIrp.SystemBuffer;
-
//
// Both usermode and to send to usermode and the coming buffer are
// at the same place (it's in VMI-mode)
//
ExtensionCommandPcitree(PcitreeRequest, FALSE);
- Irp->IoStatus.Information = SIZEOF_DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_PCIDEVINFO_ENUM:
//
- // First validate the parameters.
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!InBuffLength)
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET,
+ (PVOID *)&PcidevinfoRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
{
Status = STATUS_INVALID_PARAMETER;
break;
}
- PcidevinfoRequest = (PDEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET)Irp->AssociatedIrp.SystemBuffer;
-
//
// Both usermode and to send to usermode and the coming buffer are
// at the same place (it's in VMI-mode)
//
ExtensionCommandPcidevinfo(PcidevinfoRequest, FALSE);
- Irp->IoStatus.Information = SIZEOF_DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET;
- Status = STATUS_SUCCESS;
-
//
- // Avoid zeroing it
+ // Adjust the status and output size
//
- DoNotChangeInformation = TRUE;
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET, &DoNotChangeInformation, Irp, &Status);
break;
diff --git a/hyperdbg/include/SDK/headers/Events.h b/hyperdbg/include/SDK/headers/Events.h
index 45ab449e..0af4052a 100644
--- a/hyperdbg/include/SDK/headers/Events.h
+++ b/hyperdbg/include/SDK/headers/Events.h
@@ -199,8 +199,6 @@ typedef enum _DEBUGGER_EVENT_SYSCALL_SYSRET_TYPE
} DEBUGGER_EVENT_SYSCALL_SYSRET_TYPE;
-#define SIZEOF_DEBUGGER_MODIFY_EVENTS sizeof(DEBUGGER_MODIFY_EVENTS)
-
/**
* @brief Type of mode change traps
*
@@ -253,6 +251,8 @@ typedef struct _DEBUGGER_MODIFY_EVENTS
} DEBUGGER_MODIFY_EVENTS, *PDEBUGGER_MODIFY_EVENTS;
+#define SIZEOF_DEBUGGER_MODIFY_EVENTS sizeof(DEBUGGER_MODIFY_EVENTS)
+
/**
* @brief request for performing a short-circuiting event
*
@@ -401,6 +401,8 @@ typedef struct _DEBUGGER_GENERAL_EVENT_DETAIL
} DEBUGGER_GENERAL_EVENT_DETAIL, *PDEBUGGER_GENERAL_EVENT_DETAIL;
+#define SIZEOF_DEBUGGER_GENERAL_EVENT_DETAIL sizeof(DEBUGGER_GENERAL_EVENT_DETAIL)
+
/**
* @brief Each event can have multiple actions
* @details THIS STRUCTURE IS ONLY USED IN USER MODE
@@ -420,6 +422,8 @@ typedef struct _DEBUGGER_GENERAL_ACTION
} DEBUGGER_GENERAL_ACTION, *PDEBUGGER_GENERAL_ACTION;
+#define SIZEOF_DEBUGGER_GENERAL_ACTION sizeof(DEBUGGER_GENERAL_ACTION)
+
/**
* @brief Status of register buffers
*
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 9c35ad51..0628d699 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -767,6 +767,9 @@ typedef struct _DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS
} DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS,
*PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS;
+#define SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS \
+ sizeof(DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS)
+
// ==============================================================================================
/**
@@ -916,6 +919,8 @@ typedef struct _DEBUGGER_UD_COMMAND_PACKET
} DEBUGGER_UD_COMMAND_PACKET, *PDEBUGGER_UD_COMMAND_PACKET;
+#define SIZEOF_DEBUGGER_UD_COMMAND_PACKET sizeof(DEBUGGER_UD_COMMAND_PACKET)
+
// ==============================================================================================
/**
diff --git a/hyperdbg/include/SDK/headers/Symbols.h b/hyperdbg/include/SDK/headers/Symbols.h
index 29c76cc8..960b5e78 100644
--- a/hyperdbg/include/SDK/headers/Symbols.h
+++ b/hyperdbg/include/SDK/headers/Symbols.h
@@ -57,6 +57,8 @@ typedef struct _USERMODE_LOADED_MODULE_DETAILS
} USERMODE_LOADED_MODULE_DETAILS, *PUSERMODE_LOADED_MODULE_DETAILS;
+#define SIZEOF_USERMODE_LOADED_MODULE_DETAILS sizeof(USERMODE_LOADED_MODULE_DETAILS)
+
/**
* @brief Callback type that should be used to add
* list of Addresses to ObjectNames
From 5fb797c20137fd83e7b504d35c21b17f4423589c Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 17 May 2026 20:18:36 +0200
Subject: [PATCH 180/323] fix output buffer IOCTL checks for WRMSR
---
CHANGELOG.md | 10 ++++++---
hyperdbg/hyperkd/code/driver/Ioctl.c | 22 +++++++++----------
.../include/SDK/headers/RequestStructures.h | 16 ++++++++------
.../commands/debugging-commands/wrmsr.cpp | 7 +++---
4 files changed, 30 insertions(+), 25 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 096e64d1..ff9f4cf6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
New release of the HyperDbg Debugger.
### Added
+- First release of the HyperTrace module ([link](https://url.hyperdbg.org/hypertrace))
- HyperTrace now enables/disables VM-entry/VM-exit controls for Load and Save IA32_DEBUGCTL MSR
- Added Legacy LBR support to the HyperTrace module
- Added Architectural LBR support to the HyperTrace module
@@ -15,13 +16,16 @@ New release of the HyperDbg Debugger.
- Added the '!lbrdump' command for dumping saved Last Branch Record (LBR) entries ([link](https://docs.hyperdbg.org/commands/extension-commands/lbrdmp))
- Added **lbr_save()** and **lbr_print()** functions in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr_save))([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr_print))
- Added mock application for compiling SDK for Linux
-- HyperDbg SDK now compiles on Linux (GCC) for both user-mode and kernel-mode
-- VMX instructions are ported to platform-independent files to support Linux
-- All CPU-related intrinsic instructions are ported to platform-independent files to support Linux
- Add '!help' alias for the '.help' command
### Changed
- Fix the problem of not applying the EAX index in the CPUID event extension command ([link](https://docs.hyperdbg.org/commands/extension-commands/cpuid#parameters))
+- Refactoring the IOCTL parameter checks and status routines
+- All basic types are now defined for Linux
+- VMX instructions are ported to platform-independent files to support Linux
+- All CPU-related intrinsic instructions are ported to platform-independent files to support Linux
+- HyperDbg SDK now compiles on Linux (GCC) for both user-mode and kernel-mode
+- Fix the 'wrmsr' command IOCTL checks by receiving output the buffer ([link](https://docs.hyperdbg.org/commands/debugging-commands/wrmsr))
## [0.18.1.0] - 2026-04-09
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index 4fa7fa55..3ba4008a 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -284,18 +284,6 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
break;
}
- //
- // Only the rdmsr needs and output buffer
- //
- if (DebuggerReadOrWriteMsrRequest->ActionType != DEBUGGER_MSR_WRITE)
- {
- if (!OutBuffLength)
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
- }
-
//
// Both usermode and to send to usermode and the coming buffer are
// at the same place
@@ -531,6 +519,16 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
break;
}
+ //
+ // The OutBuffLength should have at least MaximumSearchResults * sizeof(UINT64)
+ // free space to store the results
+ //
+ if (OutBuffLength < MaximumSearchResults * sizeof(UINT64))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
//
// Here we should validate whether the input parameter is
// valid or in other words whether we received enough space or not
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 0628d699..46910c00 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -426,16 +426,18 @@ typedef enum _DEBUGGER_MSR_ACTION_TYPE
*/
typedef struct _DEBUGGER_READ_AND_WRITE_ON_MSR
{
- UINT64 Msr; // It's actually a 32-Bit value but let's not mess with a register
- UINT32 CoreNumber; // specifies the core to execute wrmsr or read the msr
- // (DEBUGGER_READ_AND_WRITE_ON_MSR_APPLY_ALL_CORES mean all
- // the cores)
- DEBUGGER_MSR_ACTION_TYPE
- ActionType; // Detects whether user needs wrmsr or rdmsr
- UINT64 Value;
+ UINT64 Msr; // It's actually a 32-Bit value but let's not mess with a register
+ UINT32 CoreNumber; // specifies the core to execute wrmsr or read the msr
+ // (DEBUGGER_READ_AND_WRITE_ON_MSR_APPLY_ALL_CORES mean all
+ // the cores)
+ DEBUGGER_MSR_ACTION_TYPE ActionType; // Detects whether user needs wrmsr or rdmsr
+ UINT64 Value;
} DEBUGGER_READ_AND_WRITE_ON_MSR, *PDEBUGGER_READ_AND_WRITE_ON_MSR;
+#define SIZEOF_DEBUGGER_READ_AND_WRITE_ON_MSR \
+ sizeof(DEBUGGER_READ_AND_WRITE_ON_MSR)
+
// ==============================================================================================
#define SIZEOF_DEBUGGER_EDIT_MEMORY sizeof(DEBUGGER_EDIT_MEMORY)
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/wrmsr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/wrmsr.cpp
index 1636e830..8f0b576c 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/wrmsr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/wrmsr.cpp
@@ -43,6 +43,7 @@ CommandWrmsr(vector CommandTokens, string Command)
{
BOOL Status;
UINT64 Msr;
+ ULONG ReturnedLength;
DEBUGGER_READ_AND_WRITE_ON_MSR MsrWriteRequest = {0};
BOOL IsNextCoreId = FALSE;
BOOL SetMsr = FALSE;
@@ -157,9 +158,9 @@ CommandWrmsr(vector CommandTokens, string Command)
IOCTL_DEBUGGER_READ_OR_WRITE_MSR, // IO Control Code (IOCTL)
&MsrWriteRequest, // Input Buffer to driver.
SIZEOF_DEBUGGER_READ_AND_WRITE_ON_MSR, // Input buffer length
- NULL, // Output Buffer from driver.
- NULL, // Length of output buffer in bytes.
- NULL, // Bytes placed in buffer.
+ &MsrWriteRequest, // Output Buffer from driver.
+ SIZEOF_DEBUGGER_READ_AND_WRITE_ON_MSR, // Length of output buffer in bytes.
+ &ReturnedLength, // Bytes placed in buffer.
NULL // synchronous call
);
From 59280239e91765eb2cbbf013df4ff6b3fc7796f4 Mon Sep 17 00:00:00 2001
From: Masoud Rahimi Jafari
Date: Tue, 19 May 2026 03:50:26 +0200
Subject: [PATCH 181/323] Added pt mmap comand and function
---
hyperdbg/hypertrace/code/api/PtApi.c | 35 +++
hyperdbg/hypertrace/code/pt/Pt.c | 233 ++++++++++++++++++
hyperdbg/hypertrace/header/api/PtApi.h | 3 +
.../header/globals/GlobalVariables.h | 17 ++
hyperdbg/hypertrace/header/pt/Pt.h | 26 ++
hyperdbg/include/SDK/headers/PtDefinitions.h | 33 +++
.../include/SDK/headers/RequestStructures.h | 36 +++
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 7 +
8 files changed, 390 insertions(+)
diff --git a/hyperdbg/hypertrace/code/api/PtApi.c b/hyperdbg/hypertrace/code/api/PtApi.c
index 7255c6ca..6ee927f4 100644
--- a/hyperdbg/hypertrace/code/api/PtApi.c
+++ b/hyperdbg/hypertrace/code/api/PtApi.c
@@ -438,6 +438,41 @@ HyperTracePtFilter(HYPERTRACE_PT_OPERATION_PACKETS * Req)
return TRUE;
}
+/**
+ * @brief Map every per-CPU PT main output + overflow buffer into the
+ * calling user-mode process. See HYPERTRACE_PT_MMAP_PACKETS for
+ * the full lifetime / single-process contract.
+ */
+BOOLEAN
+HyperTracePtMmap(HYPERTRACE_PT_MMAP_PACKETS * Req)
+{
+ if (Req == NULL)
+ return FALSE;
+
+ Req->NumCpus = 0;
+
+ if (!g_HyperTraceCallbacksInitialized)
+ {
+ Req->KernelStatus = DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED;
+ return FALSE;
+ }
+
+ if (!g_ProcessorTraceEnabled)
+ {
+ Req->KernelStatus = DEBUGGER_ERROR_PT_ALREADY_DISABLED;
+ return FALSE;
+ }
+
+ if (PtMmapAllCpuBuffersToUser(Req->Cpus, PT_MAX_CPUS_FOR_MMAP, &Req->NumCpus) != 0)
+ {
+ Req->KernelStatus = DEBUGGER_ERROR_PT_NOT_SUPPORTED;
+ return FALSE;
+ }
+
+ Req->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ return TRUE;
+}
+
/**
* @brief Perform actions related to HyperTrace PT
*
diff --git a/hyperdbg/hypertrace/code/pt/Pt.c b/hyperdbg/hypertrace/code/pt/Pt.c
index 93de8435..d41b2497 100644
--- a/hyperdbg/hypertrace/code/pt/Pt.c
+++ b/hyperdbg/hypertrace/code/pt/Pt.c
@@ -83,6 +83,139 @@ PtVaToPa(PVOID Va)
return (UINT64)Pa.QuadPart;
}
+//////////////////////////////////////////////////
+// User-mode mmap helpers //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Build an MDL whose PFN list concatenates the main output
+ * buffer and the overflow page, then map the combined region
+ * into the current user process as one virtually contiguous
+ * range.
+ *
+ * Main and overflow come from separate
+ * MmAllocateContiguousMemorySpecifyCache calls so they are each
+ * physically contiguous but not contiguous with each other. By
+ * constructing one MDL whose PFN array is [main pfns | overflow
+ * pfns], MmMapLockedPagesSpecifyCache produces a single user VA
+ * range of MainSize + OverflowSize bytes that the consumer reads
+ * as one stream (main first, overflow second). Pages are
+ * non-paged so MDL_PAGES_LOCKED is enough to satisfy the mapper.
+ *
+ * Wrapped in SEH because MmMapLockedPagesSpecifyCache raises on
+ * quota / VAD failures rather than returning NULL.
+ *
+ * @return INT32 0 on success, -1 on failure (outputs untouched).
+ */
+static INT32
+PtMmapCpuRegionToUser(PVOID MainVa,
+ UINT64 MainPhysical,
+ SIZE_T MainSize,
+ UINT64 OverflowPhysical,
+ SIZE_T OverflowSize,
+ PMDL * OutMdl,
+ PVOID * OutUserVa)
+{
+ SIZE_T TotalSize = MainSize + OverflowSize;
+ ULONG MainPages;
+ ULONG OverflowPages;
+ ULONG i;
+ PFN_NUMBER * Pfns;
+ PFN_NUMBER MainPfnBase;
+ PFN_NUMBER OverflowPfnBase;
+ PMDL Mdl;
+ PVOID UserVa = NULL;
+
+ if (MainVa == NULL || MainSize == 0 || OverflowSize == 0 || TotalSize == 0)
+ return -1;
+
+ //
+ // Sizes must be whole pages — ToPA-backed buffers always are.
+ //
+ if ((MainSize & (PT_PAGE_SIZE - 1)) != 0 || (OverflowSize & (PT_PAGE_SIZE - 1)) != 0)
+ return -1;
+
+ //
+ // IoAllocateMdl sizes the embedded PFN array from the byte range we
+ // pass in. The seed VA only sets the byte-offset within the first
+ // page (0 for our page-aligned contiguous allocations); we overwrite
+ // the PFN list below so it stops describing MainVa past its own end.
+ //
+ Mdl = IoAllocateMdl(MainVa, (ULONG)TotalSize, FALSE, FALSE, NULL);
+ if (Mdl == NULL)
+ return -1;
+
+ MainPages = (ULONG)(MainSize >> PAGE_SHIFT);
+ OverflowPages = (ULONG)(OverflowSize >> PAGE_SHIFT);
+ MainPfnBase = (PFN_NUMBER)(MainPhysical >> PAGE_SHIFT);
+ OverflowPfnBase = (PFN_NUMBER)(OverflowPhysical >> PAGE_SHIFT);
+
+ Pfns = MmGetMdlPfnArray(Mdl);
+ for (i = 0; i < MainPages; i++)
+ Pfns[i] = MainPfnBase + i;
+ for (i = 0; i < OverflowPages; i++)
+ Pfns[MainPages + i] = OverflowPfnBase + i;
+
+ //
+ // Pages are physically present and non-pageable (contiguous memory);
+ // tag the MDL so MmMapLockedPagesSpecifyCache accepts it.
+ //
+ Mdl->MdlFlags |= MDL_PAGES_LOCKED;
+
+ __try
+ {
+ UserVa = MmMapLockedPagesSpecifyCache(
+ Mdl,
+ UserMode,
+ MmCached,
+ NULL,
+ FALSE,
+ NormalPagePriority);
+ }
+ __except (EXCEPTION_EXECUTE_HANDLER)
+ {
+ UserVa = NULL;
+ }
+
+ if (UserVa == NULL)
+ {
+ IoFreeMdl(Mdl);
+ return -1;
+ }
+
+ *OutMdl = Mdl;
+ *OutUserVa = UserVa;
+ return 0;
+}
+
+/**
+ * @brief Tear down the combined user mapping produced by
+ * PtMmapCpuRegionToUser. Caller must be in the mapping process;
+ * see the cooperative single-process contract.
+ */
+static VOID
+PtUnmapCpuRegionFromUser(PMDL Mdl, PVOID UserVa)
+{
+ if (UserVa != NULL && Mdl != NULL)
+ {
+ __try
+ {
+ MmUnmapLockedPages(UserVa, Mdl);
+ }
+ __except (EXCEPTION_EXECUTE_HANDLER)
+ {
+ //
+ // Mapping process may have already exited.
+ //
+ }
+ }
+
+ if (Mdl != NULL)
+ {
+ IoFreeMdl(Mdl);
+ }
+}
+
//////////////////////////////////////////////////
// Engine routines //
//////////////////////////////////////////////////
@@ -960,6 +1093,13 @@ PtFreeAllCpuBuffers()
if (g_PtStateList == NULL)
return;
+ //
+ // Drop any live user mappings before the underlying contiguous
+ // memory goes away. Must run in the same process that called the
+ // mmap IOCTL — see HYPERTRACE_PT_MMAP_PACKETS for the contract.
+ //
+ PtUnmapAllCpuBuffersFromUser();
+
ProcessorsCount = KeQueryActiveProcessorCount(0);
for (i = 0; i < ProcessorsCount; i++)
@@ -968,6 +1108,99 @@ PtFreeAllCpuBuffers()
}
}
+/**
+ * @brief Map every per-CPU PT main output buffer and 4 KB overflow page
+ * into the current user process as a single virtually contiguous
+ * region per CPU, and fill OutDescs[i] with the base UserVa and
+ * the total Size (main + overflow) for that CPU.
+ *
+ * PT buffers must already exist (PtAllocateAllCpuBuffers must
+ * have run, i.e. PT is enabled). Idempotent within an enable
+ * cycle: a second call returns the already-cached mappings. On
+ * any per-CPU failure the partial work is rolled back and the
+ * function returns -1.
+ *
+ * @return INT32 0 on success, -1 on failure.
+ */
+INT32
+PtMmapAllCpuBuffersToUser(PT_USER_BUFFER_DESC * OutDescs, UINT32 MaxDescs, UINT32 * OutNumCpus)
+{
+ UINT32 ProcessorsCount;
+ UINT32 i;
+
+ if (OutDescs == NULL || OutNumCpus == NULL || g_PtStateList == NULL)
+ return -1;
+
+ ProcessorsCount = KeQueryActiveProcessorCount(0);
+ if (ProcessorsCount == 0 || ProcessorsCount > MaxDescs || ProcessorsCount > PT_MAX_CPUS_FOR_MMAP)
+ return -1;
+
+ if (!g_PtUserMappingsActive)
+ {
+ for (i = 0; i < ProcessorsCount; i++)
+ {
+ PT_PER_CPU * Cpu = &g_PtStateList[i];
+
+ if (Cpu->Buffer.OutputVa == NULL || Cpu->Buffer.OverflowVa == NULL)
+ {
+ PtUnmapAllCpuBuffersFromUser();
+ return -1;
+ }
+
+ if (PtMmapCpuRegionToUser(Cpu->Buffer.OutputVa,
+ Cpu->Buffer.OutputPhysical,
+ (SIZE_T)Cpu->Buffer.OutputSize,
+ Cpu->Buffer.OverflowPhysical,
+ (SIZE_T)PT_OVERFLOW_SIZE,
+ &g_PtUserMappings[i].Mdl,
+ &g_PtUserMappings[i].UserVa) != 0)
+ {
+ PtUnmapAllCpuBuffersFromUser();
+ return -1;
+ }
+ }
+
+ g_PtUserMappingsActive = TRUE;
+ }
+
+ for (i = 0; i < ProcessorsCount; i++)
+ {
+ OutDescs[i].CpuId = i;
+ OutDescs[i].Reserved = 0;
+ OutDescs[i].UserVa = (UINT64)(ULONG_PTR)g_PtUserMappings[i].UserVa;
+ OutDescs[i].Size = g_PtStateList[i].Buffer.OutputSize + PT_OVERFLOW_SIZE;
+ }
+
+ *OutNumCpus = ProcessorsCount;
+ return 0;
+}
+
+/**
+ * @brief Release every user mapping created by PtMmapAllCpuBuffersToUser.
+ * Called by PtFreeAllCpuBuffers (i.e. on PT disable / flush) so
+ * user VAs stop being usable before the backing memory is freed.
+ * Also used as a rollback path on partial mmap failure.
+ *
+ * Always walks the full table (PtUnmapCpuRegionFromUser is
+ * NULL-safe) so rollback after a half-finished mapping still
+ * cleans up the CPUs that were mapped before the failure.
+ */
+VOID
+PtUnmapAllCpuBuffersFromUser()
+{
+ UINT32 i;
+
+ for (i = 0; i < PT_MAX_CPUS_FOR_MMAP; i++)
+ {
+ PtUnmapCpuRegionFromUser(g_PtUserMappings[i].Mdl,
+ g_PtUserMappings[i].UserVa);
+ g_PtUserMappings[i].Mdl = NULL;
+ g_PtUserMappings[i].UserVa = NULL;
+ }
+
+ g_PtUserMappingsActive = FALSE;
+}
+
/**
* @brief Start PT tracing on the CURRENT CPU. Buffers must already be
* allocated by PtAllocateAllCpuBuffers (called at PASSIVE_LEVEL).
diff --git a/hyperdbg/hypertrace/header/api/PtApi.h b/hyperdbg/hypertrace/header/api/PtApi.h
index e49cfaf9..aef65a29 100644
--- a/hyperdbg/hypertrace/header/api/PtApi.h
+++ b/hyperdbg/hypertrace/header/api/PtApi.h
@@ -28,3 +28,6 @@ HyperTracePtFlush(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
BOOLEAN
HyperTracePtFilter(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
+
+BOOLEAN
+HyperTracePtMmap(HYPERTRACE_PT_MMAP_PACKETS * Req);
diff --git a/hyperdbg/hypertrace/header/globals/GlobalVariables.h b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
index 5c8669ca..1830b397 100644
--- a/hyperdbg/hypertrace/header/globals/GlobalVariables.h
+++ b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
@@ -57,3 +57,20 @@ LBR_STACK_ENTRY * g_LbrStateList;
* Sized to KeQueryActiveProcessorCount(0) at hypertrace init.
*/
PT_PER_CPU * g_PtStateList;
+
+/**
+ * @brief Per-CPU MDL + user-mode VA for the PT mmap surface (main
+ * output buffer concatenated with the 4 KB overflow page in a
+ * single contiguous user mapping). Populated by
+ * PtMmapAllCpuBuffersToUser, torn down by
+ * PtUnmapAllCpuBuffersFromUser. The user VAs are only valid in
+ * the address space of the process that called the mmap IOCTL —
+ * see HYPERTRACE_PT_MMAP_PACKETS for the contract.
+ */
+PT_USER_MAPPING g_PtUserMappings[PT_MAX_CPUS_FOR_MMAP];
+
+/**
+ * @brief Set while g_PtUserMappings holds live user mappings; cleared
+ * by PtUnmapAllCpuBuffersFromUser.
+ */
+BOOLEAN g_PtUserMappingsActive;
diff --git a/hyperdbg/hypertrace/header/pt/Pt.h b/hyperdbg/hypertrace/header/pt/Pt.h
index 283cae2d..b7119e9b 100644
--- a/hyperdbg/hypertrace/header/pt/Pt.h
+++ b/hyperdbg/hypertrace/header/pt/Pt.h
@@ -48,6 +48,21 @@ typedef struct _PT_FILTER_OPTIONS
} PT_FILTER_OPTIONS, *PPT_FILTER_OPTIONS;
+/**
+ * @brief Per-CPU bookkeeping for the user-mode mmap surface.
+ *
+ * One MDL + user VA per CPU describes the main output buffer
+ * immediately followed by the 4 KB overflow page as a single
+ * virtually contiguous region in the mapping process. Lives in
+ * g_PtUserMappings; lifetime tied to the PT enable cycle.
+ */
+typedef struct _PT_USER_MAPPING
+{
+ PMDL Mdl;
+ PVOID UserVa;
+
+} PT_USER_MAPPING, *PPT_USER_MAPPING;
+
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
@@ -97,6 +112,17 @@ PtAllocateAllCpuBuffers();
VOID
PtFreeAllCpuBuffers();
+//
+// User-mode mmap surface: map every per-CPU main output + overflow
+// buffer into the calling user process. Idempotent within an enable
+// cycle; torn down by PtFreeAllCpuBuffers (i.e. PT disable / flush).
+//
+INT32
+PtMmapAllCpuBuffersToUser(PT_USER_BUFFER_DESC * OutDescs, UINT32 MaxDescs, UINT32 * OutNumCpus);
+
+VOID
+PtUnmapAllCpuBuffersFromUser();
+
//
// Engine routines (operate on a specific PT_PER_CPU instance)
//
diff --git a/hyperdbg/include/SDK/headers/PtDefinitions.h b/hyperdbg/include/SDK/headers/PtDefinitions.h
index 7692d824..ee02d613 100644
--- a/hyperdbg/include/SDK/headers/PtDefinitions.h
+++ b/hyperdbg/include/SDK/headers/PtDefinitions.h
@@ -52,6 +52,13 @@
#define PT_OVERFLOW_SIZE PT_PAGE_SIZE /* 4 KB overflow landing zone */
#define PT_MAX_ADDR_RANGES 4
+//
+// Maximum CPUs that the PT user-mode mmap surface can describe in a
+// single request. Sized to fit one HYPERTRACE_PT_MMAP_PACKETS within a
+// typical IOCTL buffer and to cover realistic host topologies.
+//
+#define PT_MAX_CPUS_FOR_MMAP 64
+
//
// ToPA entry Size field encoding: value N = 4KB * 2^N
//
@@ -335,3 +342,29 @@ typedef struct _PT_OUTPUT_BUFFER
UINT64 WriteOffset; /* Next write position; valid data is [0..WriteOffset) */
} PT_OUTPUT_BUFFER, *PPT_OUTPUT_BUFFER;
+
+//////////////////////////////////////////////////
+// User-mode mmap descriptor //
+//////////////////////////////////////////////////
+
+/**
+ * @brief One per-CPU descriptor returned by the PT mmap surface.
+ *
+ * The main output buffer and the 4 KB overflow page are stitched
+ * into a single virtually contiguous region in the calling user
+ * process — main first, then overflow, matching the order PT
+ * writes them on a ToPA PMI. Consumers read the whole stream
+ * as Size bytes starting at UserVa.
+ *
+ * UserVa is valid only in the address space of the process that
+ * issued the mmap IOCTL, and only until PT is disabled / flushed
+ * (at which point the underlying kernel buffers are torn down).
+ */
+typedef struct _PT_USER_BUFFER_DESC
+{
+ UINT32 CpuId;
+ UINT32 Reserved;
+ UINT64 UserVa; /* base of the combined main + overflow mapping */
+ UINT64 Size; /* total bytes in the mapping (main + overflow) */
+
+} PT_USER_BUFFER_DESC, *PPT_USER_BUFFER_DESC;
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 2802ea08..4ab8ed7a 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1325,6 +1325,42 @@ typedef struct _HYPERTRACE_PT_OPERATION_PACKETS
// ==============================================================================================
+/**
+ * @brief Result packet for the HyperTrace PT mmap surface.
+ *
+ * On success KernelStatus is DEBUGGER_OPERATION_WAS_SUCCESSFUL,
+ * NumCpus gives the number of CPUs that were mapped, and
+ * Cpus[0..NumCpus) hand back a single { UserVa, Size } per CPU.
+ * Each Size covers the main output buffer immediately followed
+ * by the 4 KB overflow page as one contiguous byte stream.
+ *
+ * Mapping contract (cooperative single-process):
+ * - The IOCTL maps into the address space of the process that
+ * calls DeviceIoControl. The returned user VAs are not
+ * portable across processes.
+ * - Mapping is tied to the PT enable cycle. PT disable / flush
+ * tears the mapping down; the caller must not touch the
+ * user VAs afterwards.
+ * - Calling the IOCTL twice within the same enable cycle
+ * returns the existing mapping (idempotent).
+ */
+typedef struct _HYPERTRACE_PT_MMAP_PACKETS
+{
+ UINT32 KernelStatus;
+ UINT32 NumCpus;
+ PT_USER_BUFFER_DESC Cpus[PT_MAX_CPUS_FOR_MMAP];
+
+} HYPERTRACE_PT_MMAP_PACKETS, *PHYPERTRACE_PT_MMAP_PACKETS;
+
+/**
+ * @brief Debugger size of HYPERTRACE_PT_MMAP_PACKETS
+ *
+ */
+#define SIZEOF_HYPERTRACE_PT_MMAP_PACKETS \
+ sizeof(HYPERTRACE_PT_MMAP_PACKETS)
+
+// ==============================================================================================
+
/**
* @brief Maximum number of IDT entries
*
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 5d1979e7..9c55abc8 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -81,3 +81,10 @@ HyperTracePtFilter(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
//
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTracePtPerformOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
+
+//
+// Map every per-CPU PT main output + overflow buffer into the calling
+// user process. See HYPERTRACE_PT_MMAP_PACKETS for the lifetime contract.
+//
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTracePtMmap(HYPERTRACE_PT_MMAP_PACKETS * Req);
From 434aed98d0a570546b505501e024339589e09e22 Mon Sep 17 00:00:00 2001
From: Masoud Rahimi Jafari
Date: Tue, 19 May 2026 05:13:22 +0200
Subject: [PATCH 182/323] Added pt pause, resume and size commands
---
hyperdbg/hypertrace/code/api/PtApi.c | 105 ++++++++++++++++--
.../hypertrace/code/broadcast/Broadcast.c | 30 ++++-
.../hypertrace/code/broadcast/DpcRoutines.c | 45 +++++++-
hyperdbg/hypertrace/code/pt/Pt.c | 79 +++++++++----
hyperdbg/hypertrace/header/api/PtApi.h | 8 +-
.../hypertrace/header/broadcast/Broadcast.h | 8 +-
.../hypertrace/header/broadcast/DpcRoutines.h | 8 +-
hyperdbg/hypertrace/header/pt/Pt.h | 8 +-
hyperdbg/include/SDK/HyperDbgSdk.h | 7 +-
.../include/SDK/headers/RequestStructures.h | 17 ++-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 8 +-
.../commands/extension-commands/pt.cpp | 30 ++++-
12 files changed, 302 insertions(+), 51 deletions(-)
diff --git a/hyperdbg/hypertrace/code/api/PtApi.c b/hyperdbg/hypertrace/code/api/PtApi.c
index 6ee927f4..5cce9b80 100644
--- a/hyperdbg/hypertrace/code/api/PtApi.c
+++ b/hyperdbg/hypertrace/code/api/PtApi.c
@@ -195,18 +195,17 @@ HyperTracePtDisable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest)
}
/**
- * @brief Save PT trace state on all cores
+ * @brief Pause PT tracing on every core. Buffers stay allocated and the
+ * per-CPU CTL is preserved, so HyperTracePtResume can restart the
+ * trace exactly where it stopped.
*
* @param HyperTraceOperationRequest
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTracePtSave(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest)
+HyperTracePtPause(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest)
{
- //
- // PT must be enabled first
- //
if (!g_ProcessorTraceEnabled)
{
if (HyperTraceOperationRequest != NULL)
@@ -216,9 +215,7 @@ HyperTracePtSave(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest)
return FALSE;
}
- LogInfo("Saving PT state...\n");
-
- BroadcastSavePtOnAllCores();
+ BroadcastPausePtOnAllCores();
if (HyperTraceOperationRequest != NULL)
{
@@ -228,6 +225,76 @@ HyperTracePtSave(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest)
return TRUE;
}
+/**
+ * @brief Resume PT tracing on every core after a prior HyperTracePtPause.
+ *
+ * @param HyperTraceOperationRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTracePtResume(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest)
+{
+ if (!g_ProcessorTraceEnabled)
+ {
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_ALREADY_DISABLED;
+ }
+ return FALSE;
+ }
+
+ BroadcastResumePtOnAllCores();
+
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ }
+
+ return TRUE;
+}
+
+/**
+ * @brief Snapshot the current PT output position on every core and write
+ * the per-CPU byte counts into HyperTraceOperationRequest->BytesPerCpu.
+ * The returned counts are the decode window — bytes [0, BytesPerCpu[i])
+ * in CPU i's user mapping currently hold valid trace data.
+ *
+ * @param HyperTraceOperationRequest
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTracePtSize(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest)
+{
+ UINT32 ProcessorsCount;
+
+ if (!g_ProcessorTraceEnabled)
+ {
+ if (HyperTraceOperationRequest != NULL)
+ {
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_ERROR_PT_ALREADY_DISABLED;
+ }
+ return FALSE;
+ }
+
+ if (HyperTraceOperationRequest == NULL)
+ return FALSE;
+
+ ProcessorsCount = KeQueryActiveProcessorCount(0);
+ if (ProcessorsCount > PT_MAX_CPUS_FOR_MMAP)
+ ProcessorsCount = PT_MAX_CPUS_FOR_MMAP;
+
+ RtlZeroMemory(HyperTraceOperationRequest->BytesPerCpu,
+ sizeof(HyperTraceOperationRequest->BytesPerCpu));
+
+ BroadcastSizePtOnAllCores(HyperTraceOperationRequest->BytesPerCpu);
+
+ HyperTraceOperationRequest->NumCpus = ProcessorsCount;
+ HyperTraceOperationRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ return TRUE;
+}
+
/**
* @brief Dump PT trace state for HyperTrace
*
@@ -515,11 +582,27 @@ HyperTracePtPerformOperation(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationReques
break;
- case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SAVE:
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_PAUSE:
- LogInfo("HyperTrace: Saving PT tracing...\n");
+ LogInfo("HyperTrace: Pausing PT tracing...\n");
- HyperTracePtSave(PtOperationRequest);
+ HyperTracePtPause(PtOperationRequest);
+
+ break;
+
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_RESUME:
+
+ LogInfo("HyperTrace: Resuming PT tracing...\n");
+
+ HyperTracePtResume(PtOperationRequest);
+
+ break;
+
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SIZE:
+
+ LogInfo("HyperTrace: Snapshotting PT buffer sizes...\n");
+
+ HyperTracePtSize(PtOperationRequest);
break;
diff --git a/hyperdbg/hypertrace/code/broadcast/Broadcast.c b/hyperdbg/hypertrace/code/broadcast/Broadcast.c
index 85cf2d36..6bd84df5 100644
--- a/hyperdbg/hypertrace/code/broadcast/Broadcast.c
+++ b/hyperdbg/hypertrace/code/broadcast/Broadcast.c
@@ -90,14 +90,38 @@ BroadcastDisablePtOnAllCores()
}
/**
- * @brief Routines to save PT state on all cores
+ * @brief Routines to pause PT tracing on all cores
*
* @return VOID
*/
VOID
-BroadcastSavePtOnAllCores()
+BroadcastPausePtOnAllCores()
{
- KeGenericCallDpc(DpcRoutineSavePt, NULL);
+ KeGenericCallDpc(DpcRoutinePausePt, NULL);
+}
+
+/**
+ * @brief Routines to resume PT tracing on all cores
+ *
+ * @return VOID
+ */
+VOID
+BroadcastResumePtOnAllCores()
+{
+ KeGenericCallDpc(DpcRoutineResumePt, NULL);
+}
+
+/**
+ * @brief Routines to snapshot per-CPU PT output positions. The DPC
+ * writes its own core's byte count into Sizes[CoreId]; the
+ * caller's UINT64 array must hold at least one slot per CPU.
+ *
+ * @return VOID
+ */
+VOID
+BroadcastSizePtOnAllCores(UINT64 * Sizes)
+{
+ KeGenericCallDpc(DpcRoutineSizePt, (PVOID)Sizes);
}
/**
diff --git a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
index bee85fb1..f9bd9ec8 100644
--- a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
@@ -216,15 +216,54 @@ DpcRoutineDisablePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
}
/**
- * @brief Broadcast saving PT state
+ * @brief Broadcast pausing PT
*/
BOOLEAN
-DpcRoutineSavePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+DpcRoutinePausePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
{
UNREFERENCED_PARAMETER(Dpc);
UNREFERENCED_PARAMETER(DeferredContext);
- PtSave();
+ PtPause();
+
+ KeSignalCallDpcSynchronize(SystemArgument2);
+ KeSignalCallDpcDone(SystemArgument1);
+ return TRUE;
+}
+
+/**
+ * @brief Broadcast resuming PT
+ */
+BOOLEAN
+DpcRoutineResumePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ UNREFERENCED_PARAMETER(Dpc);
+ UNREFERENCED_PARAMETER(DeferredContext);
+
+ PtResume();
+
+ KeSignalCallDpcSynchronize(SystemArgument2);
+ KeSignalCallDpcDone(SystemArgument1);
+ return TRUE;
+}
+
+/**
+ * @brief Broadcast snapshotting per-CPU PT output position.
+ *
+ * DeferredContext is a UINT64 array (one slot per active CPU);
+ * each per-core DPC writes its own core's byte count and never
+ * touches another slot, so no synchronisation is required.
+ */
+BOOLEAN
+DpcRoutineSizePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+ UINT64 * Sizes = (UINT64 *)DeferredContext;
+ UINT32 Core = KeGetCurrentProcessorNumberEx(NULL);
+
+ UNREFERENCED_PARAMETER(Dpc);
+
+ if (Sizes != NULL && Core < PT_MAX_CPUS_FOR_MMAP)
+ Sizes[Core] = PtSize();
KeSignalCallDpcSynchronize(SystemArgument2);
KeSignalCallDpcDone(SystemArgument1);
diff --git a/hyperdbg/hypertrace/code/pt/Pt.c b/hyperdbg/hypertrace/code/pt/Pt.c
index d41b2497..17515028 100644
--- a/hyperdbg/hypertrace/code/pt/Pt.c
+++ b/hyperdbg/hypertrace/code/pt/Pt.c
@@ -5,8 +5,9 @@
* @details Programs Intel PT MSRs and manages per-CPU ToPA / output buffers.
* The engine half (PtEngine*) deals with a single PT_PER_CPU at a
* time and is OS-agnostic. The HyperDbg wrappers (PtCheck, PtStart,
- * PtStop, PtSave, PtDump, PtFlush) operate on the global per-CPU
- * state list (g_PtStateList) and mirror the LBR API surface.
+ * PtStop, PtPause, PtResume, PtSize, PtDump, PtFlush) operate on the
+ * global per-CPU state list (g_PtStateList) and mirror the LBR API
+ * surface.
* @version 0.19
* @date 2026-04-29
*
@@ -1248,7 +1249,7 @@ PtStart()
/**
* @brief Stop PT tracing on the CURRENT CPU.
* Trace data accumulated in the per-CPU output buffer is left in
- * place; PtSave / PtDump can read it later.
+ * place; PtSize / PtDump can read it later.
*/
VOID
PtStop()
@@ -1268,21 +1269,14 @@ PtStop()
}
/**
- * @brief Snapshot the current bytes-captured counter for the CURRENT CPU
- * without disturbing tracing state. PT data still resides in the
- * per-CPU output buffer; nothing is copied out.
- *
- * Mirrors LbrSave.
+ * @brief Pause PT tracing on the CURRENT CPU. Buffer state is preserved
+ * so a subsequent PtResume picks up where this left off.
*/
VOID
-PtSave()
+PtPause()
{
- UINT32 CurrentCore;
- PT_PER_CPU * Cpu;
- PT_OUTPUT_MASK_PTRS_REGISTER Mask;
- UINT32 TopaIndex;
- UINT32 BytesInEntry;
- UINT64 Total;
+ UINT32 CurrentCore;
+ PT_PER_CPU * Cpu;
if (g_PtStateList == NULL)
return;
@@ -1290,9 +1284,56 @@ PtSave()
CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
Cpu = &g_PtStateList[CurrentCore];
- if (Cpu->State != PT_STATE_TRACING && Cpu->State != PT_STATE_PAUSED && Cpu->State != PT_STATE_STOPPED)
+ LogInfo("PT: pausing trace on core %u\n", CurrentCore);
+
+ PtEnginePause(Cpu);
+}
+
+/**
+ * @brief Resume PT tracing on the CURRENT CPU after a prior PtPause.
+ */
+VOID
+PtResume()
+{
+ UINT32 CurrentCore;
+ PT_PER_CPU * Cpu;
+
+ if (g_PtStateList == NULL)
return;
+ CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+ Cpu = &g_PtStateList[CurrentCore];
+
+ LogInfo("PT: resuming trace on core %u\n", CurrentCore);
+
+ PtEngineResume(Cpu);
+}
+
+/**
+ * @brief Snapshot the current PT output position on the CURRENT CPU
+ * without disturbing tracing state. The returned value is the
+ * number of bytes of valid trace data sitting in this CPU's
+ * main + overflow buffer, i.e. the offset a decoder should stop
+ * at when reading from the user mapping.
+ */
+UINT64
+PtSize()
+{
+ UINT32 CurrentCore;
+ PT_PER_CPU * Cpu;
+ PT_OUTPUT_MASK_PTRS_REGISTER Mask;
+ UINT32 TopaIndex;
+ UINT32 BytesInEntry;
+
+ if (g_PtStateList == NULL)
+ return 0;
+
+ CurrentCore = KeGetCurrentProcessorNumberEx(NULL);
+ Cpu = &g_PtStateList[CurrentCore];
+
+ if (Cpu->State != PT_STATE_TRACING && Cpu->State != PT_STATE_PAUSED && Cpu->State != PT_STATE_STOPPED)
+ return 0;
+
//
// Read MASK_PTRS without touching MSRs that would disturb tracing.
// For an active trace this gives the live byte count; for stopped
@@ -1303,11 +1344,9 @@ PtSave()
BytesInEntry = (UINT32)Mask.OutputOffset;
if (TopaIndex == 0)
- Total = BytesInEntry;
- else
- Total = Cpu->Buffer.OutputSize + BytesInEntry;
+ return BytesInEntry;
- Cpu->TotalBytesCaptured += Total;
+ return Cpu->Buffer.OutputSize + BytesInEntry;
}
/**
diff --git a/hyperdbg/hypertrace/header/api/PtApi.h b/hyperdbg/hypertrace/header/api/PtApi.h
index aef65a29..daec9aa0 100644
--- a/hyperdbg/hypertrace/header/api/PtApi.h
+++ b/hyperdbg/hypertrace/header/api/PtApi.h
@@ -18,7 +18,13 @@ BOOLEAN
HyperTracePtEnable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
BOOLEAN
-HyperTracePtSave(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
+HyperTracePtPause(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
+
+BOOLEAN
+HyperTracePtResume(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
+
+BOOLEAN
+HyperTracePtSize(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
BOOLEAN
HyperTracePtDump(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
diff --git a/hyperdbg/hypertrace/header/broadcast/Broadcast.h b/hyperdbg/hypertrace/header/broadcast/Broadcast.h
index 1889163f..bde1c7a1 100644
--- a/hyperdbg/hypertrace/header/broadcast/Broadcast.h
+++ b/hyperdbg/hypertrace/header/broadcast/Broadcast.h
@@ -35,7 +35,13 @@ VOID
BroadcastDisablePtOnAllCores();
VOID
-BroadcastSavePtOnAllCores();
+BroadcastPausePtOnAllCores();
+
+VOID
+BroadcastResumePtOnAllCores();
+
+VOID
+BroadcastSizePtOnAllCores(UINT64 * Sizes);
VOID
BroadcastDumpPtOnAllCores();
diff --git a/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h b/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
index ebfe3732..da4c94b5 100644
--- a/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
+++ b/hyperdbg/hypertrace/header/broadcast/DpcRoutines.h
@@ -35,7 +35,13 @@ BOOLEAN
DpcRoutineDisablePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
BOOLEAN
-DpcRoutineSavePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+DpcRoutinePausePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+
+BOOLEAN
+DpcRoutineResumePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+
+BOOLEAN
+DpcRoutineSizePt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
BOOLEAN
DpcRoutineDumpPt(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
diff --git a/hyperdbg/hypertrace/header/pt/Pt.h b/hyperdbg/hypertrace/header/pt/Pt.h
index b7119e9b..8d059697 100644
--- a/hyperdbg/hypertrace/header/pt/Pt.h
+++ b/hyperdbg/hypertrace/header/pt/Pt.h
@@ -81,7 +81,13 @@ VOID
PtStop();
VOID
-PtSave();
+PtPause();
+
+VOID
+PtResume();
+
+UINT64
+PtSize();
VOID
PtDump();
diff --git a/hyperdbg/include/SDK/HyperDbgSdk.h b/hyperdbg/include/SDK/HyperDbgSdk.h
index 2ee39895..fea300c4 100644
--- a/hyperdbg/include/SDK/HyperDbgSdk.h
+++ b/hyperdbg/include/SDK/HyperDbgSdk.h
@@ -7,9 +7,6 @@
#include "SDK/headers/DataTypes.h"
#include "SDK/headers/Ioctls.h"
#include "SDK/headers/Events.h"
-#include "SDK/headers/RequestStructures.h"
-#include "SDK/headers/Symbols.h"
-#include "SDK/headers/HardwareDebugger.h"
//
// Devices
@@ -26,6 +23,10 @@
//
#include "SDK/headers/PtDefinitions.h"
+#include "SDK/headers/RequestStructures.h"
+#include "SDK/headers/Symbols.h"
+#include "SDK/headers/HardwareDebugger.h"
+
//
// Asserts
//
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 4ab8ed7a..fe44208a 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1281,9 +1281,12 @@ typedef enum _HYPERTRACE_PT_OPERATION_REQUEST_TYPE
{
HYPERTRACE_PT_OPERATION_REQUEST_TYPE_ENABLE,
HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE,
- HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SAVE,
+ HYPERTRACE_PT_OPERATION_REQUEST_TYPE_PAUSE,
+ HYPERTRACE_PT_OPERATION_REQUEST_TYPE_RESUME,
+ HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SIZE,
HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DUMP,
HYPERTRACE_PT_OPERATION_REQUEST_TYPE_FLUSH,
+ HYPERTRACE_PT_OPERATION_REQUEST_TYPE_FILTER,
} HYPERTRACE_PT_OPERATION_REQUEST_TYPE;
@@ -1297,6 +1300,11 @@ typedef enum _HYPERTRACE_PT_OPERATION_REQUEST_TYPE
* BufferSize must be a power of two multiple of 4 KB (4KB ... 128MB).
* Pass 0 to keep the existing per-CPU value (default 2 MB on first
* enable).
+ *
+ * For SIZE operations the kernel fills NumCpus and BytesPerCpu[]
+ * with each CPU's current PT output position, i.e. how many bytes
+ * of valid trace data are currently sitting in that CPU's main +
+ * overflow buffer; the rest of the packet is unused on output.
*/
typedef struct _HYPERTRACE_PT_OPERATION_PACKETS
{
@@ -1314,6 +1322,13 @@ typedef struct _HYPERTRACE_PT_OPERATION_PACKETS
UINT32 Reserved; /* Padding to keep the array 8-aligned */
PT_ADDR_RANGE AddrRanges[PT_MAX_ADDR_RANGES];
+ //
+ // SIZE output: per-CPU bytes-written snapshot
+ //
+ UINT32 NumCpus; /* CPUs populated in BytesPerCpu */
+ UINT32 Reserved2; /* Padding to 8-align the array */
+ UINT64 BytesPerCpu[PT_MAX_CPUS_FOR_MMAP];
+
} HYPERTRACE_PT_OPERATION_PACKETS, *PHYPERTRACE_PT_OPERATION_PACKETS;
/**
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 9c55abc8..577ecf74 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -65,7 +65,13 @@ IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTracePtDisable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTracePtSave(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
+HyperTracePtPause(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
+
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTracePtResume(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
+
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTracePtSize(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTracePtDump(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp
index 8e988cc1..5c5d6d9f 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp
@@ -33,7 +33,9 @@ CommandPtHelp()
ShowMessages("\n");
ShowMessages("\t\te.g : !pt enable\n");
ShowMessages("\t\te.g : !pt disable\n");
- ShowMessages("\t\te.g : !pt save\n");
+ ShowMessages("\t\te.g : !pt pause\n");
+ ShowMessages("\t\te.g : !pt resume\n");
+ ShowMessages("\t\te.g : !pt size\n");
ShowMessages("\t\te.g : !pt dump\n");
ShowMessages("\t\te.g : !pt flush\n");
@@ -287,9 +289,17 @@ CommandPt(vector CommandTokens, string Command)
{
PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE;
}
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "save") && CommandTokens.size() == 2)
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "pause") && CommandTokens.size() == 2)
{
- PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SAVE;
+ PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_PAUSE;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "resume") && CommandTokens.size() == 2)
+ {
+ PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_RESUME;
+ }
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "size") && CommandTokens.size() == 2)
+ {
+ PtRequest.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SIZE;
}
else if (CompareLowerCaseStrings(CommandTokens.at(1), "dump") && CommandTokens.size() == 2)
{
@@ -330,8 +340,18 @@ CommandPt(vector CommandTokens, string Command)
case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE:
ShowMessages("PT disabled successfully\n");
break;
- case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SAVE:
- ShowMessages("PT trace state is saved\n");
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_PAUSE:
+ ShowMessages("PT trace paused\n");
+ break;
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_RESUME:
+ ShowMessages("PT trace resumed\n");
+ break;
+ case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SIZE:
+ ShowMessages("PT buffer bytes-written per CPU:\n");
+ for (UINT32 i = 0; i < PtRequest.NumCpus; i++)
+ {
+ ShowMessages(" core %u : 0x%llx\n", i, PtRequest.BytesPerCpu[i]);
+ }
break;
case HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DUMP:
ShowMessages("PT trace state is shown\n");
From e5652fbf7f9e62e5e053d1adce7bcd3699733e2b Mon Sep 17 00:00:00 2001
From: Masoud Rahimi Jafari
Date: Wed, 20 May 2026 01:57:32 +0200
Subject: [PATCH 183/323] Debug compile errors for intel pt
---
hyperdbg/hypertrace/code/api/PtApi.c | 32 +++++++++----------
.../hypertrace/code/broadcast/Broadcast.c | 4 +--
hyperdbg/hypertrace/code/pt/Pt.c | 26 +++++++--------
hyperdbg/hypertrace/header/api/PtApi.h | 28 +++-------------
.../hypertrace/header/broadcast/Broadcast.h | 2 +-
hyperdbg/hypertrace/header/pch.h | 32 ++++++++++---------
hyperdbg/hypertrace/header/pt/Pt.h | 2 +-
7 files changed, 55 insertions(+), 71 deletions(-)
diff --git a/hyperdbg/hypertrace/code/api/PtApi.c b/hyperdbg/hypertrace/code/api/PtApi.c
index 5cce9b80..d1c2297a 100644
--- a/hyperdbg/hypertrace/code/api/PtApi.c
+++ b/hyperdbg/hypertrace/code/api/PtApi.c
@@ -403,7 +403,7 @@ HyperTracePtFlush(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest)
BOOLEAN
HyperTracePtFilter(HYPERTRACE_PT_OPERATION_PACKETS * Req)
{
- PT_FILTER_OPTIONS Options = {0};
+ PT_FILTER_OPTIONS FilterOptions = {0};
BOOLEAN WasEnabled = g_ProcessorTraceEnabled;
BOOLEAN BufferChanged = FALSE;
UINT64 ExistingSize = 0;
@@ -416,22 +416,22 @@ HyperTracePtFilter(HYPERTRACE_PT_OPERATION_PACKETS * Req)
//
if (Req->TraceUser || Req->TraceKernel)
{
- Options.TraceUser = (Req->TraceUser != 0) ? TRUE : FALSE;
- Options.TraceKernel = (Req->TraceKernel != 0) ? TRUE : FALSE;
+ FilterOptions.TraceUser = (Req->TraceUser != 0) ? TRUE : FALSE;
+ FilterOptions.TraceKernel = (Req->TraceKernel != 0) ? TRUE : FALSE;
}
else
{
- Options.TraceUser = TRUE;
- Options.TraceKernel = TRUE;
+ FilterOptions.TraceUser = TRUE;
+ FilterOptions.TraceKernel = TRUE;
}
- Options.TargetCr3 = Req->TargetCr3;
- Options.BufferSize = Req->BufferSize;
- Options.NumAddrRanges = Req->NumAddrRanges;
- if (Options.NumAddrRanges > PT_MAX_ADDR_RANGES)
- Options.NumAddrRanges = PT_MAX_ADDR_RANGES;
- for (Copy = 0; Copy < Options.NumAddrRanges; Copy++)
+ FilterOptions.TargetCr3 = Req->TargetCr3;
+ FilterOptions.BufferSize = Req->BufferSize;
+ FilterOptions.NumAddrRanges = Req->NumAddrRanges;
+ if (FilterOptions.NumAddrRanges > PT_MAX_ADDR_RANGES)
+ FilterOptions.NumAddrRanges = PT_MAX_ADDR_RANGES;
+ for (Copy = 0; Copy < FilterOptions.NumAddrRanges; Copy++)
{
- Options.AddrRanges[Copy] = Req->AddrRanges[Copy];
+ FilterOptions.AddrRanges[Copy] = Req->AddrRanges[Copy];
}
//
@@ -441,7 +441,7 @@ HyperTracePtFilter(HYPERTRACE_PT_OPERATION_PACKETS * Req)
{
ExistingSize = g_PtStateList[0].Config.BufferSize;
}
- if (Options.BufferSize != 0 && Options.BufferSize != ExistingSize)
+ if (FilterOptions.BufferSize != 0 && FilterOptions.BufferSize != ExistingSize)
{
BufferChanged = TRUE;
}
@@ -490,11 +490,11 @@ HyperTracePtFilter(HYPERTRACE_PT_OPERATION_PACKETS * Req)
{
//
// Fast filter-only path: PT is running and BufferSize is
- // unchanged. Force Options.BufferSize=0 so PtFilter on each core
+ // unchanged. Force FilterOptions.BufferSize=0 so PtFilter on each core
// keeps the buffer that's already allocated, then broadcast.
//
- Options.BufferSize = 0;
- BroadcastFilterPtOnAllCores(&Options);
+ FilterOptions.BufferSize = 0;
+ BroadcastFilterPtOnAllCores(&FilterOptions);
}
if (Req != NULL)
diff --git a/hyperdbg/hypertrace/code/broadcast/Broadcast.c b/hyperdbg/hypertrace/code/broadcast/Broadcast.c
index 6bd84df5..08b18678 100644
--- a/hyperdbg/hypertrace/code/broadcast/Broadcast.c
+++ b/hyperdbg/hypertrace/code/broadcast/Broadcast.c
@@ -154,7 +154,7 @@ BroadcastFlushPtOnAllCores()
* @return VOID
*/
VOID
-BroadcastFilterPtOnAllCores(PT_FILTER_OPTIONS * Options)
+BroadcastFilterPtOnAllCores(PT_FILTER_OPTIONS * FilterOptions)
{
- KeGenericCallDpc(DpcRoutineFilterPt, (PVOID)Options);
+ KeGenericCallDpc(DpcRoutineFilterPt, (PVOID)FilterOptions);
}
diff --git a/hyperdbg/hypertrace/code/pt/Pt.c b/hyperdbg/hypertrace/code/pt/Pt.c
index 17515028..11bff50d 100644
--- a/hyperdbg/hypertrace/code/pt/Pt.c
+++ b/hyperdbg/hypertrace/code/pt/Pt.c
@@ -1399,14 +1399,14 @@ PtDump()
* handles that case before broadcasting.
*/
VOID
-PtFilter(const PT_FILTER_OPTIONS * Options)
+PtFilter(const PT_FILTER_OPTIONS * FilterOptions)
{
UINT32 CurrentCore;
PT_PER_CPU * Cpu;
UINT32 i;
PT_CAPABILITIES Caps = {0};
- if (g_PtStateList == NULL || Options == NULL)
+ if (g_PtStateList == NULL || FilterOptions == NULL)
return;
if (PtEngineQueryCapabilities(&Caps) != 0)
@@ -1429,42 +1429,42 @@ PtFilter(const PT_FILTER_OPTIONS * Options)
//
// Apply only the user-tunable fields to this CPU's per-CPU config.
//
- Cpu->Config.TraceUser = Options->TraceUser;
- Cpu->Config.TraceKernel = Options->TraceKernel;
+ Cpu->Config.TraceUser = FilterOptions->TraceUser;
+ Cpu->Config.TraceKernel = FilterOptions->TraceKernel;
- if (Options->TargetCr3 != 0 && !Caps.Cr3Filtering)
+ if (FilterOptions->TargetCr3 != 0 && !Caps.Cr3Filtering)
{
LogInfo("PT: CR3 filtering requested but not supported by CPU\n");
Cpu->Config.TargetCr3 = 0;
}
else
{
- Cpu->Config.TargetCr3 = Options->TargetCr3;
+ Cpu->Config.TargetCr3 = FilterOptions->TargetCr3;
}
- if (Options->NumAddrRanges > Caps.NumAddrRanges)
+ if (FilterOptions->NumAddrRanges > Caps.NumAddrRanges)
{
- LogInfo("PT: requested %u IP filter ranges, but CPU only supports %u\n", Options->NumAddrRanges, Caps.NumAddrRanges);
+ LogInfo("PT: requested %u IP filter ranges, but CPU only supports %u\n", FilterOptions->NumAddrRanges, Caps.NumAddrRanges);
Cpu->Config.NumAddrRanges = Caps.NumAddrRanges;
}
- else if (Options->NumAddrRanges > 0 && !Caps.IpFiltering)
+ else if (FilterOptions->NumAddrRanges > 0 && !Caps.IpFiltering)
{
LogInfo("PT: IP filtering requested but not supported by CPU\n");
Cpu->Config.NumAddrRanges = 0;
}
else
{
- Cpu->Config.NumAddrRanges = Options->NumAddrRanges;
+ Cpu->Config.NumAddrRanges = FilterOptions->NumAddrRanges;
}
- if (Options->BufferSize != 0)
+ if (FilterOptions->BufferSize != 0)
{
- Cpu->Config.BufferSize = Options->BufferSize;
+ Cpu->Config.BufferSize = FilterOptions->BufferSize;
}
for (i = 0; i < PT_MAX_ADDR_RANGES; i++)
{
- Cpu->Config.AddrRanges[i] = Options->AddrRanges[i];
+ Cpu->Config.AddrRanges[i] = FilterOptions->AddrRanges[i];
}
//
diff --git a/hyperdbg/hypertrace/header/api/PtApi.h b/hyperdbg/hypertrace/header/api/PtApi.h
index daec9aa0..10e4cba1 100644
--- a/hyperdbg/hypertrace/header/api/PtApi.h
+++ b/hyperdbg/hypertrace/header/api/PtApi.h
@@ -14,26 +14,8 @@
// Functions //
//////////////////////////////////////////////////
-BOOLEAN
-HyperTracePtEnable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest);
-
-BOOLEAN
-HyperTracePtPause(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
-
-BOOLEAN
-HyperTracePtResume(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
-
-BOOLEAN
-HyperTracePtSize(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
-
-BOOLEAN
-HyperTracePtDump(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
-
-BOOLEAN
-HyperTracePtFlush(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
-
-BOOLEAN
-HyperTracePtFilter(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest);
-
-BOOLEAN
-HyperTracePtMmap(HYPERTRACE_PT_MMAP_PACKETS * Req);
+//
+// The exported HyperTracePt* API is declared in
+// SDK/imports/kernel/HyperDbgHyperTrace.h (with the dllexport / dllimport
+// decoration). Internal-only PT helpers should be declared here.
+//
diff --git a/hyperdbg/hypertrace/header/broadcast/Broadcast.h b/hyperdbg/hypertrace/header/broadcast/Broadcast.h
index bde1c7a1..878cd3cd 100644
--- a/hyperdbg/hypertrace/header/broadcast/Broadcast.h
+++ b/hyperdbg/hypertrace/header/broadcast/Broadcast.h
@@ -50,4 +50,4 @@ VOID
BroadcastFlushPtOnAllCores();
VOID
-BroadcastFilterPtOnAllCores(PT_FILTER_OPTIONS * Options);
+BroadcastFilterPtOnAllCores(PT_FILTER_OPTIONS * FilterOptions);
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 9fa1eded..3a859cda 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -57,18 +57,6 @@
//
#include "platform/kernel/header/PlatformMem.h"
-//
-// DPC and broadcasting function headers
-//
-#include "broadcast/Dpc.h"
-#include "broadcast/DpcRoutines.h"
-#include "broadcast/Broadcast.h"
-
-//
-// Unload function (to be called when the driver is unloaded)
-//
-#include "common/UnloadDll.h"
-
//
// Hyperlog headers
//
@@ -93,14 +81,28 @@
//
// Definition of tracing types and structures (Last Branch Record)
//
-#include "api/LbrApi.h"
#include "lbr/Lbr.h"
+#include "api/LbrApi.h"
//
-// Definition of tracing types and structures (Processor Trace)
+// Definition of tracing types and structures (Processor Trace).
+// Pt.h must come before broadcast/Broadcast.h because Broadcast.h
+// references PT_FILTER_OPTIONS in its function signatures.
//
-#include "api/PtApi.h"
#include "pt/Pt.h"
+#include "api/PtApi.h"
+
+//
+// DPC and broadcasting function headers
+//
+#include "broadcast/Dpc.h"
+#include "broadcast/DpcRoutines.h"
+#include "broadcast/Broadcast.h"
+
+//
+// Unload function (to be called when the driver is unloaded)
+//
+#include "common/UnloadDll.h"
//
// Export functions
diff --git a/hyperdbg/hypertrace/header/pt/Pt.h b/hyperdbg/hypertrace/header/pt/Pt.h
index 8d059697..ceb5c98d 100644
--- a/hyperdbg/hypertrace/header/pt/Pt.h
+++ b/hyperdbg/hypertrace/header/pt/Pt.h
@@ -104,7 +104,7 @@ PtFlush();
// untouched in the per-CPU PT_TRACE_CONFIG.
//
VOID
-PtFilter(const PT_FILTER_OPTIONS * Options);
+PtFilter(const PT_FILTER_OPTIONS * FilterOptions);
//
// PASSIVE_LEVEL helpers — call before / after the per-core DPC broadcasts.
From 1a63f6e737cfe8f4e9ab9ba36886c24c4469b69b Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 24 May 2026 15:43:48 +0200
Subject: [PATCH 184/323] enhance the LBR check function
---
hyperdbg/hypertrace/code/api/LbrApi.c | 15 ++-
hyperdbg/hypertrace/code/lbr/Lbr.c | 107 +++++++++++++-----
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 3 +
hyperdbg/script-eval/code/Functions.c | 24 +++-
.../header/ScriptEngineInternalHeader.h | 3 +
5 files changed, 121 insertions(+), 31 deletions(-)
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index f6f286c1..717a1972 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -76,6 +76,17 @@ HyperTraceSetKernelStatus(
}
}
+/**
+ * @brief Check if LBR is supported and enabled on the current core
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceLbrCheck()
+{
+ return LbrCheck();
+}
+
/**
* @brief Enable LBR tracing for HyperTrace
*
@@ -243,7 +254,7 @@ HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
return FALSE;
}
- LogInfo("Saving LBR Buffer...\n");
+ // LogInfo("Saving LBR Buffer...\n");
//
// Save the LBR state
@@ -277,7 +288,7 @@ HyperTraceLbrPrint(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest
return FALSE;
}
- LogInfo("Dumping LBR Buffer...\n");
+ // LogInfo("Dumping LBR Buffer...\n");
//
// Save the LBR state
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 61095ef8..0df671f3 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -377,8 +377,8 @@ LbrSetLbrSelectFilter(UINT64 FilterOptions)
/**
* @brief Zero out the LBR hardware state (TOS and all from/to MSR pairs)
*
- * @details For architectural LBR the TOS index is not maintained by software the CPU
- * shifts entries automatically so MSR_LBR_TOS is skipped in that case.
+ * @details For architectural LBR the TOS index is not maintained by software and the CPU
+ * shifts entries automatically, so MSR_LBR_TOS is skipped in that case.
*
* @return VOID
*/
@@ -792,6 +792,76 @@ LbrAdjustFilterOptions(UINT64 FilterOptions, IA32_LBR_CTL_REGISTER * Ia32LbrCtl)
}
}
+/**
+ * @brief Check if architectural LBR is enabled based on the IA32_LBR_CTL register value
+ *
+ * @param Ia32LbrCtl The IA32_LBR_CTL register value to inspect
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrCheckArchBased(IA32_LBR_CTL_REGISTER Ia32LbrCtl)
+{
+ return Ia32LbrCtl.Bits.LBREn ? TRUE : FALSE;
+}
+
+/**
+ * @brief Check if legacy LBR is enabled based on the IA32_DEBUGCTL MSR value
+ *
+ * @param DbgCtlMsr The IA32_DEBUGCTL MSR value to inspect
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrCheckLegacyBased(ULONGLONG DbgCtlMsr)
+{
+ return (DbgCtlMsr & IA32_DEBUGCTL_LBR_FLAG) ? TRUE : FALSE;
+}
+
+/**
+ * @brief Check if LBR is enabled while in VMX root-mode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrCheckOnVmxRootMode()
+{
+ ULONGLONG DbgCtlMsr = 0;
+ IA32_LBR_CTL_REGISTER Ia32LbrCtl = {0};
+
+ if (g_ArchBasedLastBranchRecord)
+ {
+ Ia32LbrCtl.AsUInt = g_Callbacks.VmFuncGetGuestIa32LbrCtl();
+ return LbrCheckArchBased(Ia32LbrCtl);
+ }
+ else
+ {
+ DbgCtlMsr = g_Callbacks.VmFuncGetDebugctl();
+ return LbrCheckLegacyBased(DbgCtlMsr);
+ }
+}
+
+/**
+ * @brief Check if LBR is enabled while in native mode or VMX non-root mode
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+LbrCheckOnNativeOrVmxNonRootMode()
+{
+ ULONGLONG DbgCtlMsr = 0;
+ IA32_LBR_CTL_REGISTER Ia32LbrCtl = {0};
+
+ if (g_ArchBasedLastBranchRecord)
+ {
+ xrdmsr(IA32_LBR_CTL, &Ia32LbrCtl.AsUInt);
+ return LbrCheckArchBased(Ia32LbrCtl);
+ }
+ else
+ {
+ xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
+ return LbrCheckLegacyBased(DbgCtlMsr);
+ }
+}
+
/**
* @brief Check if LBR is enabled or not
*
@@ -800,37 +870,20 @@ LbrAdjustFilterOptions(UINT64 FilterOptions, IA32_LBR_CTL_REGISTER * Ia32LbrCtl)
BOOLEAN
LbrCheck()
{
- ULONGLONG DbgCtlMsr = 0;
- IA32_LBR_CTL_REGISTER Ia32LbrCtl = {0};
+ BOOLEAN IsOnVmxRootMode = FALSE;
- //
- // Check if LBR is enabled or not
- //
- if (g_ArchBasedLastBranchRecord)
+ if (g_RunningOnHypervisorEnvironment)
{
- xrdmsr(IA32_LBR_CTL, &Ia32LbrCtl.AsUInt);
+ IsOnVmxRootMode = g_Callbacks.VmFuncVmxGetCurrentExecutionMode();
+ }
- if (Ia32LbrCtl.Bits.LBREn)
- {
- return TRUE;
- }
- else
- {
- return FALSE;
- }
+ if (IsOnVmxRootMode)
+ {
+ return LbrCheckOnVmxRootMode();
}
else
{
- xrdmsr(IA32_DEBUGCTL, &DbgCtlMsr);
-
- if (DbgCtlMsr & IA32_DEBUGCTL_LBR_FLAG)
- {
- return TRUE;
- }
- else
- {
- return FALSE;
- }
+ return LbrCheckOnNativeOrVmxNonRootMode();
}
}
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 7d7b8d2e..be7a19d4 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -42,6 +42,9 @@ HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrPrint(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTraceLbrCheck();
+
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index 27083a2e..6da2837d 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -2048,7 +2048,7 @@ ScriptEngineFunctionLbrSave()
}
/**
- * @brief Implementation of lbr_print_all function
+ * @brief Implementation of lbr_print function
*
* @return BOOLEAN
*/
@@ -2056,7 +2056,7 @@ BOOLEAN
ScriptEngineFunctionLbrPrint()
{
#ifdef SCRIPT_ENGINE_USER_MODE
- ShowMessages("err, it's not possible to call lbr_dump function in the user-mode\n");
+ ShowMessages("err, it's not possible to call lbr_print function in the user-mode\n");
return FALSE;
#endif // SCRIPT_ENGINE_USER_MODE
@@ -2069,3 +2069,23 @@ ScriptEngineFunctionLbrPrint()
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
+
+/**
+ * @brief Implementation of lbr_check function
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+ScriptEngineFunctionLbrCheck()
+{
+#ifdef SCRIPT_ENGINE_USER_MODE
+ ShowMessages("err, it's not possible to call lbr_check function in the user-mode\n");
+ return FALSE;
+#endif // SCRIPT_ENGINE_USER_MODE
+
+#ifdef SCRIPT_ENGINE_KERNEL_MODE
+
+ return HyperTraceLbrCheck();
+
+#endif // SCRIPT_ENGINE_KERNEL_MODE
+}
diff --git a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
index 237771b8..77c4337a 100644
--- a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
+++ b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
@@ -269,6 +269,9 @@ ScriptEngineFunctionLbrSave();
BOOLEAN
ScriptEngineFunctionLbrPrint();
+BOOLEAN
+ScriptEngineFunctionLbrCheck();
+
UINT64
ScriptEngineFunctionStrcmp(const char * Address1, const char * Address2);
From 02ab868dc710232a0b7ef5fcaa81f12538b39d30 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 24 May 2026 23:51:12 +0200
Subject: [PATCH 185/323] add lbr_restore and lbr_restore_by_filter functions
---
.../hwdbg/script/script_definitions.scala | 2 +-
hyperdbg/hypertrace/code/api/LbrApi.c | 35 +
hyperdbg/hypertrace/code/lbr/Lbr.c | 5 +
.../header/globals/GlobalVariables.h | 6 +
hyperdbg/hypertrace/header/lbr/Lbr.h | 6 +-
.../headers/ScriptEngineCommonDefinitions.h | 106 +-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 12 +-
hyperdbg/script-engine/code/parse-table.c | 1544 ++++++++---------
hyperdbg/script-engine/header/parse-table.h | 20 +-
.../python/Boolean_Expression_Grammar.txt | 2 +-
hyperdbg/script-engine/python/Grammar.txt | 6 +-
hyperdbg/script-eval/code/Functions.c | 40 +
hyperdbg/script-eval/code/ScriptEngineEval.c | 37 +
.../header/ScriptEngineInternalHeader.h | 6 +
14 files changed, 980 insertions(+), 847 deletions(-)
diff --git a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
index a5515f05..5cb71649 100644
--- a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
+++ b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
@@ -45,6 +45,6 @@ object ScriptConstantTypes {
object ScriptEvalFunc {
object ScriptOperators extends ChiselEnum {
- val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncLbr_save, sFuncLbr_dump, sFuncLbr_print, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
+ val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncLbr_check, sFuncRdtsc, sFuncRdtscp, sFuncLbr_save, sFuncLbr_dump, sFuncLbr_print, sFuncLbr_restore, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncLbr_restore_by_filter, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
}
}
\ No newline at end of file
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 717a1972..a9803d92 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -87,6 +87,37 @@ HyperTraceLbrCheck()
return LbrCheck();
}
+/**
+ * @brief Restore (re-enable) LBR collection on the current core with the specified filter options
+ * @param FilterOptions A bitmask of filter options to apply to the LBR branches
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceLbrRestoreByFilter(UINT64 FilterOptions)
+{
+ //
+ // Only restore (re-enable) LBR once it is already initialized
+ //
+ if (g_LastBranchRecordEnabled)
+ {
+ return FALSE;
+ }
+
+ return LbrStart(FilterOptions);
+}
+
+/**
+ * @brief Restore (re-enable) LBR collection on the current core with previous filter options
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceLbrRestore()
+{
+ return HyperTraceLbrRestoreByFilter(g_LbrFilterOptions);
+}
+
/**
* @brief Enable LBR tracing for HyperTrace
*
@@ -100,11 +131,15 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
//
// Check if LBR is already enabled or not
//
+ // We allow re-enabling LBR even if it is already enabled to support scenarios where
+ // the LBR is deactivated as a result of a #DB and wants to re-enable it again
+ /*
if (g_LastBranchRecordEnabled)
{
HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_ENABLED);
return FALSE;
}
+ */
//
// Check for ARCHITECTURAL LBR support first, if not supported then check for LEGACY LBR support
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 0df671f3..31a43275 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -774,6 +774,11 @@ LbrAdjustFilterOptions(UINT64 FilterOptions, IA32_LBR_CTL_REGISTER * Ia32LbrCtl)
//
LbrAdjustFilterOptionsForCallStack(&FilterOptions);
+ //
+ // Save the LBR filter options to a global variable for later use
+ //
+ g_LbrFilterOptions = FilterOptions;
+
//
// For architectural LBR, convert filter options into IA32_LBR_CTL bit fields
//
diff --git a/hyperdbg/hypertrace/header/globals/GlobalVariables.h b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
index 56d3dd06..f7a1a5e6 100644
--- a/hyperdbg/hypertrace/header/globals/GlobalVariables.h
+++ b/hyperdbg/hypertrace/header/globals/GlobalVariables.h
@@ -70,3 +70,9 @@ ULONGLONG g_LbrCapacity;
*
*/
CPUID28_LEAFS g_Cpuid28Leafs;
+
+/**
+ * @brief The global variable to hold the current LBR filter options bitmask (for both architectural and legacy LBR)
+ *
+ */
+UINT64 g_LbrFilterOptions;
diff --git a/hyperdbg/hypertrace/header/lbr/Lbr.h b/hyperdbg/hypertrace/header/lbr/Lbr.h
index 15a89331..a9293850 100644
--- a/hyperdbg/hypertrace/header/lbr/Lbr.h
+++ b/hyperdbg/hypertrace/header/lbr/Lbr.h
@@ -169,12 +169,12 @@ LbrCheckAndReadArchitecturalLbrDetails();
BOOLEAN
LbrStart(UINT64 FilterOptions);
-VOID
-LbrFilter(UINT64 FilterOptions);
-
BOOLEAN
LbrCheck();
+VOID
+LbrFilter(UINT64 FilterOptions);
+
VOID
LbrStop();
diff --git a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
index 085375da..38d28961 100644
--- a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
+++ b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
@@ -148,56 +148,59 @@ static const char *const SymbolTypeNames[] = {
#define FUNC_EVENT_TRACE_STEP_OUT 51
#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP 52
#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN 53
-#define FUNC_RDTSC 54
-#define FUNC_RDTSCP 55
-#define FUNC_LBR_SAVE 56
-#define FUNC_LBR_DUMP 57
-#define FUNC_LBR_PRINT 58
-#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 59
-#define FUNC_EVENT_INJECT 60
-#define FUNC_POI 61
-#define FUNC_DB 62
-#define FUNC_DD 63
-#define FUNC_DW 64
-#define FUNC_DQ 65
-#define FUNC_NEG 66
-#define FUNC_HI 67
-#define FUNC_LOW 68
-#define FUNC_NOT 69
-#define FUNC_CHECK_ADDRESS 70
-#define FUNC_DISASSEMBLE_LEN 71
-#define FUNC_DISASSEMBLE_LEN32 72
-#define FUNC_DISASSEMBLE_LEN64 73
-#define FUNC_INTERLOCKED_INCREMENT 74
-#define FUNC_INTERLOCKED_DECREMENT 75
-#define FUNC_PHYSICAL_TO_VIRTUAL 76
-#define FUNC_VIRTUAL_TO_PHYSICAL 77
-#define FUNC_POI_PA 78
-#define FUNC_HI_PA 79
-#define FUNC_LOW_PA 80
-#define FUNC_DB_PA 81
-#define FUNC_DD_PA 82
-#define FUNC_DW_PA 83
-#define FUNC_DQ_PA 84
-#define FUNC_ED 85
-#define FUNC_EB 86
-#define FUNC_EQ 87
-#define FUNC_INTERLOCKED_EXCHANGE 88
-#define FUNC_INTERLOCKED_EXCHANGE_ADD 89
-#define FUNC_EB_PA 90
-#define FUNC_ED_PA 91
-#define FUNC_EQ_PA 92
-#define FUNC_INTERLOCKED_COMPARE_EXCHANGE 93
-#define FUNC_STRLEN 94
-#define FUNC_STRCMP 95
-#define FUNC_MEMCMP 96
-#define FUNC_STRNCMP 97
-#define FUNC_WCSLEN 98
-#define FUNC_WCSCMP 99
-#define FUNC_EVENT_INJECT_ERROR_CODE 100
-#define FUNC_MEMCPY 101
-#define FUNC_MEMCPY_PA 102
-#define FUNC_WCSNCMP 103
+#define FUNC_LBR_CHECK 54
+#define FUNC_RDTSC 55
+#define FUNC_RDTSCP 56
+#define FUNC_LBR_SAVE 57
+#define FUNC_LBR_DUMP 58
+#define FUNC_LBR_PRINT 59
+#define FUNC_LBR_RESTORE 60
+#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 61
+#define FUNC_EVENT_INJECT 62
+#define FUNC_POI 63
+#define FUNC_DB 64
+#define FUNC_DD 65
+#define FUNC_DW 66
+#define FUNC_DQ 67
+#define FUNC_NEG 68
+#define FUNC_HI 69
+#define FUNC_LOW 70
+#define FUNC_NOT 71
+#define FUNC_CHECK_ADDRESS 72
+#define FUNC_DISASSEMBLE_LEN 73
+#define FUNC_DISASSEMBLE_LEN32 74
+#define FUNC_DISASSEMBLE_LEN64 75
+#define FUNC_INTERLOCKED_INCREMENT 76
+#define FUNC_INTERLOCKED_DECREMENT 77
+#define FUNC_PHYSICAL_TO_VIRTUAL 78
+#define FUNC_VIRTUAL_TO_PHYSICAL 79
+#define FUNC_POI_PA 80
+#define FUNC_HI_PA 81
+#define FUNC_LOW_PA 82
+#define FUNC_DB_PA 83
+#define FUNC_DD_PA 84
+#define FUNC_DW_PA 85
+#define FUNC_DQ_PA 86
+#define FUNC_LBR_RESTORE_BY_FILTER 87
+#define FUNC_ED 88
+#define FUNC_EB 89
+#define FUNC_EQ 90
+#define FUNC_INTERLOCKED_EXCHANGE 91
+#define FUNC_INTERLOCKED_EXCHANGE_ADD 92
+#define FUNC_EB_PA 93
+#define FUNC_ED_PA 94
+#define FUNC_EQ_PA 95
+#define FUNC_INTERLOCKED_COMPARE_EXCHANGE 96
+#define FUNC_STRLEN 97
+#define FUNC_STRCMP 98
+#define FUNC_MEMCMP 99
+#define FUNC_STRNCMP 100
+#define FUNC_WCSLEN 101
+#define FUNC_WCSCMP 102
+#define FUNC_EVENT_INJECT_ERROR_CODE 103
+#define FUNC_MEMCPY 104
+#define FUNC_MEMCPY_PA 105
+#define FUNC_WCSNCMP 106
static const char *const FunctionNames[] = {
"FUNC_UNDEFINED",
@@ -254,11 +257,13 @@ static const char *const FunctionNames[] = {
"FUNC_EVENT_TRACE_STEP_OUT",
"FUNC_EVENT_TRACE_INSTRUMENTATION_STEP",
"FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN",
+"FUNC_LBR_CHECK",
"FUNC_RDTSC",
"FUNC_RDTSCP",
"FUNC_LBR_SAVE",
"FUNC_LBR_DUMP",
"FUNC_LBR_PRINT",
+"FUNC_LBR_RESTORE",
"FUNC_SPINLOCK_LOCK_CUSTOM_WAIT",
"FUNC_EVENT_INJECT",
"FUNC_POI",
@@ -285,6 +290,7 @@ static const char *const FunctionNames[] = {
"FUNC_DD_PA",
"FUNC_DW_PA",
"FUNC_DQ_PA",
+"FUNC_LBR_RESTORE_BY_FILTER",
"FUNC_ED",
"FUNC_EB",
"FUNC_EQ",
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index be7a19d4..7e341e82 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -36,15 +36,21 @@ HyperTraceUnInit();
// LBR Functions //
//////////////////////////////////////////////////
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTraceLbrCheck();
+
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTraceLbrRestore();
+
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTraceLbrRestoreByFilter(UINT64 FilterOptions);
+
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrPrint(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
-IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceLbrCheck();
-
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest);
diff --git a/hyperdbg/script-engine/code/parse-table.c b/hyperdbg/script-engine/code/parse-table.c
index 9a124b1f..3e42b0b3 100644
--- a/hyperdbg/script-engine/code/parse-table.c
+++ b/hyperdbg/script-engine/code/parse-table.c
@@ -143,6 +143,9 @@ const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "CALL_FUNC_STATEMENT"},
+ {NON_TERMINAL, "CALL_FUNC_STATEMENT"},
+ {NON_TERMINAL, "CALL_FUNC_STATEMENT"},
+ {NON_TERMINAL, "CALL_FUNC_STATEMENT"},
{NON_TERMINAL, "VA"},
{NON_TERMINAL, "VA"},
{NON_TERMINAL, "IF_STATEMENT"},
@@ -249,6 +252,8 @@ const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
{NON_TERMINAL, "ARRAY_DIMS_READ_OPT"},
{NON_TERMINAL, "ARRAY_DIMS_READ_OPT"},
{NON_TERMINAL, "ARRAY_DIMS_READ"},
@@ -373,11 +378,13 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "event_trace_step_out"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_STEP_OUT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_instrumentation_step"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_INSTRUMENTATION_STEP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_instrumentation_step_in"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_INSTRUMENTATION_STEP_IN"},{SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "lbr_check"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_CHECK"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "rdtsc"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSC"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "rdtscp"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSCP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_SAVE"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_DUMP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "lbr_print"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_PRINT"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "lbr_restore"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_RESTORE"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "spinlock_lock_custom_wait"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@SPINLOCK_LOCK_CUSTOM_WAIT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_inject"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_INJECT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
@@ -405,6 +412,7 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "dd_pa"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DD_PA"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "dw_pa"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DW_PA"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "dq_pa"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DQ_PA"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "lbr_restore_by_filter"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@LBR_RESTORE_BY_FILTER"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "ed"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@ED"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "eb"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EB"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "eq"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EQ"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
@@ -486,6 +494,7 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_SAVE"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_DUMP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "lbr_print"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_PRINT"},{SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "lbr_restore"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_RESTORE"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "db"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DB"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "dd"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DD"},{SPECIAL_TOKEN, ")"}},
@@ -511,6 +520,7 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "dd_pa"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DD_PA"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "dw_pa"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DW_PA"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "dq_pa"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DQ_PA"},{SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "lbr_restore_by_filter"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@LBR_RESTORE_BY_FILTER"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "ed"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@ED"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "eb"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EB"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "eq"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EQ"},{SPECIAL_TOKEN, ")"}},
@@ -654,6 +664,8 @@ const unsigned int RhsSize[RULES_COUNT]=
4,
4,
4,
+4,
+5,
5,
5,
5,
@@ -686,6 +698,7 @@ const unsigned int RhsSize[RULES_COUNT]=
6,
6,
6,
+6,
8,
8,
8,
@@ -767,6 +780,8 @@ const unsigned int RhsSize[RULES_COUNT]=
4,
4,
4,
+4,
+5,
5,
5,
5,
@@ -844,263 +859,266 @@ const unsigned int RhsSize[RULES_COUNT]=
};
const char* NoneTerminalMap[NONETERMINAL_COUNT]=
{
-"END_OF_IF",
-"INIT_LIST_TAIL",
-"VARIABLE_TYPE6",
-"ARRAY_DIMS_WRITE",
-"ARRAY_DIMS_READ2",
-"INIT_ITEM",
-"ELSE_STATEMENT",
-"E3'",
-"ARRAY_DIMS2",
-"MULTIPLE_ASSIGNMENT2",
-"ASSIGNMENT_STATEMENT'",
-"STATEMENT2",
-"EXPRESSION",
-"RETURN",
-"S",
-"ARRAY_DIMS_WRITE2",
-"FOR_STATEMENT",
-"ARRAY_DIMS_READ",
-"MULTIPLE_ASSIGNMENT",
-"STATEMENT",
-"VA3",
-"VA2",
-"BOOLEAN_EXPRESSION",
-"E5'",
-"ASSIGNMENT_STATEMENT",
-"VARIABLE_TYPE2",
-"INIT_LIST_CONT",
-"ELSIF_STATEMENT'",
-"CONST_NUMBER",
-"IF_STATEMENT",
-"ARRAY_DIMS",
-"STRING",
-"E3",
-"E2",
-"E1'",
-"ARRAY_DIMS_READ_OPT",
-"VARIABLE_TYPE1",
-"E5",
-"INIT_LIST",
-"WSTRING",
-"WHILE_STATEMENT",
-"VARIABLE_TYPE5",
-"VA",
-"E12",
-"ELSIF_STATEMENT",
-"SIMPLE_ASSIGNMENT",
-"E1",
-"E2'",
-"E4",
-"StringNumber",
"INC_DEC",
-"VARIABLE_TYPE3",
-"WstringNumber",
-"S2",
-"ARRAY_DIMS_WRITE_OPT",
-"CALL_FUNC_STATEMENT",
-"ARRAY_INIT",
-"DO_WHILE_STATEMENT",
-"E4'",
+"RETURN",
+"VARIABLE_TYPE2",
+"ELSE_STATEMENT",
"VARIABLE_TYPE4",
+"STRING",
+"EXPRESSION",
+"E12",
+"ARRAY_DIMS_WRITE",
+"WstringNumber",
+"STATEMENT",
+"ARRAY_DIMS_READ",
+"E2",
+"INIT_LIST_TAIL",
+"SIMPLE_ASSIGNMENT",
+"E2'",
+"ARRAY_DIMS_WRITE2",
+"WHILE_STATEMENT",
+"E4",
+"VA3",
+"ELSIF_STATEMENT'",
+"VA2",
+"ARRAY_DIMS_WRITE_OPT",
+"ARRAY_INIT",
+"MULTIPLE_ASSIGNMENT",
+"E1",
+"BOOLEAN_EXPRESSION",
+"L_VALUE",
+"ASSIGNMENT_STATEMENT'",
+"END_OF_IF",
+"S2",
+"FOR_STATEMENT",
+"E3'",
+"CALL_FUNC_STATEMENT",
+"WSTRING",
+"VA",
+"DO_WHILE_STATEMENT",
+"E1'",
+"STATEMENT2",
+"ARRAY_DIMS_READ2",
+"ARRAY_DIMS2",
+"ARRAY_DIMS",
+"INIT_ITEM",
+"VARIABLE_TYPE1",
+"INIT_LIST",
+"IF_STATEMENT",
+"ELSIF_STATEMENT",
+"VARIABLE_TYPE3",
+"CONST_NUMBER",
+"E5",
+"INIT_LIST_CONT",
+"S",
"INC_DEC'",
+"StringNumber",
+"E3",
+"E4'",
+"ASSIGNMENT_STATEMENT",
+"E5'",
+"VARIABLE_TYPE6",
"E0'",
-"L_VALUE"
+"VARIABLE_TYPE5",
+"MULTIPLE_ASSIGNMENT2",
+"ARRAY_DIMS_READ_OPT"
};
const char* TerminalMap[TERMINAL_COUNT]=
{
-"++",
-"disassemble_len",
-"ed",
-",",
-"hi_pa",
-"--",
-"%=",
-"interlocked_exchange",
-"^=",
-"wcscmp",
-"event_inject",
-"reference",
-"memcpy",
-"test_statement",
-"dq_pa",
-"event_trace_step_in",
-"else",
-"spinlock_lock_custom_wait",
-"&",
-"while",
-"(",
-"disassemble_len64",
-"virtual_to_physical",
-"ed_pa",
-"_binary",
-"return",
-"db",
-"not",
-"event_enable",
-"interlocked_exchange_add",
-"wcsncmp",
-"_register",
-"+",
-"if",
-"_octal",
-"dd_pa",
-"<<=",
-"+=",
-"eb",
-"break",
-"hi",
-"_hex",
-"poi",
-"printf",
-"formats",
-"rdtsc",
-"disassemble_len32",
-")",
-"^",
-"_string",
-"_wstring",
-"<<",
-"eq",
-"microsleep",
-"print",
-"event_clear",
-"eb_pa",
-"event_trace_instrumentation_step_in",
-"lbr_save",
-"lbr_dump",
-"_global_id",
-"&=",
-"strcmp",
-"|=",
-"-",
-"-=",
-"spinlock_unlock",
-"_decimal",
-"memcmp",
-"*=",
-"_script_variable_type",
-"pause",
-"wcslen",
-"event_sc",
-"]",
-"dw",
-"eq_pa",
-"elsif",
-"do",
-"db_pa",
-"event_inject_error_code",
-"}",
-"$",
-"dq",
-">>=",
-"dw_pa",
-"continue",
-"_function_parameter_id",
-"#include",
-"spinlock_lock",
-"strlen",
-">>",
-"_pseudo_register",
-"event_disable",
"%",
-"lbr_print",
-"for",
"dd",
-"|",
-"strncmp",
-"~",
-"*",
-"neg",
-"event_trace_step_out",
-"event_trace_instrumentation_step",
-";",
-"[",
-"/=",
-"poi_pa",
-"interlocked_increment",
-"_local_id",
-"low_pa",
-"interlocked_compare_exchange",
-"rdtscp",
-"=",
-"interlocked_decrement",
-"physical_to_virtual",
-"{",
-"_function_id",
-"flush",
-"/",
-"low",
+"dw",
+"not",
"memcpy_pa",
+"db",
+"dw_pa",
+"ed_pa",
+"_pseudo_register",
+"break",
+"]",
+"=",
+"eq_pa",
+"poi_pa",
+"lbr_restore",
+"low",
+"wcslen",
+"|=",
+"spinlock_unlock",
+"spinlock_lock_custom_wait",
+"test_statement",
+"elsif",
+"{",
+"dq_pa",
+"lbr_save",
+"*=",
+"}",
+"*",
+"^=",
+"&",
+"eq",
+"event_enable",
+"do",
+">>",
+"rdtsc",
+"%=",
+"interlocked_exchange_add",
+"$",
+";",
+"printf",
+"+",
+"hi_pa",
+"event_inject_error_code",
+"reference",
+"(",
+"return",
+"eb",
+"_wstring",
+"/",
+"~",
+"for",
+"+=",
+"formats",
+"_hex",
+"_script_variable_type",
+"++",
+"interlocked_compare_exchange",
+"dq",
+"-=",
+")",
+"low_pa",
+"db_pa",
+"pause",
+"hi",
+"rdtscp",
+"wcscmp",
+"/=",
+"_function_parameter_id",
+"spinlock_lock",
+"event_disable",
+"event_trace_instrumentation_step",
+"lbr_check",
+"interlocked_exchange",
+"strlen",
+"else",
+"#include",
+"poi",
+"print",
+"interlocked_increment",
+"event_trace_step_in",
+"&=",
+"neg",
+"memcpy",
+"<<=",
+"_decimal",
+"microsleep",
+"flush",
+"_octal",
+">>=",
+"dd_pa",
+"lbr_restore_by_filter",
+"physical_to_virtual",
+"_global_id",
+"disassemble_len",
+"while",
+"_binary",
+"^",
+"continue",
+"if",
+"_local_id",
+"event_trace_step_out",
+"event_clear",
+"interlocked_decrement",
+"check_address",
+"_string",
+"disassemble_len32",
+"event_trace_instrumentation_step_in",
+"strncmp",
+"lbr_dump",
+"_register",
+"[",
+"disassemble_len64",
+",",
+"virtual_to_physical",
+"<<",
+"|",
+"ed",
+"-",
+"lbr_print",
+"_function_id",
+"wcsncmp",
+"memcmp",
+"event_sc",
+"strcmp",
+"eb_pa",
+"event_inject",
"event_trace_step",
-"check_address"
+"--"
};
const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]=
{
- {2147483648 ,150 ,150 ,2147483648 ,150 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 },
- {2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,252 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,252 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,42 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 },
- {2147483648 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,148 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 },
- {2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 ,67 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,68 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,72 ,2147483648 ,64 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,23 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,18 ,2147483648 ,23 ,23 ,23 ,2147483648 ,27 ,23 ,23 ,23 ,23 ,23 ,21 ,2147483648 ,17 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,24 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,21 ,2147483648 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,26 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,19 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,25 ,21 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,20 ,23 ,2147483648 ,23 ,2147483648 ,21 ,23 ,23 ,23 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,21 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,22 ,23 ,2147483648 ,23 ,23 ,23 ,23 },
- {2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,177 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,2147483648 ,177 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,177 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,177 ,2147483648 ,177 ,177 ,177 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,177 ,177 ,177 ,177 ,177 ,2147483648 ,177 ,177 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,177 },
- {2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,28 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 },
- {2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2 ,2 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,1 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 },
- {59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,59 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,9 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,4 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,3 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,10 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,12 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,5 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,11 ,7 ,13 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,6 ,9 ,2147483648 ,9 ,2147483648 ,7 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,7 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,8 ,9 ,2147483648 ,9 ,9 ,9 ,9 },
- {2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,271 ,271 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,271 ,271 ,271 ,271 ,2147483648 ,271 ,271 ,2147483648 ,271 ,271 ,271 ,271 ,2147483648 ,271 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,271 ,271 ,2147483648 ,2147483648 ,271 ,271 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,271 ,271 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,271 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,271 ,2147483648 ,271 ,271 ,271 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,271 ,271 ,271 ,271 ,271 ,2147483648 ,271 ,271 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,271 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,198 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,47 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 },
- {2147483648 ,147 ,147 ,2147483648 ,147 ,2147483648 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,2147483648 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,2147483648 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,2147483648 ,2147483648 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 ,147 ,2147483648 ,147 ,147 ,147 ,147 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 },
- {2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 },
- {2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,249 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,249 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,194 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,194 ,194 ,194 ,194 ,2147483648 ,194 ,194 ,2147483648 ,194 ,194 ,194 ,194 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,194 ,194 ,2147483648 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,194 ,194 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,194 ,2147483648 ,194 ,194 ,194 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,194 ,194 ,194 ,194 ,194 ,194 ,2147483648 ,194 ,194 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,194 },
- {2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,214 ,229 ,2147483648 ,223 ,2147483648 ,2147483648 ,232 ,2147483648 ,243 ,2147483648 ,219 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,245 ,216 ,221 ,235 ,257 ,2147483648 ,205 ,212 ,2147483648 ,233 ,244 ,246 ,260 ,2147483648 ,257 ,226 ,2147483648 ,2147483648 ,230 ,2147483648 ,210 ,257 ,204 ,2147483648 ,2147483648 ,199 ,215 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,201 ,202 ,246 ,2147483648 ,239 ,2147483648 ,259 ,2147483648 ,2147483648 ,257 ,240 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,207 ,236 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,208 ,2147483648 ,227 ,2147483648 ,246 ,2147483648 ,2147483648 ,238 ,2147483648 ,258 ,2147483648 ,2147483648 ,203 ,2147483648 ,206 ,2147483648 ,241 ,261 ,262 ,209 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,217 ,246 ,224 ,237 ,200 ,2147483648 ,218 ,220 ,2147483648 ,247 ,2147483648 ,2147483648 ,211 ,2147483648 ,2147483648 ,213 },
- {2147483648 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,145 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,2147483648 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,2147483648 ,2147483648 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 ,146 ,2147483648 ,146 ,146 ,146 ,146 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 },
- {2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,190 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,190 ,2147483648 ,190 ,190 ,190 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 ,190 ,190 ,190 ,190 ,190 ,2147483648 ,190 ,190 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,190 },
- {2147483648 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,274 ,2147483648 ,274 ,274 ,274 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,274 ,274 ,274 ,274 ,274 ,2147483648 ,274 ,274 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,274 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,276 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,276 ,276 ,276 ,276 ,2147483648 ,276 ,276 ,2147483648 ,276 ,276 ,276 ,276 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,276 ,276 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,276 ,276 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,276 ,276 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,276 ,276 ,276 ,276 ,276 ,2147483648 ,276 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 },
- {2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,16 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,15 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 },
- {56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,56 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,108 ,123 ,2147483648 ,117 ,2147483648 ,2147483648 ,126 ,2147483648 ,137 ,97 ,113 ,139 ,78 ,122 ,87 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,110 ,115 ,129 ,2147483648 ,2147483648 ,99 ,106 ,75 ,127 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,124 ,2147483648 ,104 ,2147483648 ,98 ,83 ,74 ,91 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,82 ,73 ,77 ,128 ,90 ,93 ,94 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,134 ,2147483648 ,2147483648 ,84 ,136 ,81 ,2147483648 ,101 ,130 ,2147483648 ,2147483648 ,119 ,138 ,2147483648 ,2147483648 ,102 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,79 ,132 ,2147483648 ,2147483648 ,76 ,2147483648 ,95 ,2147483648 ,100 ,2147483648 ,135 ,2147483648 ,2147483648 ,103 ,88 ,89 ,2147483648 ,2147483648 ,2147483648 ,116 ,111 ,2147483648 ,118 ,131 ,92 ,2147483648 ,112 ,114 ,2147483648 ,2147483648 ,85 ,2147483648 ,105 ,140 ,86 ,107 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,165 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,161 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,170 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,28 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,2147483648 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,2147483648 ,2147483648 ,152 ,152 ,152 ,2147483648 ,152 ,2147483648 ,152 ,152 ,2147483648 ,152 ,2147483648 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,152 ,2147483648 ,152 ,2147483648 ,152 ,152 ,2147483648 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,151 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,2147483648 ,2147483648 ,152 ,152 ,2147483648 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,2147483648 ,152 ,2147483648 ,2147483648 ,152 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,210 ,211 ,216 ,2147483648 ,209 ,231 ,240 ,263 ,2147483648 ,2147483648 ,2147483648 ,241 ,226 ,207 ,215 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,204 ,2147483648 ,2147483648 ,267 ,2147483648 ,268 ,236 ,2147483648 ,2147483648 ,2147483648 ,202 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,265 ,227 ,2147483648 ,223 ,250 ,2147483648 ,235 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,242 ,212 ,2147483648 ,2147483648 ,228 ,229 ,2147483648 ,214 ,203 ,248 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,243 ,2147483648 ,2147483648 ,208 ,2147483648 ,221 ,2147483648 ,2147483648 ,213 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,262 ,2147483648 ,230 ,233 ,224 ,251 ,218 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,222 ,217 ,2147483648 ,219 ,2147483648 ,246 ,205 ,251 ,2147483648 ,220 ,2147483648 ,225 ,2147483648 ,2147483648 ,234 ,264 ,206 ,252 ,249 ,245 ,2147483648 ,244 ,239 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,281 ,281 ,281 ,2147483648 ,281 ,281 ,281 ,281 ,2147483648 ,2147483648 ,2147483648 ,281 ,281 ,281 ,281 ,281 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,281 ,281 ,2147483648 ,2147483648 ,281 ,2147483648 ,281 ,281 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,281 ,2147483648 ,2147483648 ,2147483648 ,281 ,281 ,2147483648 ,281 ,281 ,2147483648 ,281 ,282 ,2147483648 ,281 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,281 ,281 ,2147483648 ,2147483648 ,281 ,281 ,2147483648 ,281 ,281 ,281 ,2147483648 ,281 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,281 ,281 ,2147483648 ,2147483648 ,281 ,2147483648 ,281 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,281 ,2147483648 ,281 ,281 ,281 ,281 ,281 ,2147483648 ,281 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,281 ,281 ,2147483648 ,281 ,2147483648 ,281 ,281 ,281 ,2147483648 ,281 ,2147483648 ,281 ,2147483648 ,2147483648 ,281 ,281 ,281 ,281 ,281 ,281 ,2147483648 ,281 ,281 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,10 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,7 ,2147483648 ,2147483648 ,9 ,9 ,5 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,6 ,2147483648 ,9 ,2147483648 ,12 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,7 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,13 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,7 ,9 ,4 ,2147483648 ,2147483648 ,11 ,3 ,7 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,8 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,278 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 },
+ {2147483648 ,276 ,276 ,276 ,2147483648 ,276 ,276 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,276 ,276 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,276 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,275 ,276 ,276 ,2147483648 ,276 ,276 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,276 ,276 ,276 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,276 ,2147483648 ,276 ,276 ,276 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,276 ,276 ,276 ,276 ,276 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 },
+ {2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,2147483648 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,2147483648 ,2147483648 ,153 ,153 ,153 ,2147483648 ,153 ,2147483648 ,153 ,153 ,2147483648 ,153 ,2147483648 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,153 ,2147483648 ,153 ,2147483648 ,153 ,153 ,2147483648 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,2147483648 ,2147483648 ,153 ,153 ,2147483648 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,2147483648 ,153 ,2147483648 ,2147483648 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 },
+ {2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,15 ,14 ,14 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,191 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,102 ,103 ,108 ,143 ,101 ,123 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,118 ,97 ,107 ,139 ,2147483648 ,80 ,98 ,78 ,2147483648 ,2147483648 ,124 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,75 ,2147483648 ,2147483648 ,92 ,2147483648 ,130 ,2147483648 ,2147483648 ,83 ,2147483648 ,119 ,141 ,115 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,134 ,104 ,2147483648 ,2147483648 ,120 ,121 ,84 ,106 ,93 ,140 ,2147483648 ,2147483648 ,79 ,76 ,89 ,91 ,129 ,135 ,2147483648 ,2147483648 ,100 ,73 ,113 ,87 ,2147483648 ,105 ,142 ,2147483648 ,2147483648 ,82 ,85 ,2147483648 ,2147483648 ,122 ,125 ,116 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,77 ,114 ,109 ,2147483648 ,111 ,90 ,138 ,95 ,2147483648 ,2147483648 ,112 ,2147483648 ,117 ,2147483648 ,2147483648 ,126 ,2147483648 ,96 ,2147483648 ,144 ,137 ,81 ,136 ,131 ,99 ,86 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,24 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,21 ,2147483648 ,2147483648 ,23 ,23 ,19 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,27 ,23 ,2147483648 ,2147483648 ,2147483648 ,20 ,2147483648 ,23 ,2147483648 ,26 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,21 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,21 ,23 ,18 ,2147483648 ,2147483648 ,25 ,17 ,21 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,21 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,22 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 },
+ {257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,257 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,257 ,2147483648 ,257 ,257 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,42 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,148 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,197 ,197 ,197 ,2147483648 ,197 ,197 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,197 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,197 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,197 ,197 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,197 ,197 ,197 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,197 ,2147483648 ,197 ,197 ,197 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,197 ,197 ,197 ,197 ,197 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,47 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,1 ,0 ,0 ,2147483648 ,2 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,165 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 },
+ {2147483648 ,279 ,279 ,279 ,2147483648 ,279 ,279 ,279 ,279 ,2147483648 ,2147483648 ,2147483648 ,279 ,279 ,279 ,279 ,279 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,279 ,279 ,2147483648 ,2147483648 ,279 ,2147483648 ,279 ,279 ,2147483648 ,2147483648 ,2147483648 ,279 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,279 ,279 ,2147483648 ,279 ,279 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,279 ,2147483648 ,2147483648 ,279 ,279 ,2147483648 ,279 ,279 ,279 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,279 ,279 ,2147483648 ,2147483648 ,279 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,2147483648 ,279 ,279 ,279 ,279 ,279 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,279 ,280 ,279 ,2147483648 ,279 ,279 ,279 ,2147483648 ,279 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,279 ,279 ,279 ,279 ,279 ,2147483648 ,279 ,279 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,196 ,196 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {199 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,200 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,201 ,201 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,254 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,254 ,2147483648 ,254 ,254 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
};
const char* KeywordList[]= {
"print",
@@ -1121,11 +1139,13 @@ const char* KeywordList[]= {
"event_trace_step_out",
"event_trace_instrumentation_step",
"event_trace_instrumentation_step_in",
+"lbr_check",
"rdtsc",
"rdtscp",
"lbr_save",
"lbr_dump",
"lbr_print",
+"lbr_restore",
"spinlock_lock_custom_wait",
"event_inject",
"poi",
@@ -1153,6 +1173,7 @@ const char* KeywordList[]= {
"dd_pa",
"dw_pa",
"dq_pa",
+"lbr_restore_by_filter",
"ed",
"eb",
"eq",
@@ -1177,6 +1198,7 @@ const char* KeywordList[]= {
"lbr_save",
"lbr_dump",
"lbr_print",
+"lbr_restore",
"poi",
"db",
"dd",
@@ -1202,6 +1224,7 @@ const char* KeywordList[]= {
"dd_pa",
"dw_pa",
"dq_pa",
+"lbr_restore_by_filter",
"ed",
"eb",
"eq",
@@ -1302,6 +1325,7 @@ const char* OneOpFunc1[] = {
"@DD_PA",
"@DW_PA",
"@DQ_PA",
+"@LBR_RESTORE_BY_FILTER",
};
const char* OneOpFunc2[] = {
"@PRINT",
@@ -1342,6 +1366,7 @@ const char* ZeroOpFunc1[] = {
"@EVENT_TRACE_STEP_OUT",
"@EVENT_TRACE_INSTRUMENTATION_STEP",
"@EVENT_TRACE_INSTRUMENTATION_STEP_IN",
+"@LBR_CHECK",
};
const char* ZeroOpFunc2[] = {
"@RDTSC",
@@ -1349,6 +1374,7 @@ const char* ZeroOpFunc2[] = {
"@LBR_SAVE",
"@LBR_DUMP",
"@LBR_PRINT",
+"@LBR_RESTORE",
};
const char* VarArgFunc1[] = {
"@PRINTF"
@@ -1407,11 +1433,13 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@EVENT_TRACE_STEP_OUT", FUNC_EVENT_TRACE_STEP_OUT},
{"@EVENT_TRACE_INSTRUMENTATION_STEP", FUNC_EVENT_TRACE_INSTRUMENTATION_STEP},
{"@EVENT_TRACE_INSTRUMENTATION_STEP_IN", FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN},
+{"@LBR_CHECK", FUNC_LBR_CHECK},
{"@RDTSC", FUNC_RDTSC},
{"@RDTSCP", FUNC_RDTSCP},
{"@LBR_SAVE", FUNC_LBR_SAVE},
{"@LBR_DUMP", FUNC_LBR_DUMP},
{"@LBR_PRINT", FUNC_LBR_PRINT},
+{"@LBR_RESTORE", FUNC_LBR_RESTORE},
{"@SPINLOCK_LOCK_CUSTOM_WAIT", FUNC_SPINLOCK_LOCK_CUSTOM_WAIT},
{"@EVENT_INJECT", FUNC_EVENT_INJECT},
{"@POI", FUNC_POI},
@@ -1439,6 +1467,7 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@DD_PA", FUNC_DD_PA},
{"@DW_PA", FUNC_DW_PA},
{"@DQ_PA", FUNC_DQ_PA},
+{"@LBR_RESTORE_BY_FILTER", FUNC_LBR_RESTORE_BY_FILTER},
{"@ED", FUNC_ED},
{"@EB", FUNC_EB},
{"@EQ", FUNC_EQ},
@@ -1463,6 +1492,7 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@LBR_SAVE", FUNC_LBR_SAVE},
{"@LBR_DUMP", FUNC_LBR_DUMP},
{"@LBR_PRINT", FUNC_LBR_PRINT},
+{"@LBR_RESTORE", FUNC_LBR_RESTORE},
{"@POI", FUNC_POI},
{"@DB", FUNC_DB},
{"@DD", FUNC_DD},
@@ -1488,6 +1518,7 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@DD_PA", FUNC_DD_PA},
{"@DW_PA", FUNC_DW_PA},
{"@DQ_PA", FUNC_DQ_PA},
+{"@LBR_RESTORE_BY_FILTER", FUNC_LBR_RESTORE_BY_FILTER},
{"@ED", FUNC_ED},
{"@EB", FUNC_EB},
{"@EQ", FUNC_EQ},
@@ -1762,9 +1793,6 @@ const struct _SCRIPT_ENGINE_TOKEN LalrLhs[RULES_COUNT]=
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
- {NON_TERMINAL, "E12"},
- {NON_TERMINAL, "E12"},
- {NON_TERMINAL, "E12"},
{NON_TERMINAL, "E13"},
{NON_TERMINAL, "VA2"},
{NON_TERMINAL, "VA2"},
@@ -1836,9 +1864,6 @@ const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "disassemble_len"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN"}},
{{KEYWORD, "disassemble_len32"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN32"}},
{{KEYWORD, "disassemble_len64"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN64"}},
- {{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_SAVE"}},
- {{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_DUMP"}},
- {{KEYWORD, "lbr_print"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_PRINT"}},
{{KEYWORD, "interlocked_increment"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"}},
{{KEYWORD, "interlocked_decrement"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"}},
{{KEYWORD, "reference"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@REFERENCE"}},
@@ -1963,9 +1988,6 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
5,
5,
5,
-5,
-5,
-5,
7,
7,
7,
@@ -2014,120 +2036,117 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
};
const char* LalrNoneTerminalMap[NONETERMINAL_COUNT]=
{
-"B6",
-"E10",
-"ARRAY2",
-"S",
-"VA3",
-"EXP",
-"VA2",
-"ARRAY3",
-"B2",
"STRING",
-"ARRAY4",
-"E3",
-"BE",
-"B3",
-"B4",
-"E5",
-"WSTRING",
+"E10",
"E12",
-"CMP",
-"E4",
-"ARRAY1",
-"StringNumber",
"WstringNumber",
+"EXP",
"E13",
+"VA3",
+"VA2",
+"B3",
"B1",
-"B5"
+"B2",
+"CMP",
+"WSTRING",
+"B5",
+"B6",
+"BE",
+"ARRAY4",
+"E5",
+"ARRAY1",
+"S",
+"StringNumber",
+"E3",
+"ARRAY3",
+"ARRAY2",
+"E4",
+"B4"
};
const char* LalrTerminalMap[TERMINAL_COUNT]=
{
-"disassemble_len",
-"ed",
-"hi_pa",
-",",
-"interlocked_exchange",
-"wcscmp",
-"reference",
-"dq_pa",
-"&",
-"(",
-"disassemble_len64",
-"virtual_to_physical",
-"ed_pa",
-"_binary",
-"db",
-"not",
-"interlocked_exchange_add",
-"wcsncmp",
-"_register",
-"+",
-"_octal",
-"dd_pa",
-"eb",
-"hi",
-"_hex",
-"<=",
-"poi",
-"disassemble_len32",
-")",
-"^",
-"_string",
-"_wstring",
-"<<",
-"eq",
-"eb_pa",
-"lbr_dump",
-"lbr_save",
-"_global_id",
-"strcmp",
-"-",
-"_decimal",
-"memcmp",
-"wcslen",
-"||",
+"%",
+"dd",
"dw",
+"not",
+"db",
+"dw_pa",
+"ed_pa",
+"_pseudo_register",
"]",
"eq_pa",
-">=",
-"db_pa",
-"$",
-"dq",
-"dw_pa",
-"_function_parameter_id",
-"strlen",
-">>",
-"_pseudo_register",
-"%",
-"lbr_print",
-"dd",
-"|",
-"strncmp",
-"~",
-"*",
-"neg",
-">",
-"[",
"poi_pa",
-"<",
-"&&",
-"interlocked_increment",
-"_local_id",
-"low_pa",
-"==",
-"interlocked_compare_exchange",
-"interlocked_decrement",
-"physical_to_virtual",
-"_function_id",
-"!=",
-"/",
"low",
-"check_address"
+"<=",
+"wcslen",
+"dq_pa",
+"*",
+"&",
+"eq",
+">>",
+"interlocked_exchange_add",
+"$",
+"+",
+"hi_pa",
+"reference",
+"(",
+"eb",
+"_wstring",
+"/",
+"~",
+"||",
+"<",
+"_hex",
+"&&",
+"interlocked_compare_exchange",
+"dq",
+")",
+"low_pa",
+"db_pa",
+">=",
+"hi",
+"wcscmp",
+"_function_parameter_id",
+">",
+"interlocked_exchange",
+"strlen",
+"poi",
+"interlocked_increment",
+"neg",
+"_decimal",
+"_octal",
+"dd_pa",
+"physical_to_virtual",
+"_global_id",
+"disassemble_len",
+"_binary",
+"^",
+"_local_id",
+"interlocked_decrement",
+"check_address",
+"_string",
+"disassemble_len32",
+"==",
+"strncmp",
+"_register",
+"disassemble_len64",
+"[",
+"!=",
+"virtual_to_physical",
+",",
+"<<",
+"|",
+"ed",
+"-",
+"_function_id",
+"wcsncmp",
+"memcmp",
+"strcmp",
+"eb_pa"
};
const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{
- {8 ,14 ,18 ,1 ,2147483648 ,10 ,2147483648 ,2147483648 ,4 ,2147483648 ,2147483648 ,11 ,2 ,5 ,6 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,3 ,7 },
+ {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,5 ,3 ,4 ,9 ,2147483648 ,7 ,8 ,2 ,2147483648 ,13 ,17 ,1 ,2147483648 ,11 ,2147483648 ,18 ,12 ,6 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2145,13 +2164,15 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2160,7 +2181,6 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2168,13 +2188,14 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,5 ,3 ,4 ,9 ,2147483648 ,7 ,8 ,122 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,6 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2183,100 +2204,95 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {8 ,14 ,18 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,4 ,2147483648 ,2147483648 ,11 ,134 ,5 ,6 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,3 ,7 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,5 ,2147483648 ,144 ,9 ,2147483648 ,7 ,8 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,6 },
+ {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,9 ,2147483648 ,7 ,8 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,6 },
+ {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,7 ,8 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,146 },
+ {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,147 ,8 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,149 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,150 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,151 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,152 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,153 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,154 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,155 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,156 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
+ {2147483648 ,159 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
+ {2147483648 ,160 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
+ {2147483648 ,161 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,162 ,16 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,166 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,167 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,168 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {170 ,14 ,15 ,2147483648 ,169 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,171 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,173 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,174 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,175 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,176 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,177 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,178 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,179 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,180 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,181 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,182 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,185 ,183 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,187 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,188 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,189 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,190 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {8 ,14 ,18 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,11 ,2147483648 ,5 ,6 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,7 },
- {8 ,14 ,18 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,151 ,6 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,7 },
- {8 ,14 ,18 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,152 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,7 },
- {8 ,14 ,18 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,153 },
- {154 ,14 ,18 ,2147483648 ,2147483648 ,10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,9 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,161 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,162 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,15 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,15 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,165 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,166 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,167 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,168 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,176 ,15 ,2147483648 ,12 ,17 ,2147483648 ,177 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {170 ,14 ,15 ,2147483648 ,191 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,192 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,193 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,194 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,196 ,195 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,187 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,198 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {170 ,14 ,15 ,2147483648 ,191 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,199 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,201 ,200 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {170 ,14 ,15 ,2147483648 ,191 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,202 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,203 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,204 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,176 ,15 ,2147483648 ,12 ,17 ,2147483648 ,196 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,200 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,202 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,203 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,204 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,205 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,206 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,207 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,208 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,209 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,210 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,211 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,212 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,205 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,206 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,207 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,208 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,209 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,210 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,211 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,212 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,213 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,214 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,214 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,215 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,215 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,216 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,217 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,216 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,217 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,219 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,176 ,15 ,2147483648 ,12 ,17 ,2147483648 ,221 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,223 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,225 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2292,12 +2308,12 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2349,64 +2365,64 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,267 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,268 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,280 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,176 ,15 ,2147483648 ,12 ,17 ,2147483648 ,281 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,282 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,269 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,270 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {170 ,14 ,15 ,2147483648 ,191 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,271 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,272 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,273 ,200 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,286 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,287 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {170 ,14 ,15 ,2147483648 ,191 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,274 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,275 ,200 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {170 ,14 ,15 ,2147483648 ,191 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,276 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,277 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,278 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,279 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,280 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,281 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,289 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,282 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,290 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,292 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,176 ,15 ,2147483648 ,12 ,17 ,2147483648 ,294 ,16 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2417,26 +2433,17 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,299 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,300 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,301 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,14 ,15 ,2147483648 ,302 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,311 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,312 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,313 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,18 ,2147483648 ,2147483648 ,314 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,13 ,2147483648 ,15 ,2147483648 ,12 ,17 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2449,325 +2456,313 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
};
const int LalrActionTable[LALR_STATE_COUNT][LALR_TERMINAL_COUNT]=
{
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,-13 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,87 ,2147483648 ,2147483648 ,84 ,-13 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,96 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,95 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,94 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-109 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,2147483648 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,2147483648 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,2147483648 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,2147483648 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,2147483648 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,2147483648 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,2147483648 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,2147483648 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,2147483648 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,2147483648 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,2147483648 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,2147483648 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,2147483648 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,2147483648 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,2147483648 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,-112 ,-112 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,-112 ,2147483648 ,-112 ,99 ,2147483648 ,-112 ,-112 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,-112 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,213 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,96 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,95 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,94 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,96 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,95 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,94 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,-112 ,-112 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,-112 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,-112 ,2147483648 ,-112 ,99 ,2147483648 ,-112 ,-112 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,-112 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,278 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,-96 ,-96 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,-96 ,2147483648 ,-96 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,-96 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,-96 ,2147483648 ,-96 ,2147483648 ,2147483648 ,-96 ,-96 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,-96 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,2147483648 ,-111 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,-111 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,-110 ,2147483648 ,-110 ,-110 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,-110 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,299 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,300 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,301 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,302 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,307 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,308 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,309 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,310 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 },
- {57 ,63 ,52 ,2147483648 ,45 ,72 ,30 ,24 ,69 ,60 ,58 ,56 ,61 ,62 ,78 ,65 ,42 ,23 ,26 ,70 ,75 ,55 ,51 ,47 ,49 ,2147483648 ,29 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,19 ,39 ,44 ,48 ,20 ,46 ,64 ,22 ,53 ,43 ,2147483648 ,68 ,2147483648 ,40 ,2147483648 ,50 ,2147483648 ,38 ,37 ,25 ,35 ,2147483648 ,67 ,2147483648 ,36 ,66 ,2147483648 ,71 ,41 ,33 ,77 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,32 ,28 ,54 ,2147483648 ,27 ,74 ,73 ,34 ,2147483648 ,2147483648 ,31 ,21 },
- {2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,315 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,316 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,317 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,318 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 }
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,84 ,2147483648 ,-13 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,83 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,88 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,87 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,-24 ,-24 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,93 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,2147483648 ,2147483648 ,39 ,2147483648 ,61 ,2147483648 ,2147483648 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,62 ,53 ,52 ,54 ,60 },
+ {-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,2147483648 ,2147483648 ,39 ,2147483648 ,61 ,2147483648 ,2147483648 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,2147483648 ,2147483648 ,39 ,2147483648 ,61 ,2147483648 ,2147483648 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,62 ,53 ,52 ,54 ,60 },
+ {-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-106 ,-85 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,2147483648 ,2147483648 ,39 ,2147483648 ,61 ,2147483648 ,2147483648 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,2147483648 ,2147483648 ,39 ,2147483648 ,61 ,2147483648 ,2147483648 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,-95 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,96 ,-109 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,186 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,186 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,186 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,-23 ,-23 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,-22 ,-22 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,93 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,93 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,96 ,-109 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,-105 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,186 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,186 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,286 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,289 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,290 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
+ {-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
};
const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{
@@ -2823,9 +2818,6 @@ const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{SEMANTIC_RULE, "@DISASSEMBLE_LEN"},
{SEMANTIC_RULE, "@DISASSEMBLE_LEN32"},
{SEMANTIC_RULE, "@DISASSEMBLE_LEN64"},
- {SEMANTIC_RULE, "@LBR_SAVE"},
- {SEMANTIC_RULE, "@LBR_DUMP"},
- {SEMANTIC_RULE, "@LBR_PRINT"},
{SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"},
{SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"},
{SEMANTIC_RULE, "@REFERENCE"},
diff --git a/hyperdbg/script-engine/header/parse-table.h b/hyperdbg/script-engine/header/parse-table.h
index 1767b1c8..ff25f3c5 100644
--- a/hyperdbg/script-engine/header/parse-table.h
+++ b/hyperdbg/script-engine/header/parse-table.h
@@ -1,24 +1,24 @@
#pragma once
#ifndef PARSE_TABLE_H
#define PARSE_TABLE_H
-#define RULES_COUNT 278
-#define TERMINAL_COUNT 125
+#define RULES_COUNT 283
+#define TERMINAL_COUNT 128
#define NONETERMINAL_COUNT 63
#define START_VARIABLE "S"
#define MAX_RHS_LEN 15
-#define KEYWORD_LIST_LENGTH 115
+#define KEYWORD_LIST_LENGTH 120
#define OPERATORS_ONE_OPERAND_LIST_LENGTH 3
#define OPERATORS_TWO_OPERAND_LIST_LENGTH 16
#define REGISTER_MAP_LIST_LENGTH 120
#define PSEUDO_REGISTER_MAP_LIST_LENGTH 16
#define SCRIPT_VARIABLE_TYPE_LIST_LENGTH 10
#define ASSIGNMENT_OPERATOR_LIST_LENGTH 10
-#define SEMANTIC_RULES_MAP_LIST_LENGTH 160
+#define SEMANTIC_RULES_MAP_LIST_LENGTH 165
#define THREEOPFUNC1_LENGTH 1
#define THREEOPFUNC2_LENGTH 3
#define TWOOPFUNC1_LENGTH 8
#define TWOOPFUNC2_LENGTH 2
-#define ONEOPFUNC1_LENGTH 25
+#define ONEOPFUNC1_LENGTH 26
#define ONEOPFUNC2_LENGTH 10
#define ONEOPFUNC3_LENGTH 1
#define TWOOPFUNC3_LENGTH 1
@@ -26,8 +26,8 @@
#define THREEOPFUNC4_LENGTH 1
#define ONEOPFUNC4_LENGTH 1
#define TWOOPFUNC4_LENGTH 1
-#define ZEROOPFUNC1_LENGTH 7
-#define ZEROOPFUNC2_LENGTH 5
+#define ZEROOPFUNC1_LENGTH 8
+#define ZEROOPFUNC2_LENGTH 6
#define VARARGFUNC1_LENGTH 1
extern const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT];
extern const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN];
@@ -60,11 +60,11 @@ extern const SYMBOL_MAP PseudoRegisterMapList[];
extern const char* ScriptVariableTypeList[];
-#define LALR_RULES_COUNT 112
-#define LALR_TERMINAL_COUNT 81
+#define LALR_RULES_COUNT 109
+#define LALR_TERMINAL_COUNT 78
#define LALR_NONTERMINAL_COUNT 26
#define LALR_MAX_RHS_LEN 9
-#define LALR_STATE_COUNT 319
+#define LALR_STATE_COUNT 307
extern const struct _SCRIPT_ENGINE_TOKEN LalrLhs[RULES_COUNT];
extern const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN];
extern const unsigned int LalrRhsSize[RULES_COUNT];
diff --git a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
index ae25c1ea..494b36fd 100644
--- a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
+++ b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
@@ -1,5 +1,5 @@
# OneOpFunc1 input is a number and returns a number.
-.OneOpFunc1->poi db dd dw dq neg hi low not check_address strlen wcslen disassemble_len disassemble_len32 disassemble_len64 lbr_save lbr_dump lbr_print interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa
+.OneOpFunc1->poi db dd dw dq neg hi low not check_address strlen wcslen disassemble_len disassemble_len32 disassemble_len64 interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa
# TwoOpFunc1 inputs are two numbers and returns a number.
.TwoOpFunc1->ed eb eq interlocked_exchange interlocked_exchange_add wcscmp eb_pa ed_pa eq_pa
diff --git a/hyperdbg/script-engine/python/Grammar.txt b/hyperdbg/script-engine/python/Grammar.txt
index 8420e68d..d96e6e99 100644
--- a/hyperdbg/script-engine/python/Grammar.txt
+++ b/hyperdbg/script-engine/python/Grammar.txt
@@ -11,7 +11,7 @@
.TwoOpFunc2->spinlock_lock_custom_wait event_inject
# OneOpFunc1 input is a number and returns a number.
-.OneOpFunc1->poi db dd dw dq neg hi low not check_address disassemble_len disassemble_len32 disassemble_len64 interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa
+.OneOpFunc1->poi db dd dw dq neg hi low not check_address disassemble_len disassemble_len32 disassemble_len64 interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa lbr_restore_by_filter
# OneOpFunc2 input is a number.
.OneOpFunc2->print formats event_enable event_disable event_clear test_statement spinlock_lock spinlock_unlock event_sc microsleep
@@ -35,10 +35,10 @@
# TwoOpFunc4 the two inputs are numbers or wstrings and returns a number.
.TwoOpFunc4->wcscmp
-.ZeroOpFunc1->pause flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in
+.ZeroOpFunc1->pause flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in lbr_check
# ZeroOpFunc2 no input and returns a number
-.ZeroOpFunc2->rdtsc rdtscp lbr_save lbr_dump lbr_print
+.ZeroOpFunc2->rdtsc rdtscp lbr_save lbr_dump lbr_print lbr_restore
.VarArgFunc1->printf
diff --git a/hyperdbg/script-eval/code/Functions.c b/hyperdbg/script-eval/code/Functions.c
index 6da2837d..46562663 100644
--- a/hyperdbg/script-eval/code/Functions.c
+++ b/hyperdbg/script-eval/code/Functions.c
@@ -2089,3 +2089,43 @@ ScriptEngineFunctionLbrCheck()
#endif // SCRIPT_ENGINE_KERNEL_MODE
}
+
+/**
+ * @brief Implementation of lbr_restore function
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+ScriptEngineFunctionLbrRestore()
+{
+#ifdef SCRIPT_ENGINE_USER_MODE
+ ShowMessages("err, it's not possible to call lbr_restore function in the user-mode\n");
+ return FALSE;
+#endif // SCRIPT_ENGINE_USER_MODE
+
+#ifdef SCRIPT_ENGINE_KERNEL_MODE
+
+ return HyperTraceLbrRestore();
+
+#endif // SCRIPT_ENGINE_KERNEL_MODE
+}
+
+/**
+ * @brief Implementation of lbr_restore_by_filter function
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+ScriptEngineFunctionLbrRestoreByFilter(UINT64 FilterOptions)
+{
+#ifdef SCRIPT_ENGINE_USER_MODE
+ ShowMessages("err, it's not possible to call lbr_restore_by_filter function in the user-mode\n");
+ return FALSE;
+#endif // SCRIPT_ENGINE_USER_MODE
+
+#ifdef SCRIPT_ENGINE_KERNEL_MODE
+
+ return HyperTraceLbrRestoreByFilter(FilterOptions);
+
+#endif // SCRIPT_ENGINE_KERNEL_MODE
+}
diff --git a/hyperdbg/script-eval/code/ScriptEngineEval.c b/hyperdbg/script-eval/code/ScriptEngineEval.c
index c228b908..878f35e4 100644
--- a/hyperdbg/script-eval/code/ScriptEngineEval.c
+++ b/hyperdbg/script-eval/code/ScriptEngineEval.c
@@ -736,6 +736,13 @@ ScriptEngineExecute(PGUEST_REGS GuestRegs,
GuestRegs);
break;
+ case FUNC_LBR_CHECK:
+
+ //
+ // To be implemented!
+ //
+ break;
+
case FUNC_LBR_SAVE:
Des = (PSYMBOL)((unsigned long long)CodeBuffer->Head +
@@ -759,6 +766,36 @@ ScriptEngineExecute(PGUEST_REGS GuestRegs,
SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
break;
+ case FUNC_LBR_RESTORE:
+
+ Des = (PSYMBOL)((unsigned long long)CodeBuffer->Head +
+ (unsigned long long)(*Indx * sizeof(SYMBOL)));
+ *Indx = *Indx + 1;
+
+ DesVal = ScriptEngineFunctionLbrRestore();
+
+ SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
+ break;
+
+ case FUNC_LBR_RESTORE_BY_FILTER:
+
+ Src0 = (PSYMBOL)((unsigned long long)CodeBuffer->Head +
+ (unsigned long long)(*Indx * sizeof(SYMBOL)));
+ *Indx = *Indx + 1;
+
+ SrcVal0 =
+ GetValue(GuestRegs, ActionDetail, ScriptGeneralRegisters, Src0, FALSE);
+
+ Des = (PSYMBOL)((unsigned long long)CodeBuffer->Head +
+ (unsigned long long)(*Indx * sizeof(SYMBOL)));
+ *Indx = *Indx + 1;
+
+ DesVal = ScriptEngineFunctionLbrRestoreByFilter((unsigned long long)SrcVal0);
+
+ SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
+
+ break;
+
case FUNC_FLUSH:
ScriptEngineFunctionFlush();
diff --git a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
index 77c4337a..4fa7e15f 100644
--- a/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
+++ b/hyperdbg/script-eval/header/ScriptEngineInternalHeader.h
@@ -272,6 +272,12 @@ ScriptEngineFunctionLbrPrint();
BOOLEAN
ScriptEngineFunctionLbrCheck();
+BOOLEAN
+ScriptEngineFunctionLbrRestore();
+
+BOOLEAN
+ScriptEngineFunctionLbrRestoreByFilter(UINT64 FilterOptions);
+
UINT64
ScriptEngineFunctionStrcmp(const char * Address1, const char * Address2);
From 686e445c9b08aeb07f1df6eb68a7c8133879f9a6 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 25 May 2026 15:29:42 +0200
Subject: [PATCH 186/323] fix LBR filter issue and dumping message format
---
hyperdbg/hypertrace/code/api/LbrApi.c | 4 ++++
hyperdbg/hypertrace/code/lbr/Lbr.c | 16 ++++++++--------
.../commands/extension-commands/lbrdump.cpp | 16 ++++++++--------
3 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index a9803d92..11001da0 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -510,9 +510,13 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
HyperTraceLbrUpdateFilterOptions(LbrOperationRequest);
+ break;
+
default:
+
Status = FALSE;
LbrOperationRequest->KernelStatus = DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE;
+
break;
}
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 31a43275..7a566c90 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -1149,15 +1149,15 @@ LbrGetArchBranchTypet(UINT32 BrType, CHAR * BrTypeName)
{
if (BrType == LBR_BR_TYPE_COND)
{
- strncpy(BrTypeName, "COND", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "COND ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else if (BrType == LBR_BR_TYPE_JMP_INDIRECT)
{
- strncpy(BrTypeName, "JMP Indirect", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "JMP Indirect ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else if (BrType == LBR_BR_TYPE_JMP_DIRECT)
{
- strncpy(BrTypeName, "JMP Direct", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "JMP Direct ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else if (BrType == LBR_BR_TYPE_CALL_INDIRECT)
{
@@ -1165,23 +1165,23 @@ LbrGetArchBranchTypet(UINT32 BrType, CHAR * BrTypeName)
}
else if (BrType == LBR_BR_TYPE_CALL_DIRECT)
{
- strncpy(BrTypeName, "CALL Direct", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "CALL Direct ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else if (BrType == LBR_BR_TYPE_RET)
{
- strncpy(BrTypeName, "RET", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "RET ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else if (BrType >= LBR_BR_TYPE_RESERVED_MIN && BrType <= LBR_BR_TYPE_RESERVED_MAX)
{
- strncpy(BrTypeName, "Reserved", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "Reserved ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else if (BrType >= LBR_BR_TYPE_OTHER_MIN && BrType <= LBR_BR_TYPE_OTHER_MAX)
{
- strncpy(BrTypeName, "Other Branch", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "Other Branch ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else
{
- strncpy(BrTypeName, "Unknown", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "Unknown ", LBR_BR_TYPE_NAME_MAX_LEN);
}
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
index 372e11cc..13811d0a 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
@@ -103,15 +103,15 @@ CommandLbrdumpGetArchBranchTypet(UINT32 BrType, CHAR * BrTypeName)
{
if (BrType == LBR_BR_TYPE_COND)
{
- strncpy(BrTypeName, "COND", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "COND ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else if (BrType == LBR_BR_TYPE_JMP_INDIRECT)
{
- strncpy(BrTypeName, "JMP Indirect", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "JMP Indirect ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else if (BrType == LBR_BR_TYPE_JMP_DIRECT)
{
- strncpy(BrTypeName, "JMP Direct", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "JMP Direct ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else if (BrType == LBR_BR_TYPE_CALL_INDIRECT)
{
@@ -119,23 +119,23 @@ CommandLbrdumpGetArchBranchTypet(UINT32 BrType, CHAR * BrTypeName)
}
else if (BrType == LBR_BR_TYPE_CALL_DIRECT)
{
- strncpy(BrTypeName, "CALL Direct", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "CALL Direct ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else if (BrType == LBR_BR_TYPE_RET)
{
- strncpy(BrTypeName, "RET", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "RET ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else if (BrType >= LBR_BR_TYPE_RESERVED_MIN && BrType <= LBR_BR_TYPE_RESERVED_MAX)
{
- strncpy(BrTypeName, "Reserved", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "Reserved ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else if (BrType >= LBR_BR_TYPE_OTHER_MIN && BrType <= LBR_BR_TYPE_OTHER_MAX)
{
- strncpy(BrTypeName, "Other Branch", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "Other Branch ", LBR_BR_TYPE_NAME_MAX_LEN);
}
else
{
- strncpy(BrTypeName, "Unknown", LBR_BR_TYPE_NAME_MAX_LEN);
+ strncpy(BrTypeName, "Unknown ", LBR_BR_TYPE_NAME_MAX_LEN);
}
}
From a8f259fbad21ca5fe1e8a818eded11ca5aea5138 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 25 May 2026 16:26:26 +0200
Subject: [PATCH 187/323] fix #587 to add functions with no input and return a
number
---
CHANGELOG.md | 4 +-
.../hwdbg/script/script_definitions.scala | 2 +-
.../headers/ScriptEngineCommonDefinitions.h | 16 +-
hyperdbg/script-engine/code/parse-table.c | 1573 +++++++++--------
hyperdbg/script-engine/header/parse-table.h | 16 +-
.../python/Boolean_Expression_Grammar.txt | 7 +-
hyperdbg/script-engine/python/Grammar.txt | 4 +-
hyperdbg/script-eval/code/ScriptEngineEval.c | 15 +-
8 files changed, 873 insertions(+), 764 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ff9f4cf6..8cf3414b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,9 +14,11 @@ New release of the HyperDbg Debugger.
- Added Architectural LBR support to the HyperTrace module
- Added the '!lbr' command for performing different Last Branch Record (LBR) operations ([link](https://docs.hyperdbg.org/commands/extension-commands/lbr))
- Added the '!lbrdump' command for dumping saved Last Branch Record (LBR) entries ([link](https://docs.hyperdbg.org/commands/extension-commands/lbrdmp))
-- Added **lbr_save()** and **lbr_print()** functions in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr_save))([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr_print))
+- Added **lbr_save()** and **lbr_print()** functions in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr/lbr_save))([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr/lbr_print))
- Added mock application for compiling SDK for Linux
- Add '!help' alias for the '.help' command
+- Added **lbr_check()** and **lbr_restore()** functions in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr/lbr_check))([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr/lbr_restore))
+- Added **lbr_restore_by_filter(filter)** function in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr/lbr_restore_by_filter))
### Changed
- Fix the problem of not applying the EAX index in the CPUID event extension command ([link](https://docs.hyperdbg.org/commands/extension-commands/cpuid#parameters))
diff --git a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
index 5cb71649..5471e834 100644
--- a/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
+++ b/hwdbg/src/main/scala/hwdbg/script/script_definitions.scala
@@ -45,6 +45,6 @@ object ScriptConstantTypes {
object ScriptEvalFunc {
object ScriptOperators extends ChiselEnum {
- val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncLbr_check, sFuncRdtsc, sFuncRdtscp, sFuncLbr_save, sFuncLbr_dump, sFuncLbr_print, sFuncLbr_restore, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncLbr_restore_by_filter, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
+ val sFuncUndefined, sFuncInc, sFuncDec, sFuncReference, sFuncOr, sFuncXor, sFuncAnd, sFuncAsr, sFuncAsl, sFuncAdd, sFuncSub, sFuncMul, sFuncDiv, sFuncMod, sFuncGt, sFuncLt, sFuncEgt, sFuncElt, sFuncEqual, sFuncNeq, sFuncJmp, sFuncJz, sFuncJnz, sFuncMov, sFuncStart_of_do_while, sFuncStart_of_do_while_commands, sFuncEnd_of_do_while, sFuncStart_of_for, sFuncFor_inc_dec, sFuncStart_of_for_ommands, sFuncEnd_of_if, sFuncIgnore_lvalue, sFuncPush, sFuncPop, sFuncCall, sFuncRet, sFuncPrint, sFuncFormats, sFuncEvent_enable, sFuncEvent_disable, sFuncEvent_clear, sFuncTest_statement, sFuncSpinlock_lock, sFuncSpinlock_unlock, sFuncEvent_sc, sFuncMicrosleep, sFuncPrintf, sFuncPause, sFuncFlush, sFuncEvent_trace_step, sFuncEvent_trace_step_in, sFuncEvent_trace_step_out, sFuncEvent_trace_instrumentation_step, sFuncEvent_trace_instrumentation_step_in, sFuncRdtsc, sFuncRdtscp, sFuncLbr_save, sFuncLbr_dump, sFuncLbr_print, sFuncLbr_restore, sFuncLbr_check, sFuncSpinlock_lock_custom_wait, sFuncEvent_inject, sFuncPoi, sFuncDb, sFuncDd, sFuncDw, sFuncDq, sFuncNeg, sFuncHi, sFuncLow, sFuncNot, sFuncCheck_address, sFuncDisassemble_len, sFuncDisassemble_len32, sFuncDisassemble_len64, sFuncInterlocked_increment, sFuncInterlocked_decrement, sFuncPhysical_to_virtual, sFuncVirtual_to_physical, sFuncPoi_pa, sFuncHi_pa, sFuncLow_pa, sFuncDb_pa, sFuncDd_pa, sFuncDw_pa, sFuncDq_pa, sFuncLbr_restore_by_filter, sFuncEd, sFuncEb, sFuncEq, sFuncInterlocked_exchange, sFuncInterlocked_exchange_add, sFuncEb_pa, sFuncEd_pa, sFuncEq_pa, sFuncInterlocked_compare_exchange, sFuncStrlen, sFuncStrcmp, sFuncMemcmp, sFuncStrncmp, sFuncWcslen, sFuncWcscmp, sFuncEvent_inject_error_code, sFuncMemcpy, sFuncMemcpy_pa, sFuncWcsncmp = Value
}
}
\ No newline at end of file
diff --git a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
index 38d28961..2a8f16fb 100644
--- a/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
+++ b/hyperdbg/include/SDK/headers/ScriptEngineCommonDefinitions.h
@@ -148,13 +148,13 @@ static const char *const SymbolTypeNames[] = {
#define FUNC_EVENT_TRACE_STEP_OUT 51
#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP 52
#define FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN 53
-#define FUNC_LBR_CHECK 54
-#define FUNC_RDTSC 55
-#define FUNC_RDTSCP 56
-#define FUNC_LBR_SAVE 57
-#define FUNC_LBR_DUMP 58
-#define FUNC_LBR_PRINT 59
-#define FUNC_LBR_RESTORE 60
+#define FUNC_RDTSC 54
+#define FUNC_RDTSCP 55
+#define FUNC_LBR_SAVE 56
+#define FUNC_LBR_DUMP 57
+#define FUNC_LBR_PRINT 58
+#define FUNC_LBR_RESTORE 59
+#define FUNC_LBR_CHECK 60
#define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 61
#define FUNC_EVENT_INJECT 62
#define FUNC_POI 63
@@ -257,13 +257,13 @@ static const char *const FunctionNames[] = {
"FUNC_EVENT_TRACE_STEP_OUT",
"FUNC_EVENT_TRACE_INSTRUMENTATION_STEP",
"FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN",
-"FUNC_LBR_CHECK",
"FUNC_RDTSC",
"FUNC_RDTSCP",
"FUNC_LBR_SAVE",
"FUNC_LBR_DUMP",
"FUNC_LBR_PRINT",
"FUNC_LBR_RESTORE",
+"FUNC_LBR_CHECK",
"FUNC_SPINLOCK_LOCK_CUSTOM_WAIT",
"FUNC_EVENT_INJECT",
"FUNC_POI",
diff --git a/hyperdbg/script-engine/code/parse-table.c b/hyperdbg/script-engine/code/parse-table.c
index 3e42b0b3..d5ae0383 100644
--- a/hyperdbg/script-engine/code/parse-table.c
+++ b/hyperdbg/script-engine/code/parse-table.c
@@ -254,6 +254,7 @@ const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
{NON_TERMINAL, "ARRAY_DIMS_READ_OPT"},
{NON_TERMINAL, "ARRAY_DIMS_READ_OPT"},
{NON_TERMINAL, "ARRAY_DIMS_READ"},
@@ -378,13 +379,13 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "event_trace_step_out"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_STEP_OUT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_instrumentation_step"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_INSTRUMENTATION_STEP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_trace_instrumentation_step_in"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_INSTRUMENTATION_STEP_IN"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "lbr_check"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_CHECK"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "rdtsc"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSC"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "rdtscp"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@RDTSCP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_SAVE"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_DUMP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "lbr_print"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_PRINT"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "lbr_restore"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_RESTORE"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "lbr_check"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_CHECK"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
{{KEYWORD, "spinlock_lock_custom_wait"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@SPINLOCK_LOCK_CUSTOM_WAIT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "event_inject"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_INJECT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
@@ -495,6 +496,7 @@ const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_DUMP"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "lbr_print"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_PRINT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "lbr_restore"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_RESTORE"},{SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "lbr_check"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@LBR_CHECK"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "db"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DB"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "dd"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DD"},{SPECIAL_TOKEN, ")"}},
@@ -664,7 +666,7 @@ const unsigned int RhsSize[RULES_COUNT]=
4,
4,
4,
-4,
+5,
5,
5,
5,
@@ -781,6 +783,7 @@ const unsigned int RhsSize[RULES_COUNT]=
4,
4,
4,
+4,
5,
5,
5,
@@ -859,266 +862,266 @@ const unsigned int RhsSize[RULES_COUNT]=
};
const char* NoneTerminalMap[NONETERMINAL_COUNT]=
{
-"INC_DEC",
-"RETURN",
-"VARIABLE_TYPE2",
-"ELSE_STATEMENT",
-"VARIABLE_TYPE4",
-"STRING",
-"EXPRESSION",
-"E12",
-"ARRAY_DIMS_WRITE",
-"WstringNumber",
-"STATEMENT",
-"ARRAY_DIMS_READ",
-"E2",
-"INIT_LIST_TAIL",
-"SIMPLE_ASSIGNMENT",
-"E2'",
-"ARRAY_DIMS_WRITE2",
-"WHILE_STATEMENT",
-"E4",
-"VA3",
-"ELSIF_STATEMENT'",
-"VA2",
-"ARRAY_DIMS_WRITE_OPT",
-"ARRAY_INIT",
-"MULTIPLE_ASSIGNMENT",
-"E1",
-"BOOLEAN_EXPRESSION",
-"L_VALUE",
-"ASSIGNMENT_STATEMENT'",
-"END_OF_IF",
-"S2",
"FOR_STATEMENT",
-"E3'",
-"CALL_FUNC_STATEMENT",
-"WSTRING",
-"VA",
-"DO_WHILE_STATEMENT",
-"E1'",
+"MULTIPLE_ASSIGNMENT2",
"STATEMENT2",
-"ARRAY_DIMS_READ2",
-"ARRAY_DIMS2",
-"ARRAY_DIMS",
-"INIT_ITEM",
-"VARIABLE_TYPE1",
+"E2'",
+"WSTRING",
+"StringNumber",
+"ASSIGNMENT_STATEMENT",
+"CONST_NUMBER",
"INIT_LIST",
"IF_STATEMENT",
-"ELSIF_STATEMENT",
-"VARIABLE_TYPE3",
-"CONST_NUMBER",
-"E5",
-"INIT_LIST_CONT",
-"S",
-"INC_DEC'",
-"StringNumber",
-"E3",
-"E4'",
-"ASSIGNMENT_STATEMENT",
-"E5'",
-"VARIABLE_TYPE6",
+"END_OF_IF",
+"BOOLEAN_EXPRESSION",
"E0'",
+"ARRAY_DIMS_WRITE_OPT",
+"E2",
+"VARIABLE_TYPE2",
"VARIABLE_TYPE5",
-"MULTIPLE_ASSIGNMENT2",
-"ARRAY_DIMS_READ_OPT"
+"INIT_ITEM",
+"ARRAY_DIMS_WRITE2",
+"WHILE_STATEMENT",
+"MULTIPLE_ASSIGNMENT",
+"VARIABLE_TYPE6",
+"S",
+"INC_DEC",
+"ARRAY_DIMS_READ2",
+"L_VALUE",
+"ARRAY_INIT",
+"ARRAY_DIMS_READ_OPT",
+"VARIABLE_TYPE3",
+"SIMPLE_ASSIGNMENT",
+"E3",
+"STRING",
+"STATEMENT",
+"INC_DEC'",
+"ASSIGNMENT_STATEMENT'",
+"ELSIF_STATEMENT",
+"ELSE_STATEMENT",
+"E1'",
+"VARIABLE_TYPE4",
+"CALL_FUNC_STATEMENT",
+"WstringNumber",
+"E5",
+"E4",
+"EXPRESSION",
+"INIT_LIST_CONT",
+"E5'",
+"DO_WHILE_STATEMENT",
+"VARIABLE_TYPE1",
+"E12",
+"ARRAY_DIMS",
+"VA3",
+"VA",
+"ARRAY_DIMS2",
+"E4'",
+"RETURN",
+"ARRAY_DIMS_WRITE",
+"E1",
+"ELSIF_STATEMENT'",
+"VA2",
+"ARRAY_DIMS_READ",
+"INIT_LIST_TAIL",
+"E3'",
+"S2"
};
const char* TerminalMap[TERMINAL_COUNT]=
{
-"%",
-"dd",
-"dw",
-"not",
-"memcpy_pa",
-"db",
-"dw_pa",
-"ed_pa",
-"_pseudo_register",
-"break",
-"]",
-"=",
-"eq_pa",
-"poi_pa",
-"lbr_restore",
-"low",
-"wcslen",
-"|=",
-"spinlock_unlock",
-"spinlock_lock_custom_wait",
-"test_statement",
-"elsif",
-"{",
-"dq_pa",
-"lbr_save",
-"*=",
-"}",
-"*",
-"^=",
-"&",
-"eq",
-"event_enable",
-"do",
-">>",
-"rdtsc",
-"%=",
-"interlocked_exchange_add",
-"$",
-";",
-"printf",
-"+",
-"hi_pa",
-"event_inject_error_code",
-"reference",
-"(",
-"return",
-"eb",
-"_wstring",
-"/",
-"~",
-"for",
-"+=",
-"formats",
-"_hex",
-"_script_variable_type",
-"++",
-"interlocked_compare_exchange",
-"dq",
-"-=",
-")",
-"low_pa",
-"db_pa",
-"pause",
-"hi",
-"rdtscp",
-"wcscmp",
-"/=",
-"_function_parameter_id",
-"spinlock_lock",
-"event_disable",
-"event_trace_instrumentation_step",
-"lbr_check",
-"interlocked_exchange",
-"strlen",
-"else",
-"#include",
-"poi",
-"print",
-"interlocked_increment",
-"event_trace_step_in",
-"&=",
-"neg",
"memcpy",
-"<<=",
-"_decimal",
-"microsleep",
-"flush",
-"_octal",
-">>=",
-"dd_pa",
-"lbr_restore_by_filter",
-"physical_to_virtual",
-"_global_id",
-"disassemble_len",
-"while",
-"_binary",
-"^",
-"continue",
-"if",
-"_local_id",
-"event_trace_step_out",
-"event_clear",
-"interlocked_decrement",
+"print",
+"hi",
+"dq",
"check_address",
-"_string",
-"disassemble_len32",
-"event_trace_instrumentation_step_in",
-"strncmp",
-"lbr_dump",
-"_register",
-"[",
-"disassemble_len64",
-",",
-"virtual_to_physical",
-"<<",
-"|",
-"ed",
-"-",
-"lbr_print",
-"_function_id",
-"wcsncmp",
-"memcmp",
"event_sc",
-"strcmp",
+"interlocked_increment",
+"_string",
+">>=",
+"virtual_to_physical",
+"++",
+"rdtsc",
+"[",
+"_octal",
+"^=",
+"}",
+"event_disable",
+"memcpy_pa",
+"-=",
+"^",
+"low_pa",
+"_wstring",
+"db_pa",
+"(",
"eb_pa",
+"do",
+"|",
+"/=",
+"=",
+"pause",
+"interlocked_decrement",
+"eb",
+"lbr_restore",
+"--",
+"while",
+"{",
+"interlocked_exchange",
+"continue",
+"event_trace_step_in",
+"%=",
+"test_statement",
+"_local_id",
+"rdtscp",
+"_binary",
+"*",
+"event_clear",
+"formats",
"event_inject",
+"reference",
+"hi_pa",
+"wcscmp",
+"lbr_check",
+"/",
+"_function_id",
+"low",
+"dw_pa",
+"lbr_dump",
+"else",
+"_register",
+"]",
+"wcslen",
+"if",
+"-",
+"&",
+"~",
+"break",
+"for",
+"event_inject_error_code",
+"<<",
+"lbr_restore_by_filter",
+"interlocked_compare_exchange",
+"%",
+"lbr_print",
+"flush",
+"$",
+"strncmp",
+"poi",
+"_decimal",
+"dd",
+"db",
+"strlen",
+"disassemble_len64",
+"return",
+"+=",
+",",
+"strcmp",
+"eq_pa",
+"lbr_save",
+"#include",
+"disassemble_len32",
+"dq_pa",
+"ed_pa",
+"|=",
+"memcmp",
+"spinlock_lock_custom_wait",
+"ed",
+"_pseudo_register",
+"spinlock_lock",
+"eq",
+"dw",
+";",
+"interlocked_exchange_add",
+"wcsncmp",
+"+",
+"event_trace_instrumentation_step",
+"<<=",
+"not",
+"poi_pa",
+"event_trace_step_out",
+"physical_to_virtual",
+"elsif",
+"_global_id",
+"_script_variable_type",
+"*=",
+")",
+"event_trace_instrumentation_step_in",
+"spinlock_unlock",
+"disassemble_len",
+"neg",
+"&=",
"event_trace_step",
-"--"
+"_hex",
+"printf",
+"dd_pa",
+"event_enable",
+"microsleep",
+"_function_parameter_id",
+">>"
};
const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]=
{
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,28 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,2147483648 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,2147483648 ,2147483648 ,152 ,152 ,152 ,2147483648 ,152 ,2147483648 ,152 ,152 ,2147483648 ,152 ,2147483648 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,152 ,2147483648 ,152 ,2147483648 ,152 ,152 ,2147483648 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,151 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,2147483648 ,2147483648 ,152 ,152 ,2147483648 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,2147483648 ,152 ,2147483648 ,2147483648 ,152 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,210 ,211 ,216 ,2147483648 ,209 ,231 ,240 ,263 ,2147483648 ,2147483648 ,2147483648 ,241 ,226 ,207 ,215 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,204 ,2147483648 ,2147483648 ,267 ,2147483648 ,268 ,236 ,2147483648 ,2147483648 ,2147483648 ,202 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,265 ,227 ,2147483648 ,223 ,250 ,2147483648 ,235 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,242 ,212 ,2147483648 ,2147483648 ,228 ,229 ,2147483648 ,214 ,203 ,248 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,237 ,243 ,2147483648 ,2147483648 ,208 ,2147483648 ,221 ,2147483648 ,2147483648 ,213 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,262 ,2147483648 ,230 ,233 ,224 ,251 ,218 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,222 ,217 ,2147483648 ,219 ,2147483648 ,246 ,205 ,251 ,2147483648 ,220 ,2147483648 ,225 ,2147483648 ,2147483648 ,234 ,264 ,206 ,252 ,249 ,245 ,2147483648 ,244 ,239 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,281 ,281 ,281 ,2147483648 ,281 ,281 ,281 ,281 ,2147483648 ,2147483648 ,2147483648 ,281 ,281 ,281 ,281 ,281 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,281 ,281 ,2147483648 ,2147483648 ,281 ,2147483648 ,281 ,281 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,281 ,2147483648 ,2147483648 ,2147483648 ,281 ,281 ,2147483648 ,281 ,281 ,2147483648 ,281 ,282 ,2147483648 ,281 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,281 ,281 ,2147483648 ,2147483648 ,281 ,281 ,2147483648 ,281 ,281 ,281 ,2147483648 ,281 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,281 ,281 ,2147483648 ,2147483648 ,281 ,2147483648 ,281 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,281 ,2147483648 ,281 ,281 ,281 ,281 ,281 ,2147483648 ,281 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,281 ,281 ,2147483648 ,281 ,2147483648 ,281 ,281 ,281 ,2147483648 ,281 ,2147483648 ,281 ,2147483648 ,2147483648 ,281 ,281 ,281 ,281 ,281 ,281 ,2147483648 ,281 ,281 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,10 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,7 ,2147483648 ,2147483648 ,9 ,9 ,5 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,6 ,2147483648 ,9 ,2147483648 ,12 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,7 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,13 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,9 ,9 ,7 ,9 ,4 ,2147483648 ,2147483648 ,11 ,3 ,7 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,7 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,8 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,278 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 },
- {2147483648 ,276 ,276 ,276 ,2147483648 ,276 ,276 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,276 ,276 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,276 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,275 ,276 ,276 ,2147483648 ,276 ,276 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,2147483648 ,276 ,276 ,276 ,276 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,276 ,2147483648 ,276 ,2147483648 ,276 ,276 ,276 ,2147483648 ,276 ,2147483648 ,276 ,2147483648 ,2147483648 ,276 ,276 ,276 ,276 ,276 ,276 ,2147483648 ,276 ,276 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,60 ,2147483648 ,2147483648 ,64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 },
- {2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,2147483648 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,2147483648 ,2147483648 ,153 ,153 ,153 ,2147483648 ,153 ,2147483648 ,153 ,153 ,2147483648 ,153 ,2147483648 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,2147483648 ,2147483648 ,2147483648 ,153 ,2147483648 ,153 ,2147483648 ,153 ,2147483648 ,153 ,153 ,2147483648 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,2147483648 ,2147483648 ,153 ,153 ,2147483648 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,2147483648 ,153 ,2147483648 ,2147483648 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 },
- {2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,15 ,14 ,14 ,2147483648 ,16 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,190 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,191 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,102 ,103 ,108 ,143 ,101 ,123 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,118 ,97 ,107 ,139 ,2147483648 ,80 ,98 ,78 ,2147483648 ,2147483648 ,124 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,75 ,2147483648 ,2147483648 ,92 ,2147483648 ,130 ,2147483648 ,2147483648 ,83 ,2147483648 ,119 ,141 ,115 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,134 ,104 ,2147483648 ,2147483648 ,120 ,121 ,84 ,106 ,93 ,140 ,2147483648 ,2147483648 ,79 ,76 ,89 ,91 ,129 ,135 ,2147483648 ,2147483648 ,100 ,73 ,113 ,87 ,2147483648 ,105 ,142 ,2147483648 ,2147483648 ,82 ,85 ,2147483648 ,2147483648 ,122 ,125 ,116 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,77 ,114 ,109 ,2147483648 ,111 ,90 ,138 ,95 ,2147483648 ,2147483648 ,112 ,2147483648 ,117 ,2147483648 ,2147483648 ,126 ,2147483648 ,96 ,2147483648 ,144 ,137 ,81 ,136 ,131 ,99 ,86 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,24 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,21 ,2147483648 ,2147483648 ,23 ,23 ,19 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,27 ,23 ,2147483648 ,2147483648 ,2147483648 ,20 ,2147483648 ,23 ,2147483648 ,26 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,21 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,23 ,23 ,21 ,23 ,18 ,2147483648 ,2147483648 ,25 ,17 ,21 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,21 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,22 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 },
- {257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,257 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,257 ,2147483648 ,257 ,257 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,42 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,148 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,197 ,197 ,197 ,2147483648 ,197 ,197 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,197 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,197 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,197 ,197 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,197 ,197 ,197 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,197 ,2147483648 ,197 ,197 ,197 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,197 ,197 ,197 ,197 ,197 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,47 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,1 ,0 ,0 ,2147483648 ,2 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,161 ,2147483648 ,2147483648 ,165 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 },
- {2147483648 ,279 ,279 ,279 ,2147483648 ,279 ,279 ,279 ,279 ,2147483648 ,2147483648 ,2147483648 ,279 ,279 ,279 ,279 ,279 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,279 ,279 ,2147483648 ,2147483648 ,279 ,2147483648 ,279 ,279 ,2147483648 ,2147483648 ,2147483648 ,279 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,279 ,279 ,2147483648 ,279 ,279 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,279 ,2147483648 ,2147483648 ,279 ,279 ,2147483648 ,279 ,279 ,279 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,279 ,279 ,2147483648 ,2147483648 ,279 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,2147483648 ,279 ,279 ,279 ,279 ,279 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,279 ,280 ,279 ,2147483648 ,279 ,279 ,279 ,2147483648 ,279 ,2147483648 ,279 ,2147483648 ,2147483648 ,279 ,279 ,279 ,279 ,279 ,279 ,2147483648 ,279 ,279 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,196 ,196 ,2147483648 ,195 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {199 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,200 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,201 ,201 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,254 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,254 ,2147483648 ,254 ,254 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,178 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {23 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,2147483648 ,2147483648 ,23 ,2147483648 ,23 ,2147483648 ,23 ,19 ,2147483648 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,18 ,2147483648 ,23 ,25 ,23 ,2147483648 ,23 ,21 ,23 ,2147483648 ,21 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,2147483648 ,22 ,23 ,23 ,23 ,2147483648 ,21 ,2147483648 ,23 ,17 ,2147483648 ,2147483648 ,2147483648 ,24 ,20 ,23 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,27 ,2147483648 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,23 ,2147483648 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,21 ,26 ,2147483648 ,2147483648 ,23 ,23 ,23 ,23 ,2147483648 ,23 ,2147483648 ,23 ,23 ,23 ,23 ,21 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,187 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,280 ,280 ,280 ,2147483648 ,280 ,281 ,2147483648 ,280 ,2147483648 ,280 ,2147483648 ,280 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,280 ,2147483648 ,280 ,280 ,280 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,280 ,280 ,280 ,2147483648 ,2147483648 ,2147483648 ,280 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,280 ,280 ,280 ,280 ,2147483648 ,2147483648 ,2147483648 ,280 ,280 ,280 ,280 ,2147483648 ,280 ,280 ,280 ,280 ,2147483648 ,280 ,2147483648 ,280 ,2147483648 ,280 ,280 ,280 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,280 ,280 ,2147483648 ,280 ,2147483648 ,2147483648 ,280 ,280 ,280 ,280 ,280 ,280 ,280 ,2147483648 ,2147483648 ,2147483648 ,280 ,280 ,280 ,2147483648 ,280 ,280 ,280 ,2147483648 ,280 ,2147483648 ,280 ,280 ,2147483648 ,280 ,280 ,2147483648 ,280 ,280 ,280 ,2147483648 ,2147483648 ,280 ,280 ,2147483648 ,280 ,2147483648 ,280 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,280 ,280 ,2147483648 ,2147483648 ,280 ,2147483648 ,280 ,2147483648 ,2147483648 ,280 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,54 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,41 ,41 ,41 ,41 ,41 ,41 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,2147483648 ,41 ,41 ,41 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,41 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 ,41 ,2147483648 ,2147483648 ,41 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {153 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,2147483648 ,153 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,153 ,153 ,153 ,2147483648 ,2147483648 ,153 ,2147483648 ,153 ,2147483648 ,153 ,153 ,2147483648 ,2147483648 ,2147483648 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,2147483648 ,153 ,153 ,2147483648 ,2147483648 ,2147483648 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,2147483648 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,153 ,2147483648 ,2147483648 ,153 ,153 ,153 ,153 ,2147483648 ,153 ,2147483648 ,153 ,153 ,153 ,153 ,153 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,182 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,56 ,2147483648 ,55 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,186 ,186 ,186 ,186 ,186 ,186 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,2147483648 ,186 ,186 ,186 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,186 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 ,186 ,2147483648 ,2147483648 ,186 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,33 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,50 ,2147483648 ,49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,42 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,43 ,43 ,43 ,43 ,43 ,43 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,2147483648 ,43 ,43 ,43 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,43 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 ,43 ,2147483648 ,2147483648 ,43 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,59 ,2147483648 ,58 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,2147483648 ,2147483648 ,2 ,0 ,0 ,2147483648 ,2147483648 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,1 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,0 ,2 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,0 ,2147483648 ,2147483648 ,0 ,0 ,0 ,0 ,2147483648 ,0 ,2147483648 ,0 ,0 ,0 ,0 ,0 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,160 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,258 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,255 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,157 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,2147483648 },
+ {2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,189 ,189 ,189 ,189 ,189 ,189 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,2147483648 ,189 ,189 ,189 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,189 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 ,189 ,2147483648 ,2147483648 ,189 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,2147483648 ,2147483648 ,9 ,2147483648 ,9 ,2147483648 ,9 ,5 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,4 ,2147483648 ,9 ,11 ,9 ,2147483648 ,9 ,7 ,9 ,2147483648 ,7 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,2147483648 ,8 ,9 ,9 ,9 ,2147483648 ,7 ,2147483648 ,9 ,3 ,2147483648 ,2147483648 ,2147483648 ,10 ,6 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,2147483648 ,2147483648 ,9 ,9 ,9 ,13 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,9 ,2147483648 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,7 ,12 ,2147483648 ,2147483648 ,9 ,9 ,9 ,9 ,2147483648 ,9 ,2147483648 ,9 ,9 ,9 ,9 ,7 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,170 ,2147483648 ,161 ,2147483648 ,2147483648 ,2147483648 ,172 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,167 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,168 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,173 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,169 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,166 ,174 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,171 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,69 ,2147483648 ,60 ,2147483648 ,2147483648 ,2147483648 ,71 ,2147483648 ,2147483648 ,2147483648 ,64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,66 ,62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,2147483648 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,149 ,2147483648 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,148 ,149 ,149 ,2147483648 ,2147483648 ,149 ,149 ,149 ,149 ,2147483648 ,149 ,2147483648 ,149 ,149 ,149 ,149 ,149 ,2147483648 },
+ {152 ,152 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,2147483648 ,152 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,152 ,152 ,152 ,2147483648 ,2147483648 ,152 ,2147483648 ,152 ,2147483648 ,152 ,152 ,2147483648 ,2147483648 ,2147483648 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,152 ,151 ,152 ,2147483648 ,152 ,152 ,2147483648 ,2147483648 ,2147483648 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,2147483648 ,152 ,2147483648 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,152 ,2147483648 ,2147483648 ,152 ,152 ,152 ,152 ,2147483648 ,152 ,2147483648 ,152 ,152 ,152 ,152 ,152 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,185 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {142 ,73 ,106 ,104 ,109 ,81 ,113 ,2147483648 ,2147483648 ,117 ,2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,143 ,2147483648 ,2147483648 ,120 ,2147483648 ,121 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,84 ,114 ,127 ,96 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,87 ,2147483648 ,78 ,2147483648 ,92 ,2147483648 ,2147483648 ,77 ,74 ,99 ,115 ,119 ,140 ,97 ,2147483648 ,2147483648 ,107 ,123 ,94 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,125 ,134 ,2147483648 ,95 ,85 ,2147483648 ,138 ,100 ,2147483648 ,102 ,101 ,135 ,112 ,2147483648 ,2147483648 ,2147483648 ,136 ,133 ,93 ,2147483648 ,111 ,124 ,132 ,2147483648 ,137 ,98 ,126 ,2147483648 ,79 ,128 ,103 ,2147483648 ,130 ,144 ,2147483648 ,89 ,2147483648 ,108 ,118 ,88 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,90 ,80 ,110 ,105 ,2147483648 ,86 ,2147483648 ,83 ,122 ,75 ,82 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,282 ,282 ,282 ,2147483648 ,282 ,2147483648 ,2147483648 ,282 ,2147483648 ,282 ,2147483648 ,282 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,282 ,283 ,282 ,282 ,282 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,282 ,282 ,282 ,2147483648 ,2147483648 ,2147483648 ,282 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,282 ,282 ,282 ,282 ,2147483648 ,2147483648 ,2147483648 ,282 ,282 ,282 ,282 ,2147483648 ,282 ,282 ,282 ,282 ,2147483648 ,282 ,2147483648 ,282 ,2147483648 ,282 ,282 ,282 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,282 ,282 ,2147483648 ,282 ,2147483648 ,2147483648 ,282 ,282 ,282 ,282 ,282 ,282 ,282 ,2147483648 ,2147483648 ,2147483648 ,282 ,282 ,282 ,2147483648 ,282 ,282 ,282 ,2147483648 ,282 ,2147483648 ,282 ,282 ,2147483648 ,282 ,282 ,2147483648 ,282 ,282 ,282 ,2147483648 ,2147483648 ,282 ,282 ,2147483648 ,282 ,2147483648 ,282 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,282 ,282 ,2147483648 ,2147483648 ,282 ,2147483648 ,282 ,2147483648 ,2147483648 ,282 ,2147483648 },
+ {2147483648 ,2147483648 ,197 ,197 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,197 ,197 ,2147483648 ,197 ,197 ,197 ,197 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,197 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,197 ,197 ,197 ,197 ,197 ,197 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,197 ,2147483648 ,197 ,197 ,197 ,2147483648 ,197 ,2147483648 ,197 ,197 ,2147483648 ,197 ,197 ,2147483648 ,197 ,197 ,197 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 ,197 ,2147483648 ,2147483648 ,197 ,2147483648 },
+ {2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,193 ,193 ,193 ,193 ,193 ,193 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,2147483648 ,193 ,193 ,193 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,193 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 ,193 ,2147483648 ,2147483648 ,193 ,2147483648 },
+ {2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,180 ,180 ,180 ,180 ,180 ,180 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,180 ,2147483648 ,180 ,180 ,180 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 ,180 ,2147483648 ,2147483648 ,180 ,2147483648 },
+ {2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,46 ,46 ,46 ,46 ,46 ,46 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,2147483648 ,46 ,46 ,46 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,46 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 ,46 ,2147483648 ,2147483648 ,46 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,200 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,198 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,201 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,199 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,201 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,215 ,213 ,218 ,2147483648 ,222 ,2147483648 ,2147483648 ,226 ,2147483648 ,202 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,230 ,251 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 ,236 ,207 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,203 ,263 ,268 ,2147483648 ,2147483648 ,2147483648 ,224 ,228 ,249 ,208 ,2147483648 ,253 ,216 ,232 ,205 ,2147483648 ,252 ,2147483648 ,248 ,2147483648 ,265 ,269 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,243 ,2147483648 ,206 ,2147483648 ,2147483648 ,247 ,209 ,263 ,211 ,210 ,244 ,221 ,2147483648 ,2147483648 ,2147483648 ,245 ,242 ,204 ,2147483648 ,220 ,233 ,241 ,2147483648 ,246 ,2147483648 ,235 ,264 ,2147483648 ,237 ,212 ,2147483648 ,239 ,250 ,266 ,2147483648 ,2147483648 ,217 ,227 ,2147483648 ,225 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,214 ,2147483648 ,2147483648 ,263 ,2147483648 ,231 ,2147483648 ,2147483648 ,252 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,278 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,195 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,194 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,196 },
+ {2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,29 ,29 ,29 ,29 ,29 ,29 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,29 ,2147483648 ,29 ,29 ,28 ,29 ,29 ,29 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,29 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 ,29 ,2147483648 ,2147483648 ,29 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,183 ,183 ,183 ,183 ,183 ,183 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,183 ,2147483648 ,183 ,183 ,183 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,183 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 ,183 ,2147483648 ,2147483648 ,183 ,2147483648 },
+ {150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,150 ,150 ,150 ,2147483648 ,2147483648 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,150 ,2147483648 ,2147483648 ,150 ,150 ,150 ,150 ,2147483648 ,150 ,2147483648 ,150 ,150 ,150 ,150 ,150 ,2147483648 },
+ {2147483648 ,2147483648 ,277 ,277 ,277 ,2147483648 ,277 ,2147483648 ,2147483648 ,277 ,2147483648 ,277 ,2147483648 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,277 ,277 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,277 ,277 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,277 ,277 ,277 ,2147483648 ,2147483648 ,2147483648 ,277 ,277 ,277 ,277 ,2147483648 ,277 ,277 ,277 ,277 ,2147483648 ,277 ,2147483648 ,277 ,2147483648 ,277 ,277 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,277 ,2147483648 ,277 ,2147483648 ,2147483648 ,277 ,277 ,277 ,277 ,277 ,277 ,277 ,2147483648 ,2147483648 ,2147483648 ,277 ,277 ,277 ,2147483648 ,277 ,277 ,277 ,2147483648 ,277 ,2147483648 ,277 ,277 ,2147483648 ,277 ,277 ,2147483648 ,277 ,277 ,277 ,2147483648 ,2147483648 ,277 ,277 ,2147483648 ,277 ,2147483648 ,277 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,277 ,277 ,2147483648 ,2147483648 ,277 ,2147483648 ,277 ,2147483648 ,2147483648 ,277 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,190 },
+ {14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,16 ,14 ,14 ,2147483648 ,2147483648 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,15 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,14 ,2147483648 ,2147483648 ,14 ,14 ,14 ,14 ,2147483648 ,14 ,2147483648 ,14 ,14 ,14 ,14 ,14 ,2147483648 }
};
const char* KeywordList[]= {
"print",
@@ -1139,13 +1142,13 @@ const char* KeywordList[]= {
"event_trace_step_out",
"event_trace_instrumentation_step",
"event_trace_instrumentation_step_in",
-"lbr_check",
"rdtsc",
"rdtscp",
"lbr_save",
"lbr_dump",
"lbr_print",
"lbr_restore",
+"lbr_check",
"spinlock_lock_custom_wait",
"event_inject",
"poi",
@@ -1199,6 +1202,7 @@ const char* KeywordList[]= {
"lbr_dump",
"lbr_print",
"lbr_restore",
+"lbr_check",
"poi",
"db",
"dd",
@@ -1366,7 +1370,6 @@ const char* ZeroOpFunc1[] = {
"@EVENT_TRACE_STEP_OUT",
"@EVENT_TRACE_INSTRUMENTATION_STEP",
"@EVENT_TRACE_INSTRUMENTATION_STEP_IN",
-"@LBR_CHECK",
};
const char* ZeroOpFunc2[] = {
"@RDTSC",
@@ -1375,6 +1378,7 @@ const char* ZeroOpFunc2[] = {
"@LBR_DUMP",
"@LBR_PRINT",
"@LBR_RESTORE",
+"@LBR_CHECK",
};
const char* VarArgFunc1[] = {
"@PRINTF"
@@ -1433,13 +1437,13 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@EVENT_TRACE_STEP_OUT", FUNC_EVENT_TRACE_STEP_OUT},
{"@EVENT_TRACE_INSTRUMENTATION_STEP", FUNC_EVENT_TRACE_INSTRUMENTATION_STEP},
{"@EVENT_TRACE_INSTRUMENTATION_STEP_IN", FUNC_EVENT_TRACE_INSTRUMENTATION_STEP_IN},
-{"@LBR_CHECK", FUNC_LBR_CHECK},
{"@RDTSC", FUNC_RDTSC},
{"@RDTSCP", FUNC_RDTSCP},
{"@LBR_SAVE", FUNC_LBR_SAVE},
{"@LBR_DUMP", FUNC_LBR_DUMP},
{"@LBR_PRINT", FUNC_LBR_PRINT},
{"@LBR_RESTORE", FUNC_LBR_RESTORE},
+{"@LBR_CHECK", FUNC_LBR_CHECK},
{"@SPINLOCK_LOCK_CUSTOM_WAIT", FUNC_SPINLOCK_LOCK_CUSTOM_WAIT},
{"@EVENT_INJECT", FUNC_EVENT_INJECT},
{"@POI", FUNC_POI},
@@ -1493,6 +1497,7 @@ const SYMBOL_MAP SemanticRulesMapList[]= {
{"@LBR_DUMP", FUNC_LBR_DUMP},
{"@LBR_PRINT", FUNC_LBR_PRINT},
{"@LBR_RESTORE", FUNC_LBR_RESTORE},
+{"@LBR_CHECK", FUNC_LBR_CHECK},
{"@POI", FUNC_POI},
{"@DB", FUNC_DB},
{"@DD", FUNC_DD},
@@ -1793,6 +1798,14 @@ const struct _SCRIPT_ENGINE_TOKEN LalrLhs[RULES_COUNT]=
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
{NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
+ {NON_TERMINAL, "E12"},
{NON_TERMINAL, "E13"},
{NON_TERMINAL, "VA2"},
{NON_TERMINAL, "VA2"},
@@ -1849,6 +1862,13 @@ const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "~"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@NOT"}},
{{SPECIAL_TOKEN, "*"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@POI"}},
{{SPECIAL_TOKEN, "&"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@REFERENCE"}},
+ {{KEYWORD, "rdtsc"},{SPECIAL_TOKEN, "("},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@RDTSC"}},
+ {{KEYWORD, "rdtscp"},{SPECIAL_TOKEN, "("},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@RDTSCP"}},
+ {{KEYWORD, "lbr_save"},{SPECIAL_TOKEN, "("},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_SAVE"}},
+ {{KEYWORD, "lbr_dump"},{SPECIAL_TOKEN, "("},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_DUMP"}},
+ {{KEYWORD, "lbr_print"},{SPECIAL_TOKEN, "("},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_PRINT"}},
+ {{KEYWORD, "lbr_restore"},{SPECIAL_TOKEN, "("},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_RESTORE"}},
+ {{KEYWORD, "lbr_check"},{SPECIAL_TOKEN, "("},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_CHECK"}},
{{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@POI"}},
{{KEYWORD, "db"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DB"}},
{{KEYWORD, "dd"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DD"}},
@@ -1876,6 +1896,7 @@ const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN]=
{{KEYWORD, "dd_pa"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DD_PA"}},
{{KEYWORD, "dw_pa"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DW_PA"}},
{{KEYWORD, "dq_pa"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DQ_PA"}},
+ {{KEYWORD, "lbr_restore_by_filter"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LBR_RESTORE_BY_FILTER"}},
{{KEYWORD, "ed"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@ED"}},
{{KEYWORD, "eb"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@EB"}},
{{KEYWORD, "eq"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@EQ"}},
@@ -1961,6 +1982,14 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
3,
3,
3,
+4,
+4,
+4,
+4,
+4,
+4,
+4,
+5,
5,
5,
5,
@@ -2036,117 +2065,125 @@ const unsigned int LalrRhsSize[RULES_COUNT]=
};
const char* LalrNoneTerminalMap[NONETERMINAL_COUNT]=
{
-"STRING",
-"E10",
-"E12",
-"WstringNumber",
+"StringNumber",
+"WSTRING",
+"ARRAY1",
+"ARRAY2",
"EXP",
+"E10",
+"S",
+"B5",
+"E3",
+"STRING",
+"BE",
+"ARRAY3",
+"WstringNumber",
"E13",
+"E5",
+"E4",
+"E12",
+"CMP",
"VA3",
+"ARRAY4",
+"B2",
+"B4",
"VA2",
"B3",
-"B1",
-"B2",
-"CMP",
-"WSTRING",
-"B5",
"B6",
-"BE",
-"ARRAY4",
-"E5",
-"ARRAY1",
-"S",
-"StringNumber",
-"E3",
-"ARRAY3",
-"ARRAY2",
-"E4",
-"B4"
+"B1"
};
const char* LalrTerminalMap[TERMINAL_COUNT]=
{
-"%",
-"dd",
-"dw",
-"not",
-"db",
-"dw_pa",
-"ed_pa",
-"_pseudo_register",
-"]",
-"eq_pa",
-"poi_pa",
-"low",
-"<=",
-"wcslen",
-"dq_pa",
-"*",
-"&",
-"eq",
-">>",
-"interlocked_exchange_add",
-"$",
-"+",
-"hi_pa",
-"reference",
-"(",
-"eb",
-"_wstring",
-"/",
-"~",
-"||",
-"<",
-"_hex",
-"&&",
-"interlocked_compare_exchange",
-"dq",
-")",
-"low_pa",
-"db_pa",
-">=",
"hi",
-"wcscmp",
-"_function_parameter_id",
-">",
-"interlocked_exchange",
-"strlen",
-"poi",
+"dq",
+"check_address",
"interlocked_increment",
-"neg",
-"_decimal",
+"_string",
+"virtual_to_physical",
+"!=",
+"rdtsc",
+"[",
"_octal",
-"dd_pa",
+"^",
+"low_pa",
+"_wstring",
+"db_pa",
+"(",
+"|",
+"eb_pa",
+"interlocked_decrement",
+"eb",
+"lbr_restore",
+"<",
+"interlocked_exchange",
+"_local_id",
+"rdtscp",
+"_binary",
+"*",
+"reference",
+"hi_pa",
+"wcscmp",
+"/",
+"lbr_check",
+"dw_pa",
+"low",
+"_function_id",
+"lbr_dump",
+"_register",
+"]",
+"wcslen",
+"-",
+"&",
+"~",
+">=",
+"<<",
+">",
+"lbr_restore_by_filter",
+"interlocked_compare_exchange",
+"%",
+"lbr_print",
+"$",
+"strncmp",
+"poi",
+"_decimal",
+"dd",
+"&&",
+"db",
+"strlen",
+"disassemble_len64",
+",",
+"strcmp",
+"eq_pa",
+"lbr_save",
+"disassemble_len32",
+"dq_pa",
+"ed_pa",
+"||",
+"<=",
+"memcmp",
+"ed",
+"_pseudo_register",
+"eq",
+"dw",
+"interlocked_exchange_add",
+"wcsncmp",
+"+",
+"==",
+"not",
+"poi_pa",
"physical_to_virtual",
"_global_id",
+")",
"disassemble_len",
-"_binary",
-"^",
-"_local_id",
-"interlocked_decrement",
-"check_address",
-"_string",
-"disassemble_len32",
-"==",
-"strncmp",
-"_register",
-"disassemble_len64",
-"[",
-"!=",
-"virtual_to_physical",
-",",
-"<<",
-"|",
-"ed",
-"-",
-"_function_id",
-"wcsncmp",
-"memcmp",
-"strcmp",
-"eb_pa"
+"neg",
+"_hex",
+"dd_pa",
+"_function_parameter_id",
+">>"
};
const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{
- {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,5 ,3 ,4 ,9 ,2147483648 ,7 ,8 ,2 ,2147483648 ,13 ,17 ,1 ,2147483648 ,11 ,2147483648 ,18 ,12 ,6 },
+ {2147483648 ,2147483648 ,17 ,18 ,10 ,14 ,1 ,7 ,11 ,2147483648 ,2 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,9 ,2147483648 ,2147483648 ,4 ,6 ,2147483648 ,5 ,8 ,3 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2164,15 +2201,14 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,95 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,98 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2189,13 +2225,11 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,5 ,3 ,4 ,9 ,2147483648 ,7 ,8 ,122 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,6 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2204,10 +2238,10 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,10 ,14 ,2147483648 ,7 ,11 ,2147483648 ,137 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,9 ,2147483648 ,2147483648 ,4 ,6 ,2147483648 ,5 ,8 ,3 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2218,99 +2252,101 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,5 ,2147483648 ,144 ,9 ,2147483648 ,7 ,8 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,6 },
- {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,9 ,2147483648 ,7 ,8 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,6 },
- {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,7 ,8 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,146 },
- {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,147 ,8 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,10 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,9 ,2147483648 ,2147483648 ,148 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,149 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,150 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,151 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,152 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,153 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,154 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,155 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,156 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,157 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,158 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
- {2147483648 ,159 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
- {2147483648 ,160 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
- {2147483648 ,161 ,15 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,18 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,162 ,16 ,2147483648 ,163 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,165 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,166 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,167 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,168 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {170 ,14 ,15 ,2147483648 ,169 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,171 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,173 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,174 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,175 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,176 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,177 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,178 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,179 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,180 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,181 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,182 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,185 ,183 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,187 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,188 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,189 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,190 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,153 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {170 ,14 ,15 ,2147483648 ,191 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,192 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,193 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,194 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,196 ,195 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,198 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {170 ,14 ,15 ,2147483648 ,191 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,199 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,201 ,200 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {170 ,14 ,15 ,2147483648 ,191 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,202 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,203 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,204 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,205 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,206 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,207 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,208 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,209 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,210 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,211 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,212 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,213 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,214 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,157 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,215 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,216 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,217 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,158 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,10 ,14 ,2147483648 ,7 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,9 ,2147483648 ,2147483648 ,160 ,6 ,2147483648 ,5 ,8 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,10 ,14 ,2147483648 ,7 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,9 ,2147483648 ,2147483648 ,2147483648 ,6 ,2147483648 ,161 ,8 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,10 ,14 ,2147483648 ,7 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,9 ,2147483648 ,2147483648 ,2147483648 ,162 ,2147483648 ,2147483648 ,8 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,10 ,14 ,2147483648 ,163 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,8 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,10 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,165 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,166 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,167 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,168 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,169 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,170 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,171 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,172 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,173 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,2147483648 ,14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,174 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,2147483648 ,175 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,2147483648 ,176 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,2147483648 ,177 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,2147483648 ,2147483648 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,178 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,179 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,181 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,182 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,184 ,17 ,18 ,183 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,185 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,187 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,189 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,190 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {195 ,2147483648 ,17 ,18 ,193 ,14 ,2147483648 ,2147483648 ,11 ,194 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,197 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {198 ,2147483648 ,17 ,18 ,193 ,14 ,2147483648 ,2147483648 ,11 ,194 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {199 ,2147483648 ,17 ,18 ,193 ,14 ,2147483648 ,2147483648 ,11 ,194 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,200 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,201 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,184 ,17 ,18 ,202 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,203 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {205 ,2147483648 ,17 ,18 ,204 ,14 ,2147483648 ,2147483648 ,11 ,194 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,206 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,208 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,209 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,212 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,184 ,17 ,18 ,213 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,214 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,215 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,216 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,217 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,218 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,219 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,220 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,221 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,222 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,224 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,225 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,227 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,228 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,229 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,230 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,231 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,232 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,233 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,234 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,235 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,236 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,237 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,238 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,239 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,240 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,241 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,218 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,221 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,164 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2325,7 +2361,9 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,180 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2365,7 +2403,6 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,267 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2374,74 +2411,71 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,268 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,269 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,270 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {170 ,14 ,15 ,2147483648 ,191 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,271 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,272 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,273 ,200 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {170 ,14 ,15 ,2147483648 ,191 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,274 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,275 ,200 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,184 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {170 ,14 ,15 ,2147483648 ,191 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,276 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,277 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,292 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,278 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,279 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,280 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,281 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,293 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,184 ,17 ,18 ,213 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,294 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,282 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {295 ,2147483648 ,17 ,18 ,193 ,14 ,2147483648 ,2147483648 ,11 ,194 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {296 ,2147483648 ,17 ,18 ,193 ,14 ,2147483648 ,2147483648 ,11 ,194 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {297 ,2147483648 ,17 ,18 ,193 ,14 ,2147483648 ,2147483648 ,11 ,194 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,298 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,299 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,184 ,17 ,18 ,213 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,300 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,301 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,302 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,303 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,304 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,305 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,306 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,299 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,300 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,301 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,307 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,14 ,15 ,2147483648 ,302 ,16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,13 ,17 ,2147483648 ,2147483648 ,11 ,2147483648 ,18 ,12 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,308 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
@@ -2452,317 +2486,370 @@ const int LalrGotoTable[LALR_STATE_COUNT][LALR_NONTERMINAL_COUNT]=
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,324 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,325 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,326 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,17 ,18 ,327 ,14 ,2147483648 ,2147483648 ,11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,16 ,13 ,12 ,15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
{2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
};
const int LalrActionTable[LALR_STATE_COUNT][LALR_TERMINAL_COUNT]=
{
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,84 ,2147483648 ,-13 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,83 ,2147483648 ,2147483648 ,2147483648 ,82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,81 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,88 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,87 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,2147483648 ,-24 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,-24 ,-24 ,-24 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,93 ,-27 ,2147483648 ,-27 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,2147483648 ,2147483648 ,39 ,2147483648 ,61 ,2147483648 ,2147483648 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,62 ,53 ,52 ,54 ,60 },
- {-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,2147483648 ,2147483648 ,39 ,2147483648 ,61 ,2147483648 ,2147483648 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,2147483648 ,2147483648 ,39 ,2147483648 ,61 ,2147483648 ,2147483648 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,62 ,53 ,52 ,54 ,60 },
- {-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-106 ,-85 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,2147483648 ,2147483648 ,39 ,2147483648 ,61 ,2147483648 ,2147483648 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,137 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,2147483648 ,2147483648 ,39 ,2147483648 ,61 ,2147483648 ,2147483648 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,2147483648 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,-95 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,96 ,-109 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,186 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,186 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,197 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,186 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,77 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,80 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,2147483648 ,-23 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,-23 ,-23 ,-23 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,2147483648 ,-22 ,90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,-22 ,-22 ,-22 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,93 ,-26 ,2147483648 ,-26 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,93 ,-25 ,2147483648 ,-25 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,92 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,220 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,96 ,-109 ,2147483648 ,-109 ,-109 ,-109 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,-105 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,-105 ,-105 ,-105 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,222 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,224 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,227 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,228 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,229 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,230 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,231 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,232 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,233 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,234 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,235 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,236 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,238 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,239 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,240 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,241 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,242 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,245 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-103 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,260 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,-108 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,-108 ,-108 ,-108 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,-107 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,-107 ,-107 ,2147483648 ,-107 ,-107 ,-107 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,186 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,186 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,172 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,219 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,286 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,289 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,290 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,292 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,293 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,294 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,295 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,296 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,297 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,298 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,70 ,30 ,33 ,46 ,50 ,65 ,67 ,2147483648 ,59 ,42 ,68 ,2147483648 ,38 ,19 ,72 ,20 ,39 ,2147483648 ,61 ,2147483648 ,43 ,47 ,73 ,49 ,29 ,2147483648 ,2147483648 ,58 ,2147483648 ,2147483648 ,25 ,2147483648 ,55 ,64 ,2147483648 ,69 ,27 ,2147483648 ,63 ,48 ,51 ,2147483648 ,71 ,24 ,75 ,41 ,37 ,44 ,28 ,32 ,34 ,23 ,40 ,66 ,2147483648 ,57 ,31 ,35 ,2147483648 ,22 ,2147483648 ,45 ,21 ,56 ,2147483648 ,2147483648 ,74 ,2147483648 ,2147483648 ,2147483648 ,36 ,26 ,62 ,53 ,52 ,54 ,60 },
- {-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,303 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,304 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,305 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,306 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
- {-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 }
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483647 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-1 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-2 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-4 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-6 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-8 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-10 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-12 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,93 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,90 ,2147483648 ,94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-13 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-20 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,-21 ,2147483648 ,-21 ,95 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-21 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,96 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,98 ,-24 ,2147483648 ,-24 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-24 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,-27 ,-27 ,2147483648 ,-27 ,-27 ,-27 ,2147483648 ,2147483648 ,99 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-27 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,-31 ,2147483648 ,-31 ,-31 ,-31 ,2147483648 ,2147483648 ,-31 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-31 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,-32 ,2147483648 ,-32 ,-32 ,-32 ,2147483648 ,2147483648 ,-32 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-32 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,-95 ,2147483648 ,-95 ,-95 ,-95 ,2147483648 ,2147483648 ,-95 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-95 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,-97 ,-97 ,2147483648 ,-97 ,-97 ,-97 ,2147483648 ,2147483648 ,-97 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-97 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,2147483648 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,2147483648 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,-94 ,2147483648 ,-94 ,-94 ,-94 ,2147483648 ,2147483648 ,-94 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-94 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-102 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,114 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,-96 ,-96 ,2147483648 ,-96 ,-96 ,-96 ,2147483648 ,2147483648 ,-96 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-96 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,118 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,119 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,-98 ,-98 ,2147483648 ,-98 ,-98 ,-98 ,2147483648 ,2147483648 ,-98 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-98 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,120 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,121 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,122 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,123 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,124 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-114 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,-93 ,2147483648 ,-93 ,-93 ,-93 ,2147483648 ,2147483648 ,-93 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-93 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,125 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,126 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,127 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,128 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,129 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,130 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,131 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,132 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,133 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,134 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,135 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,136 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,-99 ,-99 ,2147483648 ,-99 ,-99 ,-99 ,2147483648 ,2147483648 ,-99 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-99 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,138 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,139 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,140 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,141 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,142 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,143 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,144 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,145 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,146 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,147 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,2147483648 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,2147483648 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,-91 ,2147483648 ,-91 ,-91 ,-91 ,2147483648 ,2147483648 ,-91 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-91 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,149 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,150 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,151 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,152 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,2147483648 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,2147483648 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,154 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,155 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,156 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,2147483648 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,2147483648 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,-92 ,2147483648 ,-92 ,-92 ,-92 ,2147483648 ,2147483648 ,-92 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-92 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,2147483648 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,2147483648 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,-100 ,-100 ,2147483648 ,-100 ,-100 ,-100 ,2147483648 ,2147483648 ,-100 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-100 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,159 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,-103 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,104 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,-117 ,-117 ,2147483648 ,-117 ,-117 ,-117 ,2147483648 ,2147483648 ,-117 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,186 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,188 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,-37 ,2147483648 ,-37 ,-37 ,-37 ,2147483648 ,2147483648 ,-37 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-37 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,191 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,192 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {78 ,59 ,74 ,67 ,196 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,196 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,196 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,186 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,196 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,207 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,210 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,211 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,186 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,223 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,226 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,-36 ,2147483648 ,-36 ,-36 ,-36 ,2147483648 ,2147483648 ,-36 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-36 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,-35 ,2147483648 ,-35 ,-35 ,-35 ,2147483648 ,2147483648 ,-35 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-35 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,-34 ,2147483648 ,-34 ,-34 ,-34 ,2147483648 ,2147483648 ,-34 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-34 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,-33 ,2147483648 ,-33 ,-33 ,-33 ,2147483648 ,2147483648 ,-33 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-33 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-3 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-5 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-7 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-9 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-11 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-15 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-16 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-18 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-17 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-19 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-14 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,98 ,-23 ,2147483648 ,-23 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-23 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,98 ,-22 ,2147483648 ,-22 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,97 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-22 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,-25 ,-25 ,2147483648 ,-25 ,-25 ,-25 ,2147483648 ,2147483648 ,99 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-25 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,101 ,2147483648 ,2147483648 ,2147483648 ,100 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,-26 ,-26 ,2147483648 ,-26 ,-26 ,-26 ,2147483648 ,2147483648 ,99 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-26 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,-29 ,2147483648 ,-29 ,-29 ,-29 ,2147483648 ,2147483648 ,-29 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-29 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,-28 ,2147483648 ,-28 ,-28 ,-28 ,2147483648 ,2147483648 ,-28 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-28 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,-30 ,2147483648 ,-30 ,-30 ,-30 ,2147483648 ,2147483648 ,-30 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-30 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,244 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,104 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,-117 ,-117 ,2147483648 ,-117 ,-117 ,-117 ,2147483648 ,2147483648 ,-117 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-117 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-113 ,2147483648 ,2147483648 ,2147483648 ,-113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-113 ,2147483648 ,2147483648 ,2147483648 ,-113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-113 ,2147483648 ,-113 ,-113 ,2147483648 ,-113 ,-113 ,-113 ,2147483648 ,2147483648 ,-113 ,2147483648 ,-113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-113 ,2147483648 ,2147483648 ,2147483648 ,-113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-113 ,-113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-113 ,-113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-113 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-113 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,246 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,247 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-112 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,248 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-108 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,249 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,-39 ,2147483648 ,-39 ,-39 ,-39 ,2147483648 ,2147483648 ,-39 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-39 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,250 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,251 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,-44 ,2147483648 ,-44 ,-44 ,-44 ,2147483648 ,2147483648 ,-44 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-44 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,-41 ,2147483648 ,-41 ,-41 ,-41 ,2147483648 ,2147483648 ,-41 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-41 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-110 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,252 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-107 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,253 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,254 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,255 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,256 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,257 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,258 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,259 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-109 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,261 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,262 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,-38 ,2147483648 ,-38 ,-38 ,-38 ,2147483648 ,2147483648 ,-38 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-38 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,263 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,264 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,-40 ,2147483648 ,-40 ,-40 ,-40 ,2147483648 ,2147483648 ,-40 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-40 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,-43 ,2147483648 ,-43 ,-43 ,-43 ,2147483648 ,2147483648 ,-43 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-43 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,265 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-111 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,266 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,267 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,268 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,269 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,270 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,271 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,272 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,273 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,274 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,-90 ,2147483648 ,-90 ,-90 ,-90 ,2147483648 ,2147483648 ,-90 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-90 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,275 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,276 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,-42 ,2147483648 ,-42 ,-42 ,-42 ,2147483648 ,2147483648 ,-42 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-42 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,277 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,278 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,279 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,280 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,281 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,282 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,283 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,284 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,285 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,286 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,287 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,288 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,289 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,290 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,291 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-104 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,-101 ,-101 ,2147483648 ,-101 ,-101 ,-101 ,2147483648 ,2147483648 ,-101 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-101 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-116 ,2147483648 ,2147483648 ,2147483648 ,-116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-116 ,2147483648 ,2147483648 ,2147483648 ,-116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-116 ,2147483648 ,-116 ,-116 ,2147483648 ,-116 ,-116 ,-116 ,2147483648 ,2147483648 ,-116 ,2147483648 ,-116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-116 ,2147483648 ,2147483648 ,2147483648 ,-116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-116 ,-116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-116 ,-116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-116 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-116 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-115 ,2147483648 ,-115 ,2147483648 ,-115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-115 ,2147483648 ,2147483648 ,2147483648 ,-115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-115 ,2147483648 ,-115 ,-115 ,2147483648 ,-115 ,-115 ,-115 ,2147483648 ,2147483648 ,-115 ,2147483648 ,-115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-115 ,2147483648 ,2147483648 ,2147483648 ,-115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-115 ,-115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-115 ,-115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-115 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-115 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,186 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,-52 ,2147483648 ,-52 ,-52 ,-52 ,2147483648 ,2147483648 ,-52 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-52 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,-64 ,2147483648 ,-64 ,-64 ,-64 ,2147483648 ,2147483648 ,-64 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-64 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,-53 ,2147483648 ,-53 ,-53 ,-53 ,2147483648 ,2147483648 ,-53 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-53 },
+ {78 ,59 ,74 ,67 ,196 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,-67 ,2147483648 ,-67 ,-67 ,-67 ,2147483648 ,2147483648 ,-67 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-67 },
+ {78 ,59 ,74 ,67 ,196 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,196 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,-66 ,2147483648 ,-66 ,-66 ,-66 ,2147483648 ,2147483648 ,-66 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-66 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,-59 ,2147483648 ,-59 ,-59 ,-59 ,2147483648 ,2147483648 ,-59 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-59 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,-56 ,2147483648 ,-56 ,-56 ,-56 ,2147483648 ,2147483648 ,-56 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-56 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,-87 ,2147483648 ,-87 ,-87 ,-87 ,2147483648 ,2147483648 ,-87 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-87 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,-55 ,2147483648 ,-55 ,-55 ,-55 ,2147483648 ,2147483648 ,-55 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-55 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,-83 ,2147483648 ,-83 ,-83 ,-83 ,2147483648 ,2147483648 ,-83 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-83 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,-50 ,2147483648 ,-50 ,-50 ,-50 ,2147483648 ,2147483648 ,-50 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-50 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,-71 ,2147483648 ,-71 ,-71 ,-71 ,2147483648 ,2147483648 ,-71 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-71 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,186 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,-62 ,2147483648 ,-62 ,-62 ,-62 ,2147483648 ,2147483648 ,-62 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-62 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,-69 ,2147483648 ,-69 ,-69 ,-69 ,2147483648 ,2147483648 ,-69 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-69 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,-72 ,2147483648 ,-72 ,-72 ,-72 ,2147483648 ,2147483648 ,-72 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-72 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,-61 ,2147483648 ,-61 ,-61 ,-61 ,2147483648 ,2147483648 ,-61 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-61 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,-63 ,2147483648 ,-63 ,-63 ,-63 ,2147483648 ,2147483648 ,-63 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-63 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,-45 ,2147483648 ,-45 ,-45 ,-45 ,2147483648 ,2147483648 ,-45 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-45 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,-49 ,2147483648 ,-49 ,-49 ,-49 ,2147483648 ,2147483648 ,-49 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-49 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,-68 ,2147483648 ,-68 ,-68 ,-68 ,2147483648 ,2147483648 ,-68 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-68 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,-65 ,2147483648 ,-65 ,-65 ,-65 ,2147483648 ,2147483648 ,-65 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-65 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,-48 ,2147483648 ,-48 ,-48 ,-48 ,2147483648 ,2147483648 ,-48 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-48 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,-60 ,2147483648 ,-60 ,-60 ,-60 ,2147483648 ,2147483648 ,-60 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-60 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,-47 ,2147483648 ,-47 ,-47 ,-47 ,2147483648 ,2147483648 ,-47 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-47 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,-70 ,2147483648 ,-70 ,-70 ,-70 ,2147483648 ,2147483648 ,-70 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-70 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,-57 ,2147483648 ,-57 ,-57 ,-57 ,2147483648 ,2147483648 ,-57 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-57 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,-54 ,2147483648 ,-54 ,-54 ,-54 ,2147483648 ,2147483648 ,-54 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-54 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,-58 ,2147483648 ,-58 ,-58 ,-58 ,2147483648 ,2147483648 ,-58 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-58 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,-51 ,2147483648 ,-51 ,-51 ,-51 ,2147483648 ,2147483648 ,-51 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-51 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,-46 ,2147483648 ,-46 ,-46 ,-46 ,2147483648 ,2147483648 ,-46 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-46 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,243 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-106 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,309 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,310 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,311 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,312 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,313 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,314 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,315 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,316 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,317 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,318 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,319 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,320 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,321 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,322 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,323 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-105 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,-78 ,2147483648 ,-78 ,-78 ,-78 ,2147483648 ,2147483648 ,-78 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-78 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,-88 ,2147483648 ,-88 ,-88 ,-88 ,2147483648 ,2147483648 ,-88 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-88 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,-84 ,2147483648 ,-84 ,-84 ,-84 ,2147483648 ,2147483648 ,-84 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-84 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,-80 ,2147483648 ,-80 ,-80 ,-80 ,2147483648 ,2147483648 ,-80 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-80 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,-74 ,2147483648 ,-74 ,-74 ,-74 ,2147483648 ,2147483648 ,-74 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-74 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,-79 ,2147483648 ,-79 ,-79 ,-79 ,2147483648 ,2147483648 ,-79 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-79 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,-73 ,2147483648 ,-73 ,-73 ,-73 ,2147483648 ,2147483648 ,-73 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-73 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,-81 ,2147483648 ,-81 ,-81 ,-81 ,2147483648 ,2147483648 ,-81 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-81 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,-75 ,2147483648 ,-75 ,-75 ,-75 ,2147483648 ,2147483648 ,-75 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-75 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,-77 ,2147483648 ,-77 ,-77 ,-77 ,2147483648 ,2147483648 ,-77 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-77 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,-76 ,2147483648 ,-76 ,-76 ,-76 ,2147483648 ,2147483648 ,-76 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-76 },
+ {78 ,59 ,74 ,67 ,2147483648 ,25 ,2147483648 ,41 ,2147483648 ,38 ,2147483648 ,31 ,2147483648 ,62 ,58 ,2147483648 ,52 ,53 ,43 ,46 ,2147483648 ,71 ,44 ,21 ,57 ,69 ,49 ,35 ,19 ,2147483648 ,27 ,72 ,20 ,28 ,29 ,70 ,2147483648 ,37 ,81 ,23 ,75 ,2147483648 ,2147483648 ,2147483648 ,51 ,76 ,2147483648 ,61 ,2147483648 ,32 ,55 ,22 ,68 ,2147483648 ,83 ,39 ,36 ,2147483648 ,30 ,60 ,45 ,77 ,47 ,42 ,2147483648 ,2147483648 ,34 ,56 ,82 ,64 ,66 ,65 ,48 ,79 ,2147483648 ,26 ,63 ,54 ,80 ,2147483648 ,73 ,40 ,33 ,50 ,24 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,328 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,329 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,330 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,331 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,-86 ,2147483648 ,-86 ,-86 ,-86 ,2147483648 ,2147483648 ,-86 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-86 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,-85 ,2147483648 ,-85 ,-85 ,-85 ,2147483648 ,2147483648 ,-85 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-85 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,-89 ,2147483648 ,-89 ,-89 ,-89 ,2147483648 ,2147483648 ,-89 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-89 },
+ {2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,-82 ,2147483648 ,-82 ,-82 ,-82 ,2147483648 ,2147483648 ,-82 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,2147483648 ,-82 }
};
const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{
@@ -2803,6 +2890,13 @@ const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{SEMANTIC_RULE, "@NOT"},
{SEMANTIC_RULE, "@POI"},
{SEMANTIC_RULE, "@REFERENCE"},
+ {SEMANTIC_RULE, "@RDTSC"},
+ {SEMANTIC_RULE, "@RDTSCP"},
+ {SEMANTIC_RULE, "@LBR_SAVE"},
+ {SEMANTIC_RULE, "@LBR_DUMP"},
+ {SEMANTIC_RULE, "@LBR_PRINT"},
+ {SEMANTIC_RULE, "@LBR_RESTORE"},
+ {SEMANTIC_RULE, "@LBR_CHECK"},
{SEMANTIC_RULE, "@POI"},
{SEMANTIC_RULE, "@DB"},
{SEMANTIC_RULE, "@DD"},
@@ -2830,6 +2924,7 @@ const struct _SCRIPT_ENGINE_TOKEN LalrSemanticRules[RULES_COUNT]=
{SEMANTIC_RULE, "@DD_PA"},
{SEMANTIC_RULE, "@DW_PA"},
{SEMANTIC_RULE, "@DQ_PA"},
+ {SEMANTIC_RULE, "@LBR_RESTORE_BY_FILTER"},
{SEMANTIC_RULE, "@ED"},
{SEMANTIC_RULE, "@EB"},
{SEMANTIC_RULE, "@EQ"},
diff --git a/hyperdbg/script-engine/header/parse-table.h b/hyperdbg/script-engine/header/parse-table.h
index ff25f3c5..eb7a0242 100644
--- a/hyperdbg/script-engine/header/parse-table.h
+++ b/hyperdbg/script-engine/header/parse-table.h
@@ -1,19 +1,19 @@
#pragma once
#ifndef PARSE_TABLE_H
#define PARSE_TABLE_H
-#define RULES_COUNT 283
+#define RULES_COUNT 284
#define TERMINAL_COUNT 128
#define NONETERMINAL_COUNT 63
#define START_VARIABLE "S"
#define MAX_RHS_LEN 15
-#define KEYWORD_LIST_LENGTH 120
+#define KEYWORD_LIST_LENGTH 121
#define OPERATORS_ONE_OPERAND_LIST_LENGTH 3
#define OPERATORS_TWO_OPERAND_LIST_LENGTH 16
#define REGISTER_MAP_LIST_LENGTH 120
#define PSEUDO_REGISTER_MAP_LIST_LENGTH 16
#define SCRIPT_VARIABLE_TYPE_LIST_LENGTH 10
#define ASSIGNMENT_OPERATOR_LIST_LENGTH 10
-#define SEMANTIC_RULES_MAP_LIST_LENGTH 165
+#define SEMANTIC_RULES_MAP_LIST_LENGTH 166
#define THREEOPFUNC1_LENGTH 1
#define THREEOPFUNC2_LENGTH 3
#define TWOOPFUNC1_LENGTH 8
@@ -26,8 +26,8 @@
#define THREEOPFUNC4_LENGTH 1
#define ONEOPFUNC4_LENGTH 1
#define TWOOPFUNC4_LENGTH 1
-#define ZEROOPFUNC1_LENGTH 8
-#define ZEROOPFUNC2_LENGTH 6
+#define ZEROOPFUNC1_LENGTH 7
+#define ZEROOPFUNC2_LENGTH 7
#define VARARGFUNC1_LENGTH 1
extern const struct _SCRIPT_ENGINE_TOKEN Lhs[RULES_COUNT];
extern const struct _SCRIPT_ENGINE_TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN];
@@ -60,11 +60,11 @@ extern const SYMBOL_MAP PseudoRegisterMapList[];
extern const char* ScriptVariableTypeList[];
-#define LALR_RULES_COUNT 109
-#define LALR_TERMINAL_COUNT 78
+#define LALR_RULES_COUNT 117
+#define LALR_TERMINAL_COUNT 86
#define LALR_NONTERMINAL_COUNT 26
#define LALR_MAX_RHS_LEN 9
-#define LALR_STATE_COUNT 307
+#define LALR_STATE_COUNT 332
extern const struct _SCRIPT_ENGINE_TOKEN LalrLhs[RULES_COUNT];
extern const struct _SCRIPT_ENGINE_TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN];
extern const unsigned int LalrRhsSize[RULES_COUNT];
diff --git a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
index 494b36fd..66a2dd16 100644
--- a/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
+++ b/hyperdbg/script-engine/python/Boolean_Expression_Grammar.txt
@@ -1,5 +1,8 @@
+# ZeroOpFunc2 no input and returns a number
+.ZeroOpFunc2->rdtsc rdtscp lbr_save lbr_dump lbr_print lbr_restore lbr_check
+
# OneOpFunc1 input is a number and returns a number.
-.OneOpFunc1->poi db dd dw dq neg hi low not check_address strlen wcslen disassemble_len disassemble_len32 disassemble_len64 interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa
+.OneOpFunc1->poi db dd dw dq neg hi low not check_address strlen wcslen disassemble_len disassemble_len32 disassemble_len64 interlocked_increment interlocked_decrement reference physical_to_virtual virtual_to_physical poi_pa hi_pa low_pa db_pa dd_pa dw_pa dq_pa lbr_restore_by_filter
# TwoOpFunc1 inputs are two numbers and returns a number.
.TwoOpFunc1->ed eb eq interlocked_exchange interlocked_exchange_add wcscmp eb_pa ed_pa eq_pa
@@ -82,7 +85,7 @@ E10->* E12 @POI
E10->& E12 @REFERENCE
-
+E12->.ZeroOpFunc2 ( ) @.ZeroOpFunc2
E12->.OneOpFunc1 ( EXP ) @.OneOpFunc1
E12->.TwoOpFunc1 ( EXP , EXP ) @.TwoOpFunc2
E12->.ThreeOpFunc1 ( EXP , EXP , EXP ) @.ThreeOpFunc1
diff --git a/hyperdbg/script-engine/python/Grammar.txt b/hyperdbg/script-engine/python/Grammar.txt
index d96e6e99..d08c90c9 100644
--- a/hyperdbg/script-engine/python/Grammar.txt
+++ b/hyperdbg/script-engine/python/Grammar.txt
@@ -35,10 +35,10 @@
# TwoOpFunc4 the two inputs are numbers or wstrings and returns a number.
.TwoOpFunc4->wcscmp
-.ZeroOpFunc1->pause flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in lbr_check
+.ZeroOpFunc1->pause flush event_trace_step event_trace_step_in event_trace_step_out event_trace_instrumentation_step event_trace_instrumentation_step_in
# ZeroOpFunc2 no input and returns a number
-.ZeroOpFunc2->rdtsc rdtscp lbr_save lbr_dump lbr_print lbr_restore
+.ZeroOpFunc2->rdtsc rdtscp lbr_save lbr_dump lbr_print lbr_restore lbr_check
.VarArgFunc1->printf
diff --git a/hyperdbg/script-eval/code/ScriptEngineEval.c b/hyperdbg/script-eval/code/ScriptEngineEval.c
index 878f35e4..e3604f6d 100644
--- a/hyperdbg/script-eval/code/ScriptEngineEval.c
+++ b/hyperdbg/script-eval/code/ScriptEngineEval.c
@@ -734,13 +734,19 @@ ScriptEngineExecute(PGUEST_REGS GuestRegs,
ScriptEngineFunctionPause(ActionDetail,
GuestRegs);
+
break;
case FUNC_LBR_CHECK:
- //
- // To be implemented!
- //
+ Des = (PSYMBOL)((unsigned long long)CodeBuffer->Head +
+ (unsigned long long)(*Indx * sizeof(SYMBOL)));
+ *Indx = *Indx + 1;
+
+ DesVal = ScriptEngineFunctionLbrCheck();
+
+ SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
+
break;
case FUNC_LBR_SAVE:
@@ -752,6 +758,7 @@ ScriptEngineExecute(PGUEST_REGS GuestRegs,
DesVal = ScriptEngineFunctionLbrSave();
SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
+
break;
case FUNC_LBR_PRINT:
@@ -764,6 +771,7 @@ ScriptEngineExecute(PGUEST_REGS GuestRegs,
DesVal = ScriptEngineFunctionLbrPrint();
SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
+
break;
case FUNC_LBR_RESTORE:
@@ -775,6 +783,7 @@ ScriptEngineExecute(PGUEST_REGS GuestRegs,
DesVal = ScriptEngineFunctionLbrRestore();
SetValue(GuestRegs, ScriptGeneralRegisters, Des, DesVal);
+
break;
case FUNC_LBR_RESTORE_BY_FILTER:
From 33c3513184a4f33e9cdc469505c079c9e761b53b Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 25 May 2026 20:18:54 +0200
Subject: [PATCH 188/323] fix message layout of LBR printing and add notes to
lbr help
---
hyperdbg/hypertrace/code/lbr/Lbr.c | 2 +-
.../code/debugger/commands/extension-commands/lbr.cpp | 4 ++++
.../code/debugger/commands/extension-commands/lbrdump.cpp | 7 ++++++-
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 7a566c90..87c61a75 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -1208,7 +1208,7 @@ LbrPrint()
//
State = &g_LbrStateList[CurrentCore];
- Log("LBR Chronological Trace on core (decimal): %d\n", CurrentCore);
+ Log("LBR Chronological Trace on core : 0x%x\n\n", CurrentCore);
for (ULONG i = 1; i <= g_LbrCapacity; i++)
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index 17fdc19e..42b03baa 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -56,6 +56,10 @@ CommandLbrHelp()
ShowMessages("\t not available on CPUs older than Haswell. for this item you can only specify the 'user'\n");
ShowMessages("\t or the 'kernel'. it prevents all types of branches except calls and rets\n");
ShowMessages("\t (no option): capture everything (default option)\n");
+
+ ShowMessages("\nnote 1: LBR is usually not supported (or is emulated) in nested virtualization (VM) environments\n");
+ ShowMessages("note 2: LBR will be disabled if there is a debug-break (#DB) condition, such as the trap flags or\n");
+ ShowMessages(" hardware debug registers (to learn how to mitigate this, check the documentation)\n");
}
/**
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
index 13811d0a..64e8ee8d 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbrdump.cpp
@@ -80,6 +80,7 @@ VOID
CommandLbrdumpHelp()
{
ShowMessages("!lbrdump : dumps Last Branch Record (LBR).\n");
+ ShowMessages("for using this command, you should configure it using the '!lbr' command\n");
ShowMessages("syntax : \t!lbrdump [core CoreId (hex)]\n");
@@ -154,7 +155,7 @@ CommandLbrdumpPrint(HYPERTRACE_LBR_DUMP_PACKETS * LbrdumpRequest)
CHAR BrTypeName[LBR_BR_TYPE_NAME_MAX_LEN] = {0};
UINT32 BrType = 0;
- ShowMessages("LBR Chronological Trace on core (decimal): %d\n\n", LbrdumpRequest->CoreId);
+ ShowMessages("LBR Chronological Trace on core: 0x%x\n\n", LbrdumpRequest->CoreId);
for (ULONG i = 1; i <= LbrdumpRequest->CurrentLbrCapacity; i++)
{
@@ -219,6 +220,10 @@ CommandLbrdumpPrint(HYPERTRACE_LBR_DUMP_PACKETS * LbrdumpRequest)
"\t on the target core to save the LBR entries before dumping\n\n"
"\t ===========================================================\n\n");
}
+ else
+ {
+ ShowMessages("\n\t ===========================================================\n\n");
+ }
}
/**
From 37cb28e910db47595734669839743dc3a9b3aaaa Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 26 May 2026 16:22:33 +0200
Subject: [PATCH 189/323] add export to LBR support flag and LBR capacity on
HyperTrace
---
hyperdbg/hypertrace/code/api/LbrApi.c | 127 +++++++++++++-----
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 3 +
2 files changed, 93 insertions(+), 37 deletions(-)
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 11001da0..82ee4a10 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -58,21 +58,40 @@ HyperTraceLbrQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId)
}
/**
- * @brief Set the kernel status in the HyperTrace operation request structure
+ * @brief Set the kernel status in the HyperTrace LBR operation request structure
*
- * @param HyperTraceOperationRequest
+ * @param HyperTraceLbrOperationRequest
* @param Status
*
* @return VOID
*/
VOID
-HyperTraceSetKernelStatus(
- HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest,
+HyperTraceLbrSetKernelStatus(
+ HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceLbrOperationRequest,
UINT32 Status)
{
- if (HyperTraceOperationRequest != NULL)
+ if (HyperTraceLbrOperationRequest != NULL)
{
- HyperTraceOperationRequest->KernelStatus = Status;
+ HyperTraceLbrOperationRequest->KernelStatus = Status;
+ }
+}
+
+/**
+ * @brief Set the kernel status in the HyperTrace LBR dump operation request structure
+ *
+ * @param HyperTraceLbrDumpOperationRequest
+ * @param Status
+ *
+ * @return VOID
+ */
+VOID
+HyperTraceLbrDumpSetKernelStatus(
+ HYPERTRACE_LBR_DUMP_PACKETS * HyperTraceLbrDumpOperationRequest,
+ UINT32 Status)
+{
+ if (HyperTraceLbrDumpOperationRequest != NULL)
+ {
+ HyperTraceLbrDumpOperationRequest->KernelStatus = Status;
}
}
@@ -84,6 +103,14 @@ HyperTraceSetKernelStatus(
BOOLEAN
HyperTraceLbrCheck()
{
+ //
+ // Only check LBR once it is already initialized
+ //
+ if (!g_LastBranchRecordEnabled)
+ {
+ return FALSE;
+ }
+
return LbrCheck();
}
@@ -99,7 +126,7 @@ HyperTraceLbrRestoreByFilter(UINT64 FilterOptions)
//
// Only restore (re-enable) LBR once it is already initialized
//
- if (g_LastBranchRecordEnabled)
+ if (!g_LastBranchRecordEnabled)
{
return FALSE;
}
@@ -118,6 +145,41 @@ HyperTraceLbrRestore()
return HyperTraceLbrRestoreByFilter(g_LbrFilterOptions);
}
+/**
+ * @brief Check if LBR is supported on the current CPU and get its capacity
+ *
+ * @param Capacity Pointer to a variable to receive the LBR capacity (number of entries)
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceLbrIsSupported(UINT32 * Capacity)
+{
+ //
+ // Check for ARCHITECTURAL LBR support first, if not supported then check for LEGACY LBR support
+ //
+ if (!LbrCheckAndReadArchitecturalLbrDetails())
+ {
+ //
+ // If the CPU does not support architectural LBR, we can check for legacy LBR support as a fallback
+ //
+ if (!LbrCheckAndReadLegacyLbrDetails())
+ {
+ return FALSE;
+ }
+ }
+
+ //
+ // Set capacity when the pointer is valid
+ //
+ if (Capacity != NULL)
+ {
+ *Capacity = (UINT32)g_LbrCapacity;
+ }
+
+ return TRUE;
+}
+
/**
* @brief Enable LBR tracing for HyperTrace
*
@@ -136,7 +198,7 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
/*
if (g_LastBranchRecordEnabled)
{
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_ENABLED);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_ENABLED);
return FALSE;
}
*/
@@ -151,7 +213,7 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
//
if (!LbrCheckAndReadLegacyLbrDetails())
{
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_NOT_SUPPORTED);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_NOT_SUPPORTED);
return FALSE;
}
}
@@ -164,7 +226,7 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
if ((g_ArchBasedLastBranchRecord && !g_Callbacks.VmFuncCheckCpuSupportForLoadAndClearGuestIa32LbrCtlControls()) ||
(!g_ArchBasedLastBranchRecord && !g_Callbacks.VmFuncCheckCpuSupportForSaveAndLoadDebugControls()))
{
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_NOT_SUPPORTED_ON_VMCS);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_NOT_SUPPORTED_ON_VMCS);
return FALSE;
}
}
@@ -179,7 +241,7 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
//
if (!LbrCheck())
{
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_NOT_SUPPORTED);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_NOT_SUPPORTED);
return FALSE;
}
@@ -191,7 +253,7 @@ HyperTraceLbrEnable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReques
//
// Set successful status
//
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
return TRUE;
}
@@ -211,7 +273,7 @@ HyperTraceLbrDisable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReque
//
if (!g_LastBranchRecordEnabled)
{
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
return FALSE;
}
@@ -228,7 +290,7 @@ HyperTraceLbrDisable(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationReque
//
// Set successful status
//
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
return TRUE;
}
@@ -248,7 +310,7 @@ HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest
//
if (!g_LastBranchRecordEnabled)
{
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
return FALSE;
}
@@ -265,7 +327,7 @@ HyperTraceLbrFlush(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest
//
// Set successful status
//
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
return TRUE;
}
@@ -285,7 +347,7 @@ HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
//
if (!g_LastBranchRecordEnabled)
{
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
return FALSE;
}
@@ -299,7 +361,7 @@ HyperTraceLbrSave(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest)
//
// The operation was successful
//
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
return TRUE;
}
@@ -319,7 +381,7 @@ HyperTraceLbrPrint(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest
//
if (!g_LastBranchRecordEnabled)
{
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
return FALSE;
}
@@ -338,7 +400,7 @@ HyperTraceLbrPrint(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOperationRequest
//
// The operation was successful
//
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
return TRUE;
}
@@ -358,7 +420,7 @@ HyperTraceLbrUpdateFilterOptions(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOp
//
if (!g_LastBranchRecordEnabled)
{
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
return FALSE;
}
@@ -370,7 +432,7 @@ HyperTraceLbrUpdateFilterOptions(HYPERTRACE_LBR_OPERATION_PACKETS * HyperTraceOp
//
// The operation was successful
//
- HyperTraceSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
+ HyperTraceLbrSetKernelStatus(HyperTraceOperationRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
return TRUE;
}
@@ -387,21 +449,12 @@ HyperTraceLbrPerformDump(HYPERTRACE_LBR_DUMP_PACKETS * LbrDumpRequest)
{
ULONG ProcessorsCount;
- //
- // Check if the hypertrace module is initialized before performing any dump operation
- //
- if (!g_HyperTraceCallbacksInitialized)
- {
- LbrDumpRequest->KernelStatus = DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED;
- return FALSE;
- }
-
//
// Check if LBR is enabled or not before dumping
//
if (!g_LastBranchRecordEnabled)
{
- LbrDumpRequest->KernelStatus = DEBUGGER_ERROR_LBR_ALREADY_DISABLED;
+ HyperTraceLbrDumpSetKernelStatus(LbrDumpRequest, DEBUGGER_ERROR_LBR_ALREADY_DISABLED);
return FALSE;
}
@@ -415,7 +468,7 @@ HyperTraceLbrPerformDump(HYPERTRACE_LBR_DUMP_PACKETS * LbrDumpRequest)
//
if (LbrDumpRequest->CoreId >= ProcessorsCount)
{
- LbrDumpRequest->KernelStatus = DEBUGGER_ERROR_INVALID_CORE_ID;
+ HyperTraceLbrDumpSetKernelStatus(LbrDumpRequest, DEBUGGER_ERROR_INVALID_CORE_ID);
return FALSE;
}
@@ -449,7 +502,7 @@ HyperTraceLbrPerformDump(HYPERTRACE_LBR_DUMP_PACKETS * LbrDumpRequest)
//
// Set successful status
//
- LbrDumpRequest->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+ HyperTraceLbrDumpSetKernelStatus(LbrDumpRequest, DEBUGGER_OPERATION_WAS_SUCCESSFUL);
return TRUE;
}
@@ -471,7 +524,7 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
//
if (!g_HyperTraceCallbacksInitialized)
{
- LbrOperationRequest->KernelStatus = DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED;
+ HyperTraceLbrSetKernelStatus(LbrOperationRequest, DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED);
return FALSE;
}
@@ -514,8 +567,8 @@ HyperTraceLbrPerformOperation(HYPERTRACE_LBR_OPERATION_PACKETS * LbrOperationReq
default:
- Status = FALSE;
- LbrOperationRequest->KernelStatus = DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE;
+ Status = FALSE;
+ HyperTraceLbrSetKernelStatus(LbrOperationRequest, DEBUGGER_ERROR_INVALID_HYPERTRACE_OPERATION_TYPE);
break;
}
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 7e341e82..7f549537 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -36,6 +36,9 @@ HyperTraceUnInit();
// LBR Functions //
//////////////////////////////////////////////////
+IMPORT_EXPORT_HYPERTRACE BOOLEAN
+HyperTraceLbrIsSupported(UINT32 * Capacity);
+
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrCheck();
From 81f3d9f3d252ae9e6e955189205dffe73d5f10ad Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 26 May 2026 16:41:23 +0200
Subject: [PATCH 190/323] export HyperTrace LBR support and capacity function
to the VMM and HyperEvade module
---
hyperdbg/hyperhv/code/interface/Callback.c | 20 ++++++++++++++++++++
hyperdbg/hyperhv/code/interface/HyperEvade.c | 5 +++++
hyperdbg/hyperhv/header/interface/Callback.h | 6 ++++++
hyperdbg/hyperkd/code/driver/Loader.c | 5 +++++
hyperdbg/include/SDK/modules/HyperEvade.h | 11 +++++++++++
hyperdbg/include/SDK/modules/VMM.h | 11 +++++++++++
6 files changed, 58 insertions(+)
diff --git a/hyperdbg/hyperhv/code/interface/Callback.c b/hyperdbg/hyperhv/code/interface/Callback.c
index 78da4bfc..ff0ab2c6 100644
--- a/hyperdbg/hyperhv/code/interface/Callback.c
+++ b/hyperdbg/hyperhv/code/interface/Callback.c
@@ -200,6 +200,26 @@ VmmCallbackUnhandledEptViolation(UINT32 CoreId,
return g_Callbacks.VmmCallbackCheckUnhandledEptViolations(CoreId, ViolationQualification, GuestPhysicalAddr);
}
+/**
+ * @brief routine callback to check if LBR is supported and get the LBR capacity if supported
+ *
+ * @param Capacity
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+HyperTraceCallbackLbrIsSupported(UINT32 * Capacity)
+{
+ if (g_Callbacks.HyperTraceLbrIsSupported == NULL)
+ {
+ //
+ // ignore it as it's not handled
+ //
+ return FALSE;
+ }
+ return g_Callbacks.HyperTraceLbrIsSupported(Capacity);
+}
+
/**
* @brief routine callback to handle breakpoint exception
*
diff --git a/hyperdbg/hyperhv/code/interface/HyperEvade.c b/hyperdbg/hyperhv/code/interface/HyperEvade.c
index 2ff3d9b1..bb726b93 100644
--- a/hyperdbg/hyperhv/code/interface/HyperEvade.c
+++ b/hyperdbg/hyperhv/code/interface/HyperEvade.c
@@ -38,6 +38,11 @@ TransparentHideDebuggerWrapper(DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE * Tra
HyperevadeCallbacks.LogCallbackSendBuffer = g_Callbacks.LogCallbackSendBuffer;
HyperevadeCallbacks.LogCallbackCheckIfBufferIsFull = g_Callbacks.LogCallbackCheckIfBufferIsFull;
+ //
+ // HyperTrace callback(s)
+ //
+ HyperevadeCallbacks.HyperTraceLbrIsSupported = HyperTraceCallbackLbrIsSupported;
+
//
// Memory callbacks
//
diff --git a/hyperdbg/hyperhv/header/interface/Callback.h b/hyperdbg/hyperhv/header/interface/Callback.h
index c97d1b44..5b6a8b2d 100644
--- a/hyperdbg/hyperhv/header/interface/Callback.h
+++ b/hyperdbg/hyperhv/header/interface/Callback.h
@@ -53,6 +53,12 @@ VmmCallbackRegisteredMtfHandler(UINT32 CoreId);
VOID
VmmCallbackNmiBroadcastRequestHandler(UINT32 CoreId, BOOLEAN IsOnVmxNmiHandler);
+//
+// HyperTrace Callbacks
+//
+BOOLEAN
+HyperTraceCallbackLbrIsSupported(UINT32 * Capacity);
+
//
// Debugging Callbacks
//
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index ed04fe90..8375385b 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -124,6 +124,11 @@ LoaderInitVmmAndDebugger()
VmmCallbacks.LogCallbackSendBuffer = LogCallbackSendBuffer;
VmmCallbacks.LogCallbackCheckIfBufferIsFull = LogCallbackCheckIfBufferIsFull;
+ //
+ // Fill the HyperTrace callback(s)
+ //
+ VmmCallbacks.HyperTraceLbrIsSupported = HyperTraceLbrIsSupported;
+
//
// Fill the VMM callbacks
//
diff --git a/hyperdbg/include/SDK/modules/HyperEvade.h b/hyperdbg/include/SDK/modules/HyperEvade.h
index 1a42befb..edaa99a2 100644
--- a/hyperdbg/include/SDK/modules/HyperEvade.h
+++ b/hyperdbg/include/SDK/modules/HyperEvade.h
@@ -48,6 +48,12 @@ typedef BOOLEAN (*LOG_CALLBACK_SEND_BUFFER)(_In_ UINT32
*/
typedef BOOLEAN (*LOG_CALLBACK_CHECK_IF_BUFFER_IS_FULL)(BOOLEAN Priority);
+/**
+ * @brief A function that checks if LBR is supported on the current CPU and gets its capacity
+ *
+ */
+typedef BOOLEAN (*HYPERTRACE_LBR_IS_SUPPORTED)(UINT32 * Capacity);
+
/**
* @brief A function that checks the validity and safety of the target address
*
@@ -112,6 +118,11 @@ typedef struct _HYPEREVADE_CALLBACKS
LOG_CALLBACK_SEND_BUFFER LogCallbackSendBuffer;
LOG_CALLBACK_CHECK_IF_BUFFER_IS_FULL LogCallbackCheckIfBufferIsFull;
+ //
+ // HyperTrace callback(s)
+ //
+ HYPERTRACE_LBR_IS_SUPPORTED HyperTraceLbrIsSupported;
+
//
// *** HYPEREVADE callbacks ***
//
diff --git a/hyperdbg/include/SDK/modules/VMM.h b/hyperdbg/include/SDK/modules/VMM.h
index 9aa3a487..74685d9a 100644
--- a/hyperdbg/include/SDK/modules/VMM.h
+++ b/hyperdbg/include/SDK/modules/VMM.h
@@ -48,6 +48,12 @@ typedef BOOLEAN (*LOG_CALLBACK_SEND_BUFFER)(_In_ UINT32
*/
typedef BOOLEAN (*LOG_CALLBACK_CHECK_IF_BUFFER_IS_FULL)(BOOLEAN Priority);
+/**
+ * @brief A function that checks if LBR is supported on the current CPU and gets its capacity
+ *
+ */
+typedef BOOLEAN (*HYPERTRACE_LBR_IS_SUPPORTED)(UINT32 * Capacity);
+
/**
* @brief A function that handles trigger events
*
@@ -173,6 +179,11 @@ typedef struct _VMM_CALLBACKS
LOG_CALLBACK_SEND_BUFFER LogCallbackSendBuffer; // Fixed
LOG_CALLBACK_CHECK_IF_BUFFER_IS_FULL LogCallbackCheckIfBufferIsFull; // Fixed
+ //
+ // HyperTrace callback(s)
+ //
+ HYPERTRACE_LBR_IS_SUPPORTED HyperTraceLbrIsSupported; // Fixed
+
//
// VMM callbacks
//
From 167931fc01eccf942a587cd664f48c6eead176c8 Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 26 May 2026 19:52:04 +0200
Subject: [PATCH 191/323] load the vmm module over IOCTL instead of CreateFile
---
hyperdbg/hyperkd/code/driver/Driver.c | 24 +--
hyperdbg/hyperkd/code/driver/Ioctl.c | 31 +++-
hyperdbg/include/SDK/headers/Ioctls.h | 98 +++++++------
.../SDK/imports/user/HyperDbgLibImports.h | 4 +-
hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 138 +++++++++++++-----
.../commands/debugging-commands/load.cpp | 5 +-
.../commands/debugging-commands/unload.cpp | 2 +-
.../code/debugger/kernel-level/kd.cpp | 2 +-
hyperdbg/libhyperdbg/code/export/export.cpp | 12 +-
hyperdbg/libhyperdbg/header/libhyperdbg.h | 4 +-
10 files changed, 210 insertions(+), 110 deletions(-)
diff --git a/hyperdbg/hyperkd/code/driver/Driver.c b/hyperdbg/hyperkd/code/driver/Driver.c
index 2cbe2ecf..643aac1c 100644
--- a/hyperdbg/hyperkd/code/driver/Driver.c
+++ b/hyperdbg/hyperkd/code/driver/Driver.c
@@ -155,27 +155,13 @@ DrvCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp)
}
//
- // Initialize the vmm and the debugger
+ // Indicate that the operation was successful
//
- if (LoaderInitVmmAndDebugger())
- {
- Irp->IoStatus.Status = STATUS_SUCCESS;
- Irp->IoStatus.Information = 0;
- IoCompleteRequest(Irp, IO_NO_INCREMENT);
+ Irp->IoStatus.Status = STATUS_SUCCESS;
+ Irp->IoStatus.Information = 0;
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
- return STATUS_SUCCESS;
- }
- else
- {
- //
- // There was a problem, so not loaded
- //
- Irp->IoStatus.Status = STATUS_UNSUCCESSFUL;
- Irp->IoStatus.Information = 0;
- IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
- return STATUS_UNSUCCESSFUL;
- }
+ return STATUS_SUCCESS;
}
/**
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index 3ba4008a..31151c0a 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -134,10 +134,10 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
PHYPERTRACE_LBR_DUMP_PACKETS HyperTraceLbrdumpRequest;
PHYPERTRACE_PT_OPERATION_PACKETS HyperTracePtOperationRequest;
PVOID BufferToStoreThreadsAndProcessesDetails;
- NTSTATUS Status;
ULONG InBuffLength; // Input buffer length
ULONG OutBuffLength; // Output buffer length
SIZE_T ReturnSize;
+ NTSTATUS Status = STATUS_SUCCESS;
BOOLEAN DoNotChangeInformation = FALSE;
//
@@ -152,6 +152,35 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
switch (IrpStack->Parameters.DeviceIoControl.IoControlCode)
{
+ case IOCTL_INIT_VMM:
+
+ //
+ // Initialize the vmm and the debugger
+ //
+ if (LoaderInitVmmAndDebugger())
+ {
+ DoNotChangeInformation = FALSE;
+ Status = STATUS_SUCCESS;
+ }
+ else
+ {
+ //
+ // There was a problem, so not loaded
+ //
+ DoNotChangeInformation = FALSE;
+ Status = STATUS_UNSUCCESSFUL;
+ }
+
+ break;
+
+ case IOCTL_INIT_HYPERTRACE:
+
+ //
+ // Initialize HyperTrace
+ //
+
+ break;
+
case IOCTL_REGISTER_EVENT:
//
diff --git a/hyperdbg/include/SDK/headers/Ioctls.h b/hyperdbg/include/SDK/headers/Ioctls.h
index ff4baae2..5969c07f 100644
--- a/hyperdbg/include/SDK/headers/Ioctls.h
+++ b/hyperdbg/include/SDK/headers/Ioctls.h
@@ -57,110 +57,124 @@
// IOCTLs //
//////////////////////////////////////////////////
+/**
+ * @brief ioctl, initialize the VMM module
+ *
+ */
+#define IOCTL_INIT_VMM \
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x801, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+/**
+ * @brief ioctl, initialize the HyperTrace module
+ *
+ */
+#define IOCTL_INIT_HYPERTRACE \
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x802, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
/**
* @brief ioctl, register a new event
*
*/
#define IOCTL_REGISTER_EVENT \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x810, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, irp pending mechanism for reading from message tracing buffers
*
*/
#define IOCTL_RETURN_IRP_PENDING_PACKETS_AND_DISALLOW_IOCTL \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x801, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x811, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to terminate vmx and exit form debugger
*
*/
#define IOCTL_TERMINATE_VMX \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x802, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x812, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to read memory
*
*/
#define IOCTL_DEBUGGER_READ_MEMORY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x803, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x813, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to read or write on a special MSR
*
*/
#define IOCTL_DEBUGGER_READ_OR_WRITE_MSR \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x804, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x814, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to read page table entries
*
*/
#define IOCTL_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x805, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x815, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, register an event
*
*/
#define IOCTL_DEBUGGER_REGISTER_EVENT \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x806, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x816, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, add action to event
*
*/
#define IOCTL_DEBUGGER_ADD_ACTION_TO_EVENT \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x807, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x817, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to enable or disable transparent-mode
*
*/
#define IOCTL_DEBUGGER_HIDE_AND_UNHIDE_TO_TRANSPARENT_THE_DEBUGGER \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x808, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x818, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, for !va2pa and !pa2va commands
*
*/
#define IOCTL_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x809, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x819, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to edit virtual and physical memory
*
*/
#define IOCTL_DEBUGGER_EDIT_MEMORY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81a, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to search virtual and physical memory
*
*/
#define IOCTL_DEBUGGER_SEARCH_MEMORY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80b, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81b, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to modify an event (enable/disable/clear)
*
*/
#define IOCTL_DEBUGGER_MODIFY_EVENTS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81c, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, flush the kernel buffers
*
*/
#define IOCTL_DEBUGGER_FLUSH_LOGGING_BUFFERS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81d, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, attach or detach user-mode processes
*
*/
#define IOCTL_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81e, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, print states (Deprecated)
@@ -168,186 +182,186 @@
*
*/
#define IOCTL_DEBUGGER_PRINT \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x80f, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81f, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, prepare debuggee
*
*/
#define IOCTL_PREPARE_DEBUGGEE \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x810, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x820, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, pause and halt the system
*
*/
#define IOCTL_PAUSE_PACKET_RECEIVED \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x811, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x821, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, send a signal that execution of command finished
*
*/
#define IOCTL_SEND_SIGNAL_EXECUTION_IN_DEBUGGEE_FINISHED \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x812, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x822, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, send user-mode messages to the debugger
*
*/
#define IOCTL_SEND_USERMODE_MESSAGES_TO_DEBUGGER \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x813, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x823, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, send general buffer from debuggee to debugger
*
*/
#define IOCTL_SEND_GENERAL_BUFFER_FROM_DEBUGGEE_TO_DEBUGGER \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x814, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x824, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform kernel-side tests
*
*/
#define IOCTL_PERFORM_KERNEL_SIDE_TESTS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x815, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x825, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to reserve pre-allocated pools
*
*/
#define IOCTL_RESERVE_PRE_ALLOCATED_POOLS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x816, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x826, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to send user debugger commands
*
*/
#define IOCTL_SEND_USER_DEBUGGER_COMMANDS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x817, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x827, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to get active threads/processes that are debugging
*
*/
#define IOCTL_GET_DETAIL_OF_ACTIVE_THREADS_AND_PROCESSES \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x818, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x828, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to get user mode modules details
*
*/
#define IOCTL_GET_USER_MODE_MODULE_DETAILS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x819, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x829, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, query count of active threads or processes
*
*/
#define IOCTL_QUERY_COUNT_OF_ACTIVE_PROCESSES_OR_THREADS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x82a, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to get list threads/processes
*
*/
#define IOCTL_GET_LIST_OF_THREADS_AND_PROCESSES \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81b, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x82b, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, query the current process details
*
*/
#define IOCTL_QUERY_CURRENT_PROCESS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x82c, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, query the current thread details
*
*/
#define IOCTL_QUERY_CURRENT_THREAD \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x82d, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request service from the reversing machine
*
*/
#define IOCTL_REQUEST_REV_MACHINE_SERVICE \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x82e, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to bring pages in
*
*/
#define IOCTL_DEBUGGER_BRING_PAGES_IN \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81f, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x82f, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to preactivate a functionality
*
*/
#define IOCTL_PREACTIVATE_FUNCTIONALITY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x820, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x830, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to enumerate PCIe endpoints
*
*/
#define IOCTL_PCIE_ENDPOINT_ENUM \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x821, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x831, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform actions related to APIC
*
*/
#define IOCTL_PERFORM_ACTIONS_ON_APIC \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x822, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x832, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to query for PCI endpoint info
*
*/
#define IOCTL_PCIDEVINFO_ENUM \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x823, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x833, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to query the IDT entries
*
*/
#define IOCTL_QUERY_IDT_ENTRY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x824, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x834, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to set breakpoint for the user debugger
*
*/
#define IOCTL_SET_BREAKPOINT_USER_DEBUGGER \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x825, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x835, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform SMI operations
*
*/
#define IOCTL_PERFORM_SMI_OPERATION \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x826, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x836, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform HyperTrace LBR operations
*
*/
#define IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x827, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x837, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform HyperTrace LBR dump
*
*/
#define IOCTL_PERFORM_HYPERTRACE_LBR_DUMP \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x828, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x838, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform HyperTrace PT operations
*
*/
#define IOCTL_PERFORM_HYPERTRACE_PT_OPERATION \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x829, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x839, METHOD_BUFFERED, FILE_ANY_ACCESS)
diff --git a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
index 75448bae..13877be9 100644
--- a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
+++ b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
@@ -43,10 +43,10 @@ IMPORT_EXPORT_LIBHYPERDBG INT
hyperdbg_u_unload_vmm();
IMPORT_EXPORT_LIBHYPERDBG INT
-hyperdbg_u_install_vmm_driver();
+hyperdbg_u_install_kd_driver();
IMPORT_EXPORT_LIBHYPERDBG INT
-hyperdbg_u_uninstall_vmm_driver();
+hyperdbg_u_uninstall_kd_driver();
IMPORT_EXPORT_LIBHYPERDBG INT
hyperdbg_u_stop_vmm_driver();
diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
index 4595a8b9..fc20dadb 100644
--- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
+++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
@@ -554,13 +554,13 @@ SetDebugPrivilege()
}
/**
- * @brief Install VMM driver
+ * @brief Install KD (Kernel Debugger) driver
*
* @return INT return zero if it was successful or non-zero if there
* was error
*/
INT
-HyperDbgInstallVmmDriver()
+HyperDbgInstallKdDriver()
{
//
// The driver is not started yet so let us the install driver
@@ -656,33 +656,75 @@ HyperDbgUninstallDriver(LPCTSTR DriverName)
}
/**
- * @brief Remove the VMM driver
+ * @brief Remove the KD (Kernel Debugger) driver
*
* @return INT return zero if it was successful or non-zero if there
* was error
*/
INT
-HyperDbgUninstallVmmDriver()
+HyperDbgUninstallKdDriver()
{
return HyperDbgUninstallDriver(g_DriverName);
}
/**
- * @brief Create handle from VMM module
+ * @brief Initialize VMM module
*
* @return INT return zero if it was successful or non-zero if there
* was error
*/
INT
-HyperDbgCreateHandleFromVmmModule()
+HyperDbgInitVmmModule()
+{
+ BOOL Status;
+
+ AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnOne);
+
+ //
+ // Send IOCTL to initialize VMM module
+ //
+ Status = DeviceIoControl(g_DeviceHandle, // Handle to device
+ IOCTL_INIT_VMM, // IO Control Code (IOCTL)
+ NULL, // Input Buffer to driver.
+ 0, // Length of input buffer in bytes. (x 2 is bcuz
+ // as the driver is x64 and has 64 bit values)
+ NULL, // Output Buffer from driver.
+ 0, // Length of output buffer in bytes.
+ NULL, // Bytes placed in buffer.
+ NULL // synchronous call
+ );
+
+ //
+ // check if the IOCTL was successful, if not show the error message and return
+ //
+ if (!Status)
+ {
+ ShowMessages("ioctl failed with code 0x%x\n", GetLastError());
+ return 1;
+ }
+
+ //
+ // VMM module is initialized at this point
+ //
+ return 0;
+}
+
+/**
+ * @brief Create handle from KD (HyperKD) module
+ *
+ * @return INT return zero if it was successful or non-zero if there
+ * was error
+ */
+INT
+HyperDbgCreateHandleFromKdModule()
{
DWORD ErrorNum;
DWORD ThreadId;
if (g_DeviceHandle)
{
- ShowMessages("handle of the driver found, if you use 'load' before, please "
- "unload it using 'unload'\n");
+ ShowMessages("handle of the driver found, if you use the 'load' command before, please "
+ "unload it using the 'unload' command\n");
return 1;
}
@@ -850,6 +892,52 @@ HyperDbgUnloadVmm()
return 0;
}
+/**
+ * @brief load kd module
+ *
+ * @return int return zero if it was successful or non-zero if there
+ */
+INT
+HyperDbgLoadKdModule()
+{
+ //
+ // Create event to show if the kd module is loaded or not
+ //
+ g_IsDriverLoadedSuccessfully = CreateEvent(NULL, FALSE, FALSE, NULL);
+
+ if (HyperDbgCreateHandleFromKdModule() == 1)
+ {
+ //
+ // No need to handle anymore
+ //
+ CloseHandle(g_IsDriverLoadedSuccessfully);
+ return 1;
+ }
+
+ //
+ // KD module is loaded at this point
+ //
+
+ //
+ // We wait for the first message from the kernel debugger to continue
+ //
+ WaitForSingleObject(
+ g_IsDriverLoadedSuccessfully,
+ INFINITE);
+
+ //
+ // No need to handle anymore
+ //
+ CloseHandle(g_IsDriverLoadedSuccessfully);
+
+ //
+ // If we reach here so the module are loaded
+ //
+ g_IsDebuggerModulesLoaded = TRUE;
+
+ return 0;
+}
+
/**
* @brief load vmm module
*
@@ -901,39 +989,21 @@ HyperDbgLoadVmmModule()
}
//
- // Create event to show if the hypervisor is loaded or not
+ // Load the KD module and create handle to it
//
- g_IsDriverLoadedSuccessfully = CreateEvent(NULL, FALSE, FALSE, NULL);
-
- if (HyperDbgCreateHandleFromVmmModule() == 1)
+ if (HyperDbgLoadKdModule() == 1)
{
- //
- // No need to handle anymore
- //
- CloseHandle(g_IsDriverLoadedSuccessfully);
return 1;
}
//
- // Vmm module (Hypervisor) is loaded
+ // Initialize VMM module
//
-
- //
- // We wait for the first message from the kernel debugger to continue
- //
- WaitForSingleObject(
- g_IsDriverLoadedSuccessfully,
- INFINITE);
-
- //
- // No need to handle anymore
- //
- CloseHandle(g_IsDriverLoadedSuccessfully);
-
- //
- // If we reach here so the module are loaded
- //
- g_IsDebuggerModulesLoaded = TRUE;
+ if (HyperDbgInitVmmModule() == 1)
+ {
+ ShowMessages("err, initializing VMM module\n");
+ return 1;
+ }
ShowMessages("vmm module is running...\n");
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
index 9f29970e..65043e1d 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
@@ -33,6 +33,7 @@ CommandLoadHelp()
ShowMessages("\n");
ShowMessages("\t\te.g : load vmm\n");
+ ShowMessages("\t\te.g : load trace\n");
}
/**
@@ -64,7 +65,7 @@ CommandLoad(vector CommandTokens, string Command)
//
// Check for the module
//
- if (CompareLowerCaseStrings(CommandTokens.at(1), "vmm"))
+ if (CompareLowerCaseStrings(CommandTokens.at(1), "vmm") || CompareLowerCaseStrings(CommandTokens.at(1), "vm"))
{
//
// Check to make sure that the driver is not already loaded
@@ -81,7 +82,7 @@ CommandLoad(vector CommandTokens, string Command)
//
ShowMessages("loading the vmm driver\n");
- if (HyperDbgInstallVmmDriver() == 1 || HyperDbgLoadVmmModule() == 1)
+ if (HyperDbgInstallKdDriver() == 1 || HyperDbgLoadVmmModule() == 1)
{
ShowMessages("failed to install or load the driver\n");
return;
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp
index e42b0534..24a42a46 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp
@@ -105,7 +105,7 @@ CommandUnload(vector CommandTokens, string Command)
//
// Uninstall the driver
//
- if (HyperDbgUninstallVmmDriver())
+ if (HyperDbgUninstallKdDriver())
{
ShowMessages("err, failed to uninstall the driver\n");
return;
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
index 3a934726..3009dac4 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
@@ -2635,7 +2635,7 @@ KdPrepareAndConnectDebugPort(const CHAR * PortName,
//
// Load the VMM
//
- if (HyperDbgInstallVmmDriver() == 1 || HyperDbgLoadVmmModule() == 1)
+ if (HyperDbgInstallKdDriver() == 1 || HyperDbgLoadVmmModule() == 1)
{
CloseHandle(Comm);
g_SerialRemoteComPortHandle = NULL;
diff --git a/hyperdbg/libhyperdbg/code/export/export.cpp b/hyperdbg/libhyperdbg/code/export/export.cpp
index a8f3041e..cc9cab13 100644
--- a/hyperdbg/libhyperdbg/code/export/export.cpp
+++ b/hyperdbg/libhyperdbg/code/export/export.cpp
@@ -64,25 +64,25 @@ hyperdbg_u_unload_vmm()
}
/**
- * @brief Install the VMM driver
+ * @brief Install the KD driver
*
* @return INT Returns 0 if it was successful and 1 if it was failed
*/
INT
-hyperdbg_u_install_vmm_driver()
+hyperdbg_u_install_kd_driver()
{
- return HyperDbgInstallVmmDriver();
+ return HyperDbgInstallKdDriver();
}
/**
- * @brief Uninstall the VMM driver
+ * @brief Uninstall the KD (Kernel Debugger) driver
*
* @return INT Returns 0 if it was successful and 1 if it was failed
*/
INT
-hyperdbg_u_uninstall_vmm_driver()
+hyperdbg_u_uninstall_kd_driver()
{
- return HyperDbgUninstallVmmDriver();
+ return HyperDbgUninstallKdDriver();
}
/**
diff --git a/hyperdbg/libhyperdbg/header/libhyperdbg.h b/hyperdbg/libhyperdbg/header/libhyperdbg.h
index 3e18f7cb..b11d430f 100644
--- a/hyperdbg/libhyperdbg/header/libhyperdbg.h
+++ b/hyperdbg/libhyperdbg/header/libhyperdbg.h
@@ -22,10 +22,10 @@ INT
HyperDbgUnloadVmm();
INT
-HyperDbgInstallVmmDriver();
+HyperDbgInstallKdDriver();
INT
-HyperDbgUninstallVmmDriver();
+HyperDbgUninstallKdDriver();
INT
HyperDbgLoadVmmModule();
From 0a279b5dbac889f023d764c7b2e17cd2c393f3cf Mon Sep 17 00:00:00 2001
From: sina
Date: Wed, 27 May 2026 20:21:21 +0200
Subject: [PATCH 192/323] check IOCTL to load VMM module
---
.../hyperdbg_driver/code/driver/Driver.c | 1 +
hyperdbg/hyperkd/code/driver/Driver.c | 31 +-
hyperdbg/hyperkd/code/driver/Ioctl.c | 2614 +++++++++--------
hyperdbg/hyperkd/code/driver/Loader.c | 95 +-
hyperdbg/hyperkd/header/driver/Loader.h | 3 +
hyperdbg/hyperkd/header/globals/Global.h | 6 +
hyperdbg/include/SDK/headers/Ioctls.h | 100 +-
hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 37 +-
.../commands/debugging-commands/load.cpp | 1 -
9 files changed, 1492 insertions(+), 1396 deletions(-)
diff --git a/examples/kernel/hyperdbg_driver/code/driver/Driver.c b/examples/kernel/hyperdbg_driver/code/driver/Driver.c
index 44922817..9a44e862 100644
--- a/examples/kernel/hyperdbg_driver/code/driver/Driver.c
+++ b/examples/kernel/hyperdbg_driver/code/driver/Driver.c
@@ -83,6 +83,7 @@ DriverEntry(
//
DbgPrint("HyperDbg's device and major functions are loaded");
+
ASSERT(NT_SUCCESS(Ntstatus));
return Ntstatus;
}
diff --git a/hyperdbg/hyperkd/code/driver/Driver.c b/hyperdbg/hyperkd/code/driver/Driver.c
index 643aac1c..48059898 100644
--- a/hyperdbg/hyperkd/code/driver/Driver.c
+++ b/hyperdbg/hyperkd/code/driver/Driver.c
@@ -101,7 +101,7 @@ DrvUnload(PDRIVER_OBJECT DriverObject)
IoDeleteDevice(DriverObject->DeviceObject);
//
- // Unloading VMM and Debugger
+ // Unloading Log Tracer
//
LoaderUninitializeLogTracer();
}
@@ -155,13 +155,32 @@ DrvCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp)
}
//
- // Indicate that the operation was successful
+ // Initialize HyperLog and Log Tracer
//
- Irp->IoStatus.Status = STATUS_SUCCESS;
- Irp->IoStatus.Information = 0;
- IoCompleteRequest(Irp, IO_NO_INCREMENT);
+ if (LoaderInitHyperLog())
+ {
+ //
+ // Set the variable so next CreateFile won't call log initializer again
+ //
+ g_HandleInUse = TRUE;
- return STATUS_SUCCESS;
+ Irp->IoStatus.Status = STATUS_SUCCESS;
+ Irp->IoStatus.Information = 0;
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+ return STATUS_SUCCESS;
+ }
+ else
+ {
+ //
+ // There was a problem, so not loaded
+ //
+ Irp->IoStatus.Status = STATUS_UNSUCCESSFUL;
+ Irp->IoStatus.Information = 0;
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+ return STATUS_UNSUCCESSFUL;
+ }
}
/**
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index 31151c0a..a3882cc9 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -83,6 +83,31 @@ DrvAdjustStatusAndSetOutputSize(UINT32 ExpectedOutputBufferSize,
*DoNotChangeInformation = TRUE;
}
+/**
+ * @brief Checks whether the IOCTL request is allowed based on the current state of the driver and the system
+ * @param Ioctl The IOCTL code of the request
+ *
+ * @return BOOLEAN TRUE if the IOCTL request is allowed, FALSE otherwise
+ */
+BOOLEAN
+IoctlCheckIoctlAllowed(ULONG Ioctl)
+{
+ ULONG IoctlFunction = CTL_CODE_FUNCTION(Ioctl);
+
+ //
+ // First 10 IOCTLs are about loading and initializing modules
+ //
+ if (IoctlFunction > IOCTL_START_CODE && IoctlFunction <= IOCTL_START_CODE + 0x10)
+ {
+ //
+ // Allow these IOCTLs even if we don't allow IOCTL from user-mode, because they are used for loading and initializing the driver and its components
+ //
+ return TRUE;
+ }
+
+ return g_AllowIoctlFromUsermode;
+}
+
/**
* @brief Driver IOCTL Dispatcher
*
@@ -139,6 +164,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
SIZE_T ReturnSize;
NTSTATUS Status = STATUS_SUCCESS;
BOOLEAN DoNotChangeInformation = FALSE;
+ UINT32 Ioctl = 0;
//
// Here's the best place to see if there is any allocation pending
@@ -146,1313 +172,1323 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
PoolManagerCheckAndPerformAllocationAndDeallocation();
- if (g_AllowIoctlFromUsermode)
+ //
+ // Get the current stack location of the IRP to access the parameters of the IOCTL request
+ //
+ IrpStack = IoGetCurrentIrpStackLocation(Irp);
+
+ //
+ // Get the IOCTL code from the parameters
+ //
+ Ioctl = IrpStack->Parameters.DeviceIoControl.IoControlCode;
+
+ //
+ // If we don't allow IOCTL from user-mode, we just complete the request with success, and return
+ //
+ if (!IoctlCheckIoctlAllowed(Ioctl))
{
- IrpStack = IoGetCurrentIrpStackLocation(Irp);
+ Irp->IoStatus.Status = STATUS_SUCCESS;
+ Irp->IoStatus.Information = 0;
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
- switch (IrpStack->Parameters.DeviceIoControl.IoControlCode)
+ return STATUS_SUCCESS;
+ }
+
+ switch (Ioctl)
+ {
+ case IOCTL_INIT_VMM:
+
+ //
+ // Initialize the vmm and the debugger
+ //
+ if (LoaderInitVmmAndDebugger())
{
- case IOCTL_INIT_VMM:
-
- //
- // Initialize the vmm and the debugger
- //
- if (LoaderInitVmmAndDebugger())
- {
- DoNotChangeInformation = FALSE;
- Status = STATUS_SUCCESS;
- }
- else
- {
- //
- // There was a problem, so not loaded
- //
- DoNotChangeInformation = FALSE;
- Status = STATUS_UNSUCCESSFUL;
- }
-
- break;
-
- case IOCTL_INIT_HYPERTRACE:
-
- //
- // Initialize HyperTrace
- //
-
- break;
-
- case IOCTL_REGISTER_EVENT:
-
- //
- // First validate the parameters.
- //
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_REGISTER_EVENT || Irp->AssociatedIrp.SystemBuffer == NULL)
- {
- Status = STATUS_INVALID_PARAMETER;
- LogError("Err, invalid parameter to IOCTL dispatcher");
- break;
- }
-
- //
- // IRPs supply a pointer to a buffer at Irp->AssociatedIrp.SystemBuffer.
- // This buffer represents both the input buffer and the output buffer that
- // are specified in calls to DeviceIoControl
- //
- RegisterEventRequest = (PREGISTER_NOTIFY_BUFFER)Irp->AssociatedIrp.SystemBuffer;
-
- switch (RegisterEventRequest->Type)
- {
- case IRP_BASED:
-
- LogRegisterIrpBasedNotification((PVOID)Irp, &Status);
-
- break;
- case EVENT_BASED:
-
- if (LogRegisterEventBasedNotification((PVOID)Irp))
- {
- Status = STATUS_SUCCESS;
- }
- else
- {
- Status = STATUS_UNSUCCESSFUL;
- }
-
- break;
- default:
- LogError("Err, unknown notification type from user-mode");
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- break;
-
- case IOCTL_RETURN_IRP_PENDING_PACKETS_AND_DISALLOW_IOCTL:
-
- //
- // Disallow new IOCTL
- //
- g_AllowIoctlFromUsermode = FALSE;
-
- //
- // Send an immediate message, and we're no longer get new IRP
- //
- LogCallbackSendBuffer(OPERATION_HYPERVISOR_DRIVER_END_OF_IRPS,
- "$",
- sizeof(CHAR),
- TRUE);
-
Status = STATUS_SUCCESS;
-
- break;
-
- case IOCTL_TERMINATE_VMX:
-
- //
- // Uninitialize the debugger and its sub-mechanisms
- //
- DebuggerUninitialize();
-
- //
- // Terminate VMX
- //
- VmFuncUninitVmm();
-
- Status = STATUS_SUCCESS;
-
- break;
-
- case IOCTL_DEBUGGER_READ_MEMORY:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_READ_MEMORY,
- (PVOID *)&DebuggerReadMemRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- if (DebuggerCommandReadMemory(DebuggerReadMemRequest,
- ((CHAR *)DebuggerReadMemRequest) + SIZEOF_DEBUGGER_READ_MEMORY,
- &ReturnSize) == TRUE)
- {
- //
- // Return the header a read bytes
- //
- DrvAdjustStatusAndSetOutputSize((UINT32)(ReturnSize + SIZEOF_DEBUGGER_READ_MEMORY), &DoNotChangeInformation, Irp, &Status);
- }
- else
- {
- //
- // Just return the header to the user-mode
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_READ_MEMORY, &DoNotChangeInformation, Irp, &Status);
- }
-
- break;
-
- case IOCTL_DEBUGGER_READ_OR_WRITE_MSR:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_READ_AND_WRITE_ON_MSR,
- (PVOID *)&DebuggerReadOrWriteMsrRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- Status = DebuggerReadOrWriteMsr(DebuggerReadOrWriteMsrRequest, (UINT64 *)DebuggerReadOrWriteMsrRequest, &ReturnSize);
-
- //
- // Set the size
- //
- if (Status == STATUS_SUCCESS)
- {
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize((UINT32)ReturnSize, &DoNotChangeInformation, Irp, &Status);
- }
-
- break;
-
- case IOCTL_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS,
- (PVOID *)&DebuggerPteRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place (it's not in vmx-root)
- //
- ExtensionCommandPte(DebuggerPteRequest, FALSE);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_DEBUGGER_REGISTER_EVENT:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_GENERAL_EVENT_DETAIL,
- (PVOID *)&DebuggerNewEventRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place (not coming from the VMX-root mode)
- //
- DebuggerParseEvent(DebuggerNewEventRequest,
- (PDEBUGGER_EVENT_AND_ACTION_RESULT)Irp->AssociatedIrp.SystemBuffer,
- FALSE);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(sizeof(DEBUGGER_EVENT_AND_ACTION_RESULT), &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_DEBUGGER_ADD_ACTION_TO_EVENT:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_GENERAL_ACTION,
- (PVOID *)&DebuggerNewActionRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
+ }
+ else
+ {
//
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
+ // There was a problem, so not loaded
//
- DebuggerParseAction(DebuggerNewActionRequest,
- (PDEBUGGER_EVENT_AND_ACTION_RESULT)Irp->AssociatedIrp.SystemBuffer,
- FALSE);
+ Status = STATUS_UNSUCCESSFUL;
+ }
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(sizeof(DEBUGGER_EVENT_AND_ACTION_RESULT), &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_DEBUGGER_HIDE_AND_UNHIDE_TO_TRANSPARENT_THE_DEBUGGER:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE,
- (PVOID *)&DebuggerHideAndUnhideRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // check if it's a !hide or !unhide command
- //
- if (DebuggerHideAndUnhideRequest->IsHide == TRUE)
- {
- //
- // It's a hide request
- //
- TransparentHideDebuggerWrapper(DebuggerHideAndUnhideRequest);
- }
- else
- {
- //
- // It's a unhide request
- //
- TransparentUnhideDebuggerWrapper(DebuggerHideAndUnhideRequest);
- }
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS,
- (PVOID *)&DebuggerVa2paAndPa2vaRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place (we're not in vmx-root here)
- //
- ExtensionCommandVa2paAndPa2va(DebuggerVa2paAndPa2vaRequest, FALSE);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_DEBUGGER_EDIT_MEMORY:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_EDIT_MEMORY,
- (PVOID *)&DebuggerEditMemoryRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Here we should validate whether the input parameter is
- // valid or in other words whether we received enough space or not
- //
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength != SIZEOF_DEBUGGER_EDIT_MEMORY + DebuggerEditMemoryRequest->CountOf64Chunks * sizeof(UINT64))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerCommandEditMemory(DebuggerEditMemoryRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_EDIT_MEMORY, &DoNotChangeInformation, Irp, &Status);
+ DoNotChangeInformation = FALSE;
- break;
-
- case IOCTL_DEBUGGER_SEARCH_MEMORY:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_SEARCH_MEMORY,
- (PVOID *)&DebuggerSearchMemoryRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // The OutBuffLength should have at least MaximumSearchResults * sizeof(UINT64)
- // free space to store the results
- //
- if (OutBuffLength < MaximumSearchResults * sizeof(UINT64))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Here we should validate whether the input parameter is
- // valid or in other words whether we received enough space or not
- //
- if (IrpStack->Parameters.DeviceIoControl.InputBufferLength != SIZEOF_DEBUGGER_SEARCH_MEMORY + DebuggerSearchMemoryRequest->CountOf64Chunks * sizeof(UINT64))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- if (DebuggerCommandSearchMemory(DebuggerSearchMemoryRequest) != STATUS_SUCCESS)
- {
- //
- // It is because it was not valid in any of the ways to the function
- // then we're sure that the usermode code won't interpret it's previous
- // buffer as a valid buffer and will not show it to the user
- //
- RtlZeroMemory(DebuggerSearchMemoryRequest, MaximumSearchResults * sizeof(UINT64));
- }
-
- //
- // Configure IRP status, and also we send the results
- // buffer, with it's null values (if any)
- //
- DrvAdjustStatusAndSetOutputSize(MaximumSearchResults * sizeof(UINT64), &DoNotChangeInformation, Irp, &Status);
+ break;
- break;
+ case IOCTL_INIT_HYPERTRACE:
- case IOCTL_DEBUGGER_MODIFY_EVENTS:
+ //
+ // Initialize HyperTrace
+ //
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_MODIFY_EVENTS,
- (PVOID *)&DebuggerModifyEventRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place
- //
- DebuggerParseEventsModification(DebuggerModifyEventRequest, FALSE, EnableInstantEventMechanism ? g_KernelDebuggerState : FALSE);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_MODIFY_EVENTS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_DEBUGGER_FLUSH_LOGGING_BUFFERS:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_FLUSH_LOGGING_BUFFERS,
- (PVOID *)&DebuggerFlushBuffersRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the flush
- //
- DebuggerCommandFlush(DebuggerFlushBuffersRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_FLUSH_LOGGING_BUFFERS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS,
- (PVOID *)&DebuggerAttachOrDetachToThreadRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the attach to the target process
- //
- AttachingTargetProcess(DebuggerAttachOrDetachToThreadRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PREPARE_DEBUGGEE:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PREPARE_DEBUGGEE,
- (PVOID *)&DebuggeeRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the action
- //
- SerialConnectionPrepare(DebuggeeRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREPARE_DEBUGGEE, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PAUSE_PACKET_RECEIVED:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PAUSE_PACKET_RECEIVED,
- (PVOID *)&DebuggerPauseKernelRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the action
- //
- KdHaltSystem(DebuggerPauseKernelRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PAUSE_PACKET_RECEIVED, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_SEND_SIGNAL_EXECUTION_IN_DEBUGGEE_FINISHED:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL,
- (PVOID *)&DebuggerCommandExecutionFinishedRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the signal operation
- //
- DebuggerCommandSignalExecutionState(DebuggerCommandExecutionFinishedRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_SEND_USERMODE_MESSAGES_TO_DEBUGGER:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER,
- (PVOID *)&DebuggerSendUsermodeMessageRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Second validation phase
- //
- if (DebuggerSendUsermodeMessageRequest->Length == NULL_ZERO ||
- IrpStack->Parameters.DeviceIoControl.InputBufferLength != SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER + DebuggerSendUsermodeMessageRequest->Length)
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the signal operation
- //
- DebuggerCommandSendMessage(DebuggerSendUsermodeMessageRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_SEND_GENERAL_BUFFER_FROM_DEBUGGEE_TO_DEBUGGER:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER,
- (PVOID *)&DebuggerSendBufferFromDebuggeeToDebuggerRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Second validation phase
- //
- if (DebuggerSendBufferFromDebuggeeToDebuggerRequest->LengthOfBuffer == NULL_ZERO ||
- IrpStack->Parameters.DeviceIoControl.InputBufferLength != SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER + DebuggerSendBufferFromDebuggeeToDebuggerRequest->LengthOfBuffer)
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the signal operation
- //
- DebuggerCommandSendGeneralBufferToDebugger(DebuggerSendBufferFromDebuggeeToDebuggerRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PERFORM_KERNEL_SIDE_TESTS:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS,
- (PVOID *)&DebuggerKernelTestRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the kernel-side tests
- //
- TestKernelPerformTests(DebuggerKernelTestRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_RESERVE_PRE_ALLOCATED_POOLS:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PREALLOC_COMMAND,
- (PVOID *)&DebuggerReservePreallocPoolRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the reservation pools
- //
- DebuggerCommandReservePreallocatedPools(DebuggerReservePreallocPoolRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREALLOC_COMMAND, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PREACTIVATE_FUNCTIONALITY:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PREACTIVATE_COMMAND,
- (PVOID *)&DebuggerPreactivationRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the activation of the functionality
- //
- DebuggerCommandPreactivateFunctionality(DebuggerPreactivationRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREACTIVATE_COMMAND, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PERFORM_ACTIONS_ON_APIC:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_APIC_REQUEST,
- (PVOID *)&DebuggerApicRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(ExtensionCommandPerformActionsForApicRequests(DebuggerApicRequest), &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_QUERY_IDT_ENTRY:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS,
- (PVOID *)&DebuggerQueryIdtRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the query of IDT entries (not from vmx-root)
- //
- ExtensionCommandPerformQueryIdtEntriesRequest(DebuggerQueryIdtRequest, FALSE);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_SET_BREAKPOINT_USER_DEBUGGER:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_BP_PACKET,
- (PVOID *)&DebuggerBreakpointRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform setting the breakpoint (for the user mode debugger)
- // Switching to the target process memory is needed as we are
- // in HyperDbg's process memory layout and we need to switch to
- // the target process memory layout to set the breakpoint
- //
- BreakpointAddNew(DebuggerBreakpointRequest, TRUE);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_BP_PACKET, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PERFORM_SMI_OPERATION:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_SMI_OPERATION_PACKETS,
- (PVOID *)&SmiOperationRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the SMI operation (it's not from vmx-root)
- //
- VmFuncSmmPerformSmiOperation(SmiOperationRequest, FALSE);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_SMI_OPERATION_PACKETS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS,
- (PVOID *)&HyperTraceLbrOperationRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the HyperTrace LBR operation
- //
- HyperTraceLbrPerformOperation(HyperTraceLbrOperationRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PERFORM_HYPERTRACE_LBR_DUMP:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS,
- (PVOID *)&HyperTraceLbrdumpRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the HyperTrace LBR dump operation
- //
- HyperTraceLbrPerformDump(HyperTraceLbrdumpRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PERFORM_HYPERTRACE_PT_OPERATION:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS,
- (PVOID *)&HyperTracePtOperationRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the HyperTrace PT operation
- //
- HyperTracePtPerformOperation(HyperTracePtOperationRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_SEND_USER_DEBUGGER_COMMANDS:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_UD_COMMAND_PACKET,
- (PVOID *)&DebuggerUdCommandRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the dispatching of user debugger command
- //
- UdDispatchUsermodeCommands(DebuggerUdCommandRequest, InBuffLength, OutBuffLength);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_GET_DETAIL_OF_ACTIVE_THREADS_AND_PROCESSES:
-
- OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
-
- if (!OutBuffLength)
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Both usermode and to send to usermode is here
- //
- BufferToStoreThreadsAndProcessesDetails = (PVOID)Irp->AssociatedIrp.SystemBuffer;
-
- //
- // Perform the dispatching of user debugger command
- //
- AttachingQueryDetailsOfActiveDebuggingThreadsAndProcesses(BufferToStoreThreadsAndProcessesDetails, OutBuffLength);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_GET_USER_MODE_MODULE_DETAILS:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_USERMODE_LOADED_MODULE_DETAILS,
- (PVOID *)&DebuggerUsermodeModulesRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Getting the modules details
- //
- UserAccessGetLoadedModules(DebuggerUsermodeModulesRequest, OutBuffLength);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_QUERY_COUNT_OF_ACTIVE_PROCESSES_OR_THREADS:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS,
- (PVOID *)&DebuggerUsermodeProcessOrThreadQueryRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Getting the count result
- //
- if (DebuggerUsermodeProcessOrThreadQueryRequest->QueryType == DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS_QUERY_PROCESS_COUNT)
- {
- ProcessQueryCount(DebuggerUsermodeProcessOrThreadQueryRequest);
- }
- else if (DebuggerUsermodeProcessOrThreadQueryRequest->QueryType == DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS_QUERY_THREAD_COUNT)
- {
- ThreadQueryCount(DebuggerUsermodeProcessOrThreadQueryRequest);
- }
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_GET_LIST_OF_THREADS_AND_PROCESSES:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS,
- (PVOID *)&DebuggerUsermodeProcessOrThreadQueryRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Getting the list of processes or threads
- //
- if (DebuggerUsermodeProcessOrThreadQueryRequest->QueryType == DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS_QUERY_PROCESS_LIST)
- {
- ProcessQueryList(DebuggerUsermodeProcessOrThreadQueryRequest,
- DebuggerUsermodeProcessOrThreadQueryRequest,
- OutBuffLength);
- }
- else if (DebuggerUsermodeProcessOrThreadQueryRequest->QueryType == DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS_QUERY_THREAD_LIST)
- {
- ThreadQueryList(DebuggerUsermodeProcessOrThreadQueryRequest,
- DebuggerUsermodeProcessOrThreadQueryRequest,
- OutBuffLength);
- }
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_QUERY_CURRENT_THREAD:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET,
- (PVOID *)&GetInformationThreadRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Get the information
- //
- ThreadQueryDetails(GetInformationThreadRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_QUERY_CURRENT_PROCESS:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET,
- (PVOID *)&GetInformationProcessRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Get the information
- //
- ProcessQueryDetails(GetInformationProcessRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_REQUEST_REV_MACHINE_SERVICE:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST,
- (PVOID *)&RevServiceRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the service request
- //
- ConfigureInitializeExecTrapOnAllProcessors();
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_DEBUGGER_BRING_PAGES_IN:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PAGE_IN_REQUEST,
- (PVOID *)&DebuggerPageinRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place (it's in VMI-mode)
- //
- DebuggerCommandBringPagein(DebuggerPageinRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PAGE_IN_REQUEST, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PCIE_ENDPOINT_ENUM:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET,
- (PVOID *)&PcitreeRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place (it's in VMI-mode)
- //
- ExtensionCommandPcitree(PcitreeRequest, FALSE);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PCIDEVINFO_ENUM:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET,
- (PVOID *)&PcidevinfoRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Both usermode and to send to usermode and the coming buffer are
- // at the same place (it's in VMI-mode)
- //
- ExtensionCommandPcidevinfo(PcidevinfoRequest, FALSE);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET, &DoNotChangeInformation, Irp, &Status);
+ break;
- break;
+ case IOCTL_REGISTER_EVENT:
- default:
- LogError("Err, unknown IOCTL");
- Status = STATUS_NOT_IMPLEMENTED;
+ //
+ // First validate the parameters.
+ //
+ if (IrpStack->Parameters.DeviceIoControl.InputBufferLength < SIZEOF_REGISTER_EVENT || Irp->AssociatedIrp.SystemBuffer == NULL)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ LogError("Err, invalid parameter to IOCTL dispatcher");
break;
}
- }
- else
- {
+
//
- // We're no longer serve IOCTL
+ // IRPs supply a pointer to a buffer at Irp->AssociatedIrp.SystemBuffer.
+ // This buffer represents both the input buffer and the output buffer that
+ // are specified in calls to DeviceIoControl
//
+ RegisterEventRequest = (PREGISTER_NOTIFY_BUFFER)Irp->AssociatedIrp.SystemBuffer;
+
+ switch (RegisterEventRequest->Type)
+ {
+ case IRP_BASED:
+
+ LogRegisterIrpBasedNotification((PVOID)Irp, &Status);
+
+ break;
+ case EVENT_BASED:
+
+ if (LogRegisterEventBasedNotification((PVOID)Irp))
+ {
+ Status = STATUS_SUCCESS;
+ }
+ else
+ {
+ Status = STATUS_UNSUCCESSFUL;
+ }
+
+ break;
+ default:
+ LogError("Err, unknown notification type from user-mode");
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ break;
+
+ case IOCTL_RETURN_IRP_PENDING_PACKETS_AND_DISALLOW_IOCTL:
+
+ //
+ // Disallow new IOCTL
+ //
+ g_AllowIoctlFromUsermode = FALSE;
+
+ //
+ // Send an immediate message, and we're no longer get new IRP
+ //
+ LogCallbackSendBuffer(OPERATION_HYPERVISOR_DRIVER_END_OF_IRPS,
+ "$",
+ sizeof(CHAR),
+ TRUE);
+
Status = STATUS_SUCCESS;
+
+ break;
+
+ case IOCTL_TERMINATE_VMX:
+
+ //
+ // Uninitialize the debugger and its sub-mechanisms
+ //
+ DebuggerUninitialize();
+
+ //
+ // Terminate VMX
+ //
+ VmFuncUninitVmm();
+
+ Status = STATUS_SUCCESS;
+
+ break;
+
+ case IOCTL_DEBUGGER_READ_MEMORY:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_READ_MEMORY,
+ (PVOID *)&DebuggerReadMemRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ if (DebuggerCommandReadMemory(DebuggerReadMemRequest,
+ ((CHAR *)DebuggerReadMemRequest) + SIZEOF_DEBUGGER_READ_MEMORY,
+ &ReturnSize) == TRUE)
+ {
+ //
+ // Return the header a read bytes
+ //
+ DrvAdjustStatusAndSetOutputSize((UINT32)(ReturnSize + SIZEOF_DEBUGGER_READ_MEMORY), &DoNotChangeInformation, Irp, &Status);
+ }
+ else
+ {
+ //
+ // Just return the header to the user-mode
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_READ_MEMORY, &DoNotChangeInformation, Irp, &Status);
+ }
+
+ break;
+
+ case IOCTL_DEBUGGER_READ_OR_WRITE_MSR:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_READ_AND_WRITE_ON_MSR,
+ (PVOID *)&DebuggerReadOrWriteMsrRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place
+ //
+ Status = DebuggerReadOrWriteMsr(DebuggerReadOrWriteMsrRequest, (UINT64 *)DebuggerReadOrWriteMsrRequest, &ReturnSize);
+
+ //
+ // Set the size
+ //
+ if (Status == STATUS_SUCCESS)
+ {
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize((UINT32)ReturnSize, &DoNotChangeInformation, Irp, &Status);
+ }
+
+ break;
+
+ case IOCTL_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS,
+ (PVOID *)&DebuggerPteRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place (it's not in vmx-root)
+ //
+ ExtensionCommandPte(DebuggerPteRequest, FALSE);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_DEBUGGER_REGISTER_EVENT:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_GENERAL_EVENT_DETAIL,
+ (PVOID *)&DebuggerNewEventRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place (not coming from the VMX-root mode)
+ //
+ DebuggerParseEvent(DebuggerNewEventRequest,
+ (PDEBUGGER_EVENT_AND_ACTION_RESULT)Irp->AssociatedIrp.SystemBuffer,
+ FALSE);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(sizeof(DEBUGGER_EVENT_AND_ACTION_RESULT), &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_DEBUGGER_ADD_ACTION_TO_EVENT:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_GENERAL_ACTION,
+ (PVOID *)&DebuggerNewActionRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place
+ //
+ DebuggerParseAction(DebuggerNewActionRequest,
+ (PDEBUGGER_EVENT_AND_ACTION_RESULT)Irp->AssociatedIrp.SystemBuffer,
+ FALSE);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(sizeof(DEBUGGER_EVENT_AND_ACTION_RESULT), &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_DEBUGGER_HIDE_AND_UNHIDE_TO_TRANSPARENT_THE_DEBUGGER:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE,
+ (PVOID *)&DebuggerHideAndUnhideRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // check if it's a !hide or !unhide command
+ //
+ if (DebuggerHideAndUnhideRequest->IsHide == TRUE)
+ {
+ //
+ // It's a hide request
+ //
+ TransparentHideDebuggerWrapper(DebuggerHideAndUnhideRequest);
+ }
+ else
+ {
+ //
+ // It's a unhide request
+ //
+ TransparentUnhideDebuggerWrapper(DebuggerHideAndUnhideRequest);
+ }
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS,
+ (PVOID *)&DebuggerVa2paAndPa2vaRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place (we're not in vmx-root here)
+ //
+ ExtensionCommandVa2paAndPa2va(DebuggerVa2paAndPa2vaRequest, FALSE);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_DEBUGGER_EDIT_MEMORY:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_EDIT_MEMORY,
+ (PVOID *)&DebuggerEditMemoryRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Here we should validate whether the input parameter is
+ // valid or in other words whether we received enough space or not
+ //
+ if (IrpStack->Parameters.DeviceIoControl.InputBufferLength != SIZEOF_DEBUGGER_EDIT_MEMORY + DebuggerEditMemoryRequest->CountOf64Chunks * sizeof(UINT64))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place
+ //
+ DebuggerCommandEditMemory(DebuggerEditMemoryRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_EDIT_MEMORY, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_DEBUGGER_SEARCH_MEMORY:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_SEARCH_MEMORY,
+ (PVOID *)&DebuggerSearchMemoryRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // The OutBuffLength should have at least MaximumSearchResults * sizeof(UINT64)
+ // free space to store the results
+ //
+ if (OutBuffLength < MaximumSearchResults * sizeof(UINT64))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Here we should validate whether the input parameter is
+ // valid or in other words whether we received enough space or not
+ //
+ if (IrpStack->Parameters.DeviceIoControl.InputBufferLength != SIZEOF_DEBUGGER_SEARCH_MEMORY + DebuggerSearchMemoryRequest->CountOf64Chunks * sizeof(UINT64))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place
+ //
+ if (DebuggerCommandSearchMemory(DebuggerSearchMemoryRequest) != STATUS_SUCCESS)
+ {
+ //
+ // It is because it was not valid in any of the ways to the function
+ // then we're sure that the usermode code won't interpret it's previous
+ // buffer as a valid buffer and will not show it to the user
+ //
+ RtlZeroMemory(DebuggerSearchMemoryRequest, MaximumSearchResults * sizeof(UINT64));
+ }
+
+ //
+ // Configure IRP status, and also we send the results
+ // buffer, with it's null values (if any)
+ //
+ DrvAdjustStatusAndSetOutputSize(MaximumSearchResults * sizeof(UINT64), &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_DEBUGGER_MODIFY_EVENTS:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_MODIFY_EVENTS,
+ (PVOID *)&DebuggerModifyEventRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place
+ //
+ DebuggerParseEventsModification(DebuggerModifyEventRequest, FALSE, EnableInstantEventMechanism ? g_KernelDebuggerState : FALSE);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_MODIFY_EVENTS, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_DEBUGGER_FLUSH_LOGGING_BUFFERS:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_FLUSH_LOGGING_BUFFERS,
+ (PVOID *)&DebuggerFlushBuffersRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the flush
+ //
+ DebuggerCommandFlush(DebuggerFlushBuffersRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_FLUSH_LOGGING_BUFFERS, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS,
+ (PVOID *)&DebuggerAttachOrDetachToThreadRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the attach to the target process
+ //
+ AttachingTargetProcess(DebuggerAttachOrDetachToThreadRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_PREPARE_DEBUGGEE:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PREPARE_DEBUGGEE,
+ (PVOID *)&DebuggeeRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the action
+ //
+ SerialConnectionPrepare(DebuggeeRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREPARE_DEBUGGEE, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_PAUSE_PACKET_RECEIVED:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PAUSE_PACKET_RECEIVED,
+ (PVOID *)&DebuggerPauseKernelRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the action
+ //
+ KdHaltSystem(DebuggerPauseKernelRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PAUSE_PACKET_RECEIVED, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_SEND_SIGNAL_EXECUTION_IN_DEBUGGEE_FINISHED:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL,
+ (PVOID *)&DebuggerCommandExecutionFinishedRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the signal operation
+ //
+ DebuggerCommandSignalExecutionState(DebuggerCommandExecutionFinishedRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_SEND_USERMODE_MESSAGES_TO_DEBUGGER:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER,
+ (PVOID *)&DebuggerSendUsermodeMessageRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Second validation phase
+ //
+ if (DebuggerSendUsermodeMessageRequest->Length == NULL_ZERO ||
+ IrpStack->Parameters.DeviceIoControl.InputBufferLength != SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER + DebuggerSendUsermodeMessageRequest->Length)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the signal operation
+ //
+ DebuggerCommandSendMessage(DebuggerSendUsermodeMessageRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_SEND_GENERAL_BUFFER_FROM_DEBUGGEE_TO_DEBUGGER:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER,
+ (PVOID *)&DebuggerSendBufferFromDebuggeeToDebuggerRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Second validation phase
+ //
+ if (DebuggerSendBufferFromDebuggeeToDebuggerRequest->LengthOfBuffer == NULL_ZERO ||
+ IrpStack->Parameters.DeviceIoControl.InputBufferLength != SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER + DebuggerSendBufferFromDebuggeeToDebuggerRequest->LengthOfBuffer)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the signal operation
+ //
+ DebuggerCommandSendGeneralBufferToDebugger(DebuggerSendBufferFromDebuggeeToDebuggerRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_PERFORM_KERNEL_SIDE_TESTS:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS,
+ (PVOID *)&DebuggerKernelTestRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the kernel-side tests
+ //
+ TestKernelPerformTests(DebuggerKernelTestRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_RESERVE_PRE_ALLOCATED_POOLS:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PREALLOC_COMMAND,
+ (PVOID *)&DebuggerReservePreallocPoolRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the reservation pools
+ //
+ DebuggerCommandReservePreallocatedPools(DebuggerReservePreallocPoolRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREALLOC_COMMAND, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_PREACTIVATE_FUNCTIONALITY:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PREACTIVATE_COMMAND,
+ (PVOID *)&DebuggerPreactivationRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the activation of the functionality
+ //
+ DebuggerCommandPreactivateFunctionality(DebuggerPreactivationRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREACTIVATE_COMMAND, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_PERFORM_ACTIONS_ON_APIC:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_APIC_REQUEST,
+ (PVOID *)&DebuggerApicRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(ExtensionCommandPerformActionsForApicRequests(DebuggerApicRequest), &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_QUERY_IDT_ENTRY:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS,
+ (PVOID *)&DebuggerQueryIdtRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the query of IDT entries (not from vmx-root)
+ //
+ ExtensionCommandPerformQueryIdtEntriesRequest(DebuggerQueryIdtRequest, FALSE);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_SET_BREAKPOINT_USER_DEBUGGER:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_BP_PACKET,
+ (PVOID *)&DebuggerBreakpointRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform setting the breakpoint (for the user mode debugger)
+ // Switching to the target process memory is needed as we are
+ // in HyperDbg's process memory layout and we need to switch to
+ // the target process memory layout to set the breakpoint
+ //
+ BreakpointAddNew(DebuggerBreakpointRequest, TRUE);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_BP_PACKET, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_PERFORM_SMI_OPERATION:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_SMI_OPERATION_PACKETS,
+ (PVOID *)&SmiOperationRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the SMI operation (it's not from vmx-root)
+ //
+ VmFuncSmmPerformSmiOperation(SmiOperationRequest, FALSE);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_SMI_OPERATION_PACKETS, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS,
+ (PVOID *)&HyperTraceLbrOperationRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the HyperTrace LBR operation
+ //
+ HyperTraceLbrPerformOperation(HyperTraceLbrOperationRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_PERFORM_HYPERTRACE_LBR_DUMP:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS,
+ (PVOID *)&HyperTraceLbrdumpRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the HyperTrace LBR dump operation
+ //
+ HyperTraceLbrPerformDump(HyperTraceLbrdumpRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_PERFORM_HYPERTRACE_PT_OPERATION:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS,
+ (PVOID *)&HyperTracePtOperationRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the HyperTrace PT operation
+ //
+ HyperTracePtPerformOperation(HyperTracePtOperationRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_SEND_USER_DEBUGGER_COMMANDS:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_UD_COMMAND_PACKET,
+ (PVOID *)&DebuggerUdCommandRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the dispatching of user debugger command
+ //
+ UdDispatchUsermodeCommands(DebuggerUdCommandRequest, InBuffLength, OutBuffLength);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_GET_DETAIL_OF_ACTIVE_THREADS_AND_PROCESSES:
+
+ OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
+
+ if (!OutBuffLength)
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode is here
+ //
+ BufferToStoreThreadsAndProcessesDetails = (PVOID)Irp->AssociatedIrp.SystemBuffer;
+
+ //
+ // Perform the dispatching of user debugger command
+ //
+ AttachingQueryDetailsOfActiveDebuggingThreadsAndProcesses(BufferToStoreThreadsAndProcessesDetails, OutBuffLength);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_GET_USER_MODE_MODULE_DETAILS:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_USERMODE_LOADED_MODULE_DETAILS,
+ (PVOID *)&DebuggerUsermodeModulesRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Getting the modules details
+ //
+ UserAccessGetLoadedModules(DebuggerUsermodeModulesRequest, OutBuffLength);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_QUERY_COUNT_OF_ACTIVE_PROCESSES_OR_THREADS:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS,
+ (PVOID *)&DebuggerUsermodeProcessOrThreadQueryRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Getting the count result
+ //
+ if (DebuggerUsermodeProcessOrThreadQueryRequest->QueryType == DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS_QUERY_PROCESS_COUNT)
+ {
+ ProcessQueryCount(DebuggerUsermodeProcessOrThreadQueryRequest);
+ }
+ else if (DebuggerUsermodeProcessOrThreadQueryRequest->QueryType == DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS_QUERY_THREAD_COUNT)
+ {
+ ThreadQueryCount(DebuggerUsermodeProcessOrThreadQueryRequest);
+ }
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_GET_LIST_OF_THREADS_AND_PROCESSES:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS,
+ (PVOID *)&DebuggerUsermodeProcessOrThreadQueryRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Getting the list of processes or threads
+ //
+ if (DebuggerUsermodeProcessOrThreadQueryRequest->QueryType == DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS_QUERY_PROCESS_LIST)
+ {
+ ProcessQueryList(DebuggerUsermodeProcessOrThreadQueryRequest,
+ DebuggerUsermodeProcessOrThreadQueryRequest,
+ OutBuffLength);
+ }
+ else if (DebuggerUsermodeProcessOrThreadQueryRequest->QueryType == DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS_QUERY_THREAD_LIST)
+ {
+ ThreadQueryList(DebuggerUsermodeProcessOrThreadQueryRequest,
+ DebuggerUsermodeProcessOrThreadQueryRequest,
+ OutBuffLength);
+ }
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_QUERY_CURRENT_THREAD:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET,
+ (PVOID *)&GetInformationThreadRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Get the information
+ //
+ ThreadQueryDetails(GetInformationThreadRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_QUERY_CURRENT_PROCESS:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET,
+ (PVOID *)&GetInformationProcessRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Get the information
+ //
+ ProcessQueryDetails(GetInformationProcessRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_REQUEST_REV_MACHINE_SERVICE:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST,
+ (PVOID *)&RevServiceRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the service request
+ //
+ ConfigureInitializeExecTrapOnAllProcessors();
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_DEBUGGER_BRING_PAGES_IN:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_PAGE_IN_REQUEST,
+ (PVOID *)&DebuggerPageinRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place (it's in VMI-mode)
+ //
+ DebuggerCommandBringPagein(DebuggerPageinRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PAGE_IN_REQUEST, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_PCIE_ENDPOINT_ENUM:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET,
+ (PVOID *)&PcitreeRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place (it's in VMI-mode)
+ //
+ ExtensionCommandPcitree(PcitreeRequest, FALSE);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_PCIDEVINFO_ENUM:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET,
+ (PVOID *)&PcidevinfoRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Both usermode and to send to usermode and the coming buffer are
+ // at the same place (it's in VMI-mode)
+ //
+ ExtensionCommandPcidevinfo(PcidevinfoRequest, FALSE);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET, &DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ default:
+ LogError("Err, unknown IOCTL");
+ Status = STATUS_NOT_IMPLEMENTED;
+ break;
}
if (Status != STATUS_PENDING)
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index 8375385b..68c241ae 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -94,20 +94,14 @@ LoaderInitHyperTrace(BOOLEAN RunningOnHypervisorEnvironment)
}
/**
- * @brief Initialize the VMM and Debugger
+ * @brief Initialize the hyper log module
*
* @return BOOLEAN
*/
BOOLEAN
-LoaderInitVmmAndDebugger()
+LoaderInitHyperLog()
{
MESSAGE_TRACING_CALLBACKS MsgTracingCallbacks = {0};
- VMM_CALLBACKS VmmCallbacks = {0};
-
- //
- // Allow to server IOCTL
- //
- g_AllowIoctlFromUsermode = TRUE;
//
// *** Fill the callbacks for the message tracer ***
@@ -116,6 +110,43 @@ LoaderInitVmmAndDebugger()
MsgTracingCallbacks.CheckImmediateMessageSending = KdCheckImmediateMessagingMechanism;
MsgTracingCallbacks.SendImmediateMessage = KdLoggingResponsePacketToDebugger;
+ //
+ // Initialize message tracer (if not already initialized)
+ //
+ if (g_HyperLogInitialized == FALSE && LogInitialize(&MsgTracingCallbacks))
+ {
+ g_HyperLogInitialized = TRUE;
+
+ LogDebugInfo("HyperDbg's hyperlog loaded successfully");
+
+ return TRUE;
+ }
+ else
+ {
+ //
+ // We use DbgPrint here because if the hyperlog is not loaded we can't use it to log the error
+ // so we just log the error with DbgPrint and continue without loading hyperlog
+ //
+ DbgPrint("Err, HyperDbg's hyperlog was not loaded or already loaded");
+ return FALSE;
+ }
+}
+
+/**
+ * @brief Initialize the VMM and Debugger
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+LoaderInitVmmAndDebugger()
+{
+ VMM_CALLBACKS VmmCallbacks = {0};
+
+ //
+ // Allow to serve IOCTL
+ //
+ g_AllowIoctlFromUsermode = TRUE;
+
//
// *** Fill the callbacks for using hyperlog in VMM ***
//
@@ -158,44 +189,29 @@ LoaderInitVmmAndDebugger()
VmmCallbacks.InterceptionCallbackTriggerCr3ProcessChange = ProcessTriggerCr3ProcessChange;
//
- // Initialize message tracer
+ // Initialize VMX
//
- if (LogInitialize(&MsgTracingCallbacks))
+ if (VmFuncInitVmm(&VmmCallbacks))
{
+ LogDebugInfo("HyperDbg's hypervisor loaded successfully");
+
//
- // Initialize VMX
+ // Initialize the debugger
//
- if (VmFuncInitVmm(&VmmCallbacks))
+ if (DebuggerInitialize())
{
- LogDebugInfo("HyperDbg's hypervisor loaded successfully");
+ LogDebugInfo("HyperDbg's debugger loaded successfully");
- //
- // Initialize the debugger
- //
- if (DebuggerInitialize())
- {
- LogDebugInfo("HyperDbg's debugger loaded successfully");
-
- //
- // Set the variable so no one else can get a handle anymore
- //
- g_HandleInUse = TRUE;
-
- return TRUE;
- }
- else
- {
- LogError("Err, HyperDbg's debugger was not loaded");
- }
+ return TRUE;
}
else
{
- LogError("Err, HyperDbg's hypervisor was not loaded");
+ LogError("Err, HyperDbg's debugger was not loaded");
}
}
else
{
- LogError("Err, HyperDbg's message tracing module was not loaded");
+ LogError("Err, HyperDbg's hypervisor was not loaded");
}
//
@@ -214,14 +230,17 @@ LoaderInitVmmAndDebugger()
VOID
LoaderUninitializeLogTracer()
{
- LogDebugInfo("Unloading HyperDbg's debugger...\n");
-
#if !UseDbgPrintInsteadOfUsermodeMessageTracking
+ LogDebugInfo("Unloading hyperlog...\n");
+
//
- // Uinitialize log buffer
+ // Uinitialize log buffer if it was initialized
//
- LogDebugInfo("Uninitializing logs\n");
- LogUnInitialize();
+ if (g_HyperLogInitialized)
+ {
+ g_HyperLogInitialized = FALSE;
+ LogUnInitialize();
+ }
#endif
}
diff --git a/hyperdbg/hyperkd/header/driver/Loader.h b/hyperdbg/hyperkd/header/driver/Loader.h
index 30d215b0..54abc32f 100644
--- a/hyperdbg/hyperkd/header/driver/Loader.h
+++ b/hyperdbg/hyperkd/header/driver/Loader.h
@@ -16,6 +16,9 @@
// Loader Functions //
//////////////////////////////////////////////////
+BOOLEAN
+LoaderInitHyperLog();
+
BOOLEAN
LoaderInitVmmAndDebugger();
diff --git a/hyperdbg/hyperkd/header/globals/Global.h b/hyperdbg/hyperkd/header/globals/Global.h
index 6224d6c8..fe415d59 100644
--- a/hyperdbg/hyperkd/header/globals/Global.h
+++ b/hyperdbg/hyperkd/header/globals/Global.h
@@ -16,6 +16,12 @@
*/
PROCESSOR_DEBUGGING_STATE * g_DbgState;
+/**
+ * @brief Shows whether the hyperlog module is initialized or not
+ *
+ */
+BOOLEAN g_HyperLogInitialized;
+
/**
* @brief Event to show whether the user debugger is waiting for a command or not
*
diff --git a/hyperdbg/include/SDK/headers/Ioctls.h b/hyperdbg/include/SDK/headers/Ioctls.h
index 5969c07f..26d8df3b 100644
--- a/hyperdbg/include/SDK/headers/Ioctls.h
+++ b/hyperdbg/include/SDK/headers/Ioctls.h
@@ -53,6 +53,18 @@
#endif // !FILE_DEVICE_UNKNOWN
+/**
+ * @brief Extract the function from an IOCTL code
+ *
+ */
+#define CTL_CODE_FUNCTION(Code) (((Code) >> 2) & 0xFFF)
+
+/**
+ * @brief Base code for IOCTLs, to avoid conflicts with other drivers
+ *
+ */
+#define IOCTL_START_CODE 0x800
+
//////////////////////////////////////////////////
// IOCTLs //
//////////////////////////////////////////////////
@@ -62,119 +74,119 @@
*
*/
#define IOCTL_INIT_VMM \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x801, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, initialize the HyperTrace module
*
*/
#define IOCTL_INIT_HYPERTRACE \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x802, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x02, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, register a new event
*
*/
#define IOCTL_REGISTER_EVENT \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x810, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x03, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, irp pending mechanism for reading from message tracing buffers
*
*/
#define IOCTL_RETURN_IRP_PENDING_PACKETS_AND_DISALLOW_IOCTL \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x811, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x10, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to terminate vmx and exit form debugger
*
*/
#define IOCTL_TERMINATE_VMX \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x812, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x12, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to read memory
*
*/
#define IOCTL_DEBUGGER_READ_MEMORY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x813, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x13, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to read or write on a special MSR
*
*/
#define IOCTL_DEBUGGER_READ_OR_WRITE_MSR \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x814, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x14, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to read page table entries
*
*/
#define IOCTL_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x815, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x15, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, register an event
*
*/
#define IOCTL_DEBUGGER_REGISTER_EVENT \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x816, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x16, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, add action to event
*
*/
#define IOCTL_DEBUGGER_ADD_ACTION_TO_EVENT \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x817, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x17, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to enable or disable transparent-mode
*
*/
#define IOCTL_DEBUGGER_HIDE_AND_UNHIDE_TO_TRANSPARENT_THE_DEBUGGER \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x818, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x18, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, for !va2pa and !pa2va commands
*
*/
#define IOCTL_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x819, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x19, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to edit virtual and physical memory
*
*/
#define IOCTL_DEBUGGER_EDIT_MEMORY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x1a, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to search virtual and physical memory
*
*/
#define IOCTL_DEBUGGER_SEARCH_MEMORY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81b, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x1b, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to modify an event (enable/disable/clear)
*
*/
#define IOCTL_DEBUGGER_MODIFY_EVENTS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x1c, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, flush the kernel buffers
*
*/
#define IOCTL_DEBUGGER_FLUSH_LOGGING_BUFFERS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x1d, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, attach or detach user-mode processes
*
*/
#define IOCTL_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x1e, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, print states (Deprecated)
@@ -182,186 +194,186 @@
*
*/
#define IOCTL_DEBUGGER_PRINT \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x81f, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x1f, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, prepare debuggee
*
*/
#define IOCTL_PREPARE_DEBUGGEE \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x820, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x20, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, pause and halt the system
*
*/
#define IOCTL_PAUSE_PACKET_RECEIVED \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x821, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x21, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, send a signal that execution of command finished
*
*/
#define IOCTL_SEND_SIGNAL_EXECUTION_IN_DEBUGGEE_FINISHED \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x822, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x22, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, send user-mode messages to the debugger
*
*/
#define IOCTL_SEND_USERMODE_MESSAGES_TO_DEBUGGER \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x823, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x23, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, send general buffer from debuggee to debugger
*
*/
#define IOCTL_SEND_GENERAL_BUFFER_FROM_DEBUGGEE_TO_DEBUGGER \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x824, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x24, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform kernel-side tests
*
*/
#define IOCTL_PERFORM_KERNEL_SIDE_TESTS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x825, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x25, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to reserve pre-allocated pools
*
*/
#define IOCTL_RESERVE_PRE_ALLOCATED_POOLS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x826, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x26, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to send user debugger commands
*
*/
#define IOCTL_SEND_USER_DEBUGGER_COMMANDS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x827, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x27, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to get active threads/processes that are debugging
*
*/
#define IOCTL_GET_DETAIL_OF_ACTIVE_THREADS_AND_PROCESSES \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x828, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x28, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to get user mode modules details
*
*/
#define IOCTL_GET_USER_MODE_MODULE_DETAILS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x829, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x29, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, query count of active threads or processes
*
*/
#define IOCTL_QUERY_COUNT_OF_ACTIVE_PROCESSES_OR_THREADS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x82a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x2a, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to get list threads/processes
*
*/
#define IOCTL_GET_LIST_OF_THREADS_AND_PROCESSES \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x82b, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x2b, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, query the current process details
*
*/
#define IOCTL_QUERY_CURRENT_PROCESS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x82c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x2c, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, query the current thread details
*
*/
#define IOCTL_QUERY_CURRENT_THREAD \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x82d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x2d, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request service from the reversing machine
*
*/
#define IOCTL_REQUEST_REV_MACHINE_SERVICE \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x82e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x2e, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to bring pages in
*
*/
#define IOCTL_DEBUGGER_BRING_PAGES_IN \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x82f, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x2f, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to preactivate a functionality
*
*/
#define IOCTL_PREACTIVATE_FUNCTIONALITY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x830, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x30, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to enumerate PCIe endpoints
*
*/
#define IOCTL_PCIE_ENDPOINT_ENUM \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x831, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x31, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform actions related to APIC
*
*/
#define IOCTL_PERFORM_ACTIONS_ON_APIC \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x832, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x32, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to query for PCI endpoint info
*
*/
#define IOCTL_PCIDEVINFO_ENUM \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x833, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x33, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to query the IDT entries
*
*/
#define IOCTL_QUERY_IDT_ENTRY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x834, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x34, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to set breakpoint for the user debugger
*
*/
#define IOCTL_SET_BREAKPOINT_USER_DEBUGGER \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x835, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x35, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform SMI operations
*
*/
#define IOCTL_PERFORM_SMI_OPERATION \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x836, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x36, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform HyperTrace LBR operations
*
*/
#define IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x837, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x37, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform HyperTrace LBR dump
*
*/
#define IOCTL_PERFORM_HYPERTRACE_LBR_DUMP \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x838, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x38, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform HyperTrace PT operations
*
*/
#define IOCTL_PERFORM_HYPERTRACE_PT_OPERATION \
- CTL_CODE(FILE_DEVICE_UNKNOWN, 0x839, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x39, METHOD_BUFFERED, FILE_ANY_ACCESS)
diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
index fc20dadb..0b3ad7d6 100644
--- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
+++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
@@ -680,6 +680,11 @@ HyperDbgInitVmmModule()
AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnOne);
+ //
+ // Create event to show if the kd module is loaded or not
+ //
+ g_IsDriverLoadedSuccessfully = CreateEvent(NULL, FALSE, FALSE, NULL);
+
//
// Send IOCTL to initialize VMM module
//
@@ -700,9 +705,22 @@ HyperDbgInitVmmModule()
if (!Status)
{
ShowMessages("ioctl failed with code 0x%x\n", GetLastError());
+ CloseHandle(g_IsDriverLoadedSuccessfully);
return 1;
}
+ //
+ // We wait for the first message from the kernel debugger to continue
+ //
+ WaitForSingleObject(
+ g_IsDriverLoadedSuccessfully,
+ INFINITE);
+
+ //
+ // No need to handle anymore
+ //
+ CloseHandle(g_IsDriverLoadedSuccessfully);
+
//
// VMM module is initialized at this point
//
@@ -900,17 +918,11 @@ HyperDbgUnloadVmm()
INT
HyperDbgLoadKdModule()
{
- //
- // Create event to show if the kd module is loaded or not
- //
- g_IsDriverLoadedSuccessfully = CreateEvent(NULL, FALSE, FALSE, NULL);
-
if (HyperDbgCreateHandleFromKdModule() == 1)
{
//
// No need to handle anymore
//
- CloseHandle(g_IsDriverLoadedSuccessfully);
return 1;
}
@@ -918,18 +930,6 @@ HyperDbgLoadKdModule()
// KD module is loaded at this point
//
- //
- // We wait for the first message from the kernel debugger to continue
- //
- WaitForSingleObject(
- g_IsDriverLoadedSuccessfully,
- INFINITE);
-
- //
- // No need to handle anymore
- //
- CloseHandle(g_IsDriverLoadedSuccessfully);
-
//
// If we reach here so the module are loaded
//
@@ -1002,6 +1002,7 @@ HyperDbgLoadVmmModule()
if (HyperDbgInitVmmModule() == 1)
{
ShowMessages("err, initializing VMM module\n");
+
return 1;
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
index 65043e1d..c821494c 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
@@ -14,7 +14,6 @@
//
// Global Variables
//
-extern HANDLE g_IsDriverLoadedSuccessfully;
extern HANDLE g_DeviceHandle;
extern BOOLEAN g_IsConnectedToHyperDbgLocally;
extern BOOLEAN g_IsDebuggerModulesLoaded;
From 468927a30f2b842e7af1dbe7496071dc7253eb10 Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 28 May 2026 14:41:37 +0200
Subject: [PATCH 193/323] export LBR type as an argument on HyperTrace
---
hyperdbg/hyperhv/code/interface/Callback.c | 5 +++--
hyperdbg/hyperhv/header/interface/Callback.h | 2 +-
hyperdbg/hypertrace/code/api/LbrApi.c | 11 ++++++++++-
.../include/SDK/imports/kernel/HyperDbgHyperTrace.h | 2 +-
hyperdbg/include/SDK/modules/HyperEvade.h | 2 +-
hyperdbg/include/SDK/modules/VMM.h | 2 +-
6 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/hyperdbg/hyperhv/code/interface/Callback.c b/hyperdbg/hyperhv/code/interface/Callback.c
index ff0ab2c6..cd924a0a 100644
--- a/hyperdbg/hyperhv/code/interface/Callback.c
+++ b/hyperdbg/hyperhv/code/interface/Callback.c
@@ -204,11 +204,12 @@ VmmCallbackUnhandledEptViolation(UINT32 CoreId,
* @brief routine callback to check if LBR is supported and get the LBR capacity if supported
*
* @param Capacity
+ * @param IsArchLbr
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceCallbackLbrIsSupported(UINT32 * Capacity)
+HyperTraceCallbackLbrIsSupported(UINT32 * Capacity, BOOLEAN * IsArchLbr)
{
if (g_Callbacks.HyperTraceLbrIsSupported == NULL)
{
@@ -217,7 +218,7 @@ HyperTraceCallbackLbrIsSupported(UINT32 * Capacity)
//
return FALSE;
}
- return g_Callbacks.HyperTraceLbrIsSupported(Capacity);
+ return g_Callbacks.HyperTraceLbrIsSupported(Capacity, IsArchLbr);
}
/**
diff --git a/hyperdbg/hyperhv/header/interface/Callback.h b/hyperdbg/hyperhv/header/interface/Callback.h
index 5b6a8b2d..4673930f 100644
--- a/hyperdbg/hyperhv/header/interface/Callback.h
+++ b/hyperdbg/hyperhv/header/interface/Callback.h
@@ -57,7 +57,7 @@ VmmCallbackNmiBroadcastRequestHandler(UINT32 CoreId, BOOLEAN IsOnVmxNmiHandler);
// HyperTrace Callbacks
//
BOOLEAN
-HyperTraceCallbackLbrIsSupported(UINT32 * Capacity);
+HyperTraceCallbackLbrIsSupported(UINT32 * Capacity, BOOLEAN * IsArchLbr);
//
// Debugging Callbacks
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 82ee4a10..f7c85cbd 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -149,11 +149,12 @@ HyperTraceLbrRestore()
* @brief Check if LBR is supported on the current CPU and get its capacity
*
* @param Capacity Pointer to a variable to receive the LBR capacity (number of entries)
+ * @param IsArchLbr Pointer to a variable to receive whether the supported LBR is architectural LBR or not (legacy LBR)
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceLbrIsSupported(UINT32 * Capacity)
+HyperTraceLbrIsSupported(UINT32 * Capacity, BOOLEAN * IsArchLbr)
{
//
// Check for ARCHITECTURAL LBR support first, if not supported then check for LEGACY LBR support
@@ -177,6 +178,14 @@ HyperTraceLbrIsSupported(UINT32 * Capacity)
*Capacity = (UINT32)g_LbrCapacity;
}
+ //
+ // Set IsArchLbr when the pointer is valid
+ //
+ if (IsArchLbr != NULL)
+ {
+ *IsArchLbr = g_ArchBasedLastBranchRecord;
+ }
+
return TRUE;
}
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 7f549537..8a39a797 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -37,7 +37,7 @@ HyperTraceUnInit();
//////////////////////////////////////////////////
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceLbrIsSupported(UINT32 * Capacity);
+HyperTraceLbrIsSupported(UINT32 * Capacity, BOOLEAN * IsArchLbr);
IMPORT_EXPORT_HYPERTRACE BOOLEAN
HyperTraceLbrCheck();
diff --git a/hyperdbg/include/SDK/modules/HyperEvade.h b/hyperdbg/include/SDK/modules/HyperEvade.h
index edaa99a2..4b3828be 100644
--- a/hyperdbg/include/SDK/modules/HyperEvade.h
+++ b/hyperdbg/include/SDK/modules/HyperEvade.h
@@ -52,7 +52,7 @@ typedef BOOLEAN (*LOG_CALLBACK_CHECK_IF_BUFFER_IS_FULL)(BOOLEAN Priority);
* @brief A function that checks if LBR is supported on the current CPU and gets its capacity
*
*/
-typedef BOOLEAN (*HYPERTRACE_LBR_IS_SUPPORTED)(UINT32 * Capacity);
+typedef BOOLEAN (*HYPERTRACE_LBR_IS_SUPPORTED)(UINT32 * Capacity, BOOLEAN * IsArchLbr);
/**
* @brief A function that checks the validity and safety of the target address
diff --git a/hyperdbg/include/SDK/modules/VMM.h b/hyperdbg/include/SDK/modules/VMM.h
index 74685d9a..11c29e19 100644
--- a/hyperdbg/include/SDK/modules/VMM.h
+++ b/hyperdbg/include/SDK/modules/VMM.h
@@ -52,7 +52,7 @@ typedef BOOLEAN (*LOG_CALLBACK_CHECK_IF_BUFFER_IS_FULL)(BOOLEAN Priority);
* @brief A function that checks if LBR is supported on the current CPU and gets its capacity
*
*/
-typedef BOOLEAN (*HYPERTRACE_LBR_IS_SUPPORTED)(UINT32 * Capacity);
+typedef BOOLEAN (*HYPERTRACE_LBR_IS_SUPPORTED)(UINT32 * Capacity, BOOLEAN * IsArchLbr);
/**
* @brief A function that handles trigger events
From cb5a83096df5c8e4279f2df992136d03e13ed829 Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 28 May 2026 20:26:33 +0200
Subject: [PATCH 194/323] load trace module
---
.../hyperkd/code/debugger/core/Debugger.c | 6 -
hyperdbg/hyperkd/code/driver/Ioctl.c | 45 +++-
hyperdbg/hyperkd/code/driver/Loader.c | 37 +++-
hyperdbg/hyperkd/header/driver/Loader.h | 4 +-
hyperdbg/hyperkd/header/globals/Global.h | 6 +
hyperdbg/include/SDK/headers/DataTypes.h | 15 ++
hyperdbg/include/SDK/headers/ErrorCodes.h | 6 +
.../include/SDK/headers/RequestStructures.h | 30 +++
hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 199 +++++++++++++++---
.../commands/debugging-commands/load.cpp | 23 ++
.../commands/debugging-commands/unload.cpp | 6 +-
.../code/debugger/core/debugger.cpp | 10 +
hyperdbg/libhyperdbg/header/libhyperdbg.h | 9 +
13 files changed, 355 insertions(+), 41 deletions(-)
diff --git a/hyperdbg/hyperkd/code/debugger/core/Debugger.c b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
index bf9946f3..e4cbbcd4 100644
--- a/hyperdbg/hyperkd/code/debugger/core/Debugger.c
+++ b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
@@ -208,12 +208,6 @@ DebuggerInitialize()
return FALSE;
}
- //
- // Initialize the HyperTrace (if supported by the processor)
- // By default, the debugger module initialize it for a hypervisor environment
- //
- LoaderInitHyperTrace(TRUE);
-
//
// Pre-allocate pools for possible EPT hooks
//
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index a3882cc9..94b0d9d0 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -135,6 +135,8 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
PDEBUGGER_GENERAL_EVENT_DETAIL DebuggerNewEventRequest;
PDEBUGGER_MODIFY_EVENTS DebuggerModifyEventRequest;
PDEBUGGER_FLUSH_LOGGING_BUFFERS DebuggerFlushBuffersRequest;
+ PDEBUGGER_INIT_VMM_PACKET InitVmmRequest;
+ PDEBUGGER_INIT_HYPERTRACE_PACKET InitHyperTraceRequest;
PDEBUGGER_PREALLOC_COMMAND DebuggerReservePreallocPoolRequest;
PDEBUGGER_PREACTIVATE_COMMAND DebuggerPreactivationRequest;
PDEBUGGER_APIC_REQUEST DebuggerApicRequest;
@@ -198,10 +200,24 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
{
case IOCTL_INIT_VMM:
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_INIT_VMM_PACKET,
+ (PVOID *)&InitVmmRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
//
// Initialize the vmm and the debugger
//
- if (LoaderInitVmmAndDebugger())
+ if (LoaderInitVmmAndDebugger(InitVmmRequest))
{
Status = STATUS_SUCCESS;
}
@@ -213,15 +229,38 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
Status = STATUS_UNSUCCESSFUL;
}
- DoNotChangeInformation = FALSE;
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_INIT_VMM_PACKET, &DoNotChangeInformation, Irp, &Status);
break;
case IOCTL_INIT_HYPERTRACE:
//
- // Initialize HyperTrace
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
//
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_DEBUGGER_INIT_HYPERTRACE_PACKET,
+ (PVOID *)&InitHyperTraceRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Initialize the HyperTrace (if supported by the processor)
+ //
+ LoaderInitHyperTrace(InitHyperTraceRequest, TRUE);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_INIT_HYPERTRACE_PACKET, &DoNotChangeInformation, Irp, &Status);
break;
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index 68c241ae..5adf9f5c 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -18,7 +18,7 @@
* @return BOOLEAN
*/
BOOLEAN
-LoaderInitHyperTrace(BOOLEAN RunningOnHypervisorEnvironment)
+LoaderInitHyperTrace(PDEBUGGER_INIT_HYPERTRACE_PACKET InitHyperTracePacket, BOOLEAN RunningOnHypervisorEnvironment)
{
HYPERTRACE_CALLBACKS HyperTraceCallbacks = {0};
@@ -81,6 +81,17 @@ LoaderInitHyperTrace(BOOLEAN RunningOnHypervisorEnvironment)
if (HyperTraceInitCallback(&HyperTraceCallbacks, RunningOnHypervisorEnvironment))
{
LogDebugInfo("HyperDbg's hypertrace loaded successfully");
+
+ //
+ // Mark hypertrace as initialized
+ //
+ g_HyperTraceInitialized = TRUE;
+
+ //
+ // Set the kernel status to success
+ //
+ InitHyperTracePacket->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+
return TRUE;
}
else
@@ -89,6 +100,12 @@ LoaderInitHyperTrace(BOOLEAN RunningOnHypervisorEnvironment)
// We won't fail the loading just because of hypertrace, so we just log the error and continue without loading hypertrace
//
LogDebugInfo("Err, HyperDbg's hypertrace was not loaded");
+
+ //
+ // Set the kernel status to indicate failure
+ //
+ InitHyperTracePacket->KernelStatus = DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED;
+
return FALSE;
}
}
@@ -135,13 +152,24 @@ LoaderInitHyperLog()
/**
* @brief Initialize the VMM and Debugger
*
+ * @param InitVmmPacket The packet to fill the result of the initialization
+ *
* @return BOOLEAN
*/
BOOLEAN
-LoaderInitVmmAndDebugger()
+LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
{
VMM_CALLBACKS VmmCallbacks = {0};
+ //
+ // Check if HyperTrace is already initialized, if so we cannot initialize VMM
+ //
+ if (g_HyperTraceInitialized)
+ {
+ InitVmmPacket->KernelStatus = DEBUGGER_ERROR_VMM_CANNOT_BE_INITIALIZED_IF_HYPERTRACE_IS_LOADED;
+ return FALSE;
+ }
+
//
// Allow to serve IOCTL
//
@@ -202,6 +230,11 @@ LoaderInitVmmAndDebugger()
{
LogDebugInfo("HyperDbg's debugger loaded successfully");
+ //
+ // Set the kernel status to success
+ //
+ InitVmmPacket->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+
return TRUE;
}
else
diff --git a/hyperdbg/hyperkd/header/driver/Loader.h b/hyperdbg/hyperkd/header/driver/Loader.h
index 54abc32f..ff112c85 100644
--- a/hyperdbg/hyperkd/header/driver/Loader.h
+++ b/hyperdbg/hyperkd/header/driver/Loader.h
@@ -20,10 +20,10 @@ BOOLEAN
LoaderInitHyperLog();
BOOLEAN
-LoaderInitVmmAndDebugger();
+LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket);
BOOLEAN
-LoaderInitHyperTrace(BOOLEAN RunningOnHypervisorEnvironment);
+LoaderInitHyperTrace(PDEBUGGER_INIT_HYPERTRACE_PACKET InitHyperTracePacket, BOOLEAN RunningOnHypervisorEnvironment);
VOID
LoaderUninitializeLogTracer();
diff --git a/hyperdbg/hyperkd/header/globals/Global.h b/hyperdbg/hyperkd/header/globals/Global.h
index fe415d59..8d98a8ae 100644
--- a/hyperdbg/hyperkd/header/globals/Global.h
+++ b/hyperdbg/hyperkd/header/globals/Global.h
@@ -22,6 +22,12 @@ PROCESSOR_DEBUGGING_STATE * g_DbgState;
*/
BOOLEAN g_HyperLogInitialized;
+/**
+ * @brief Shows whether the hypertrace module is initialized or not
+ *
+ */
+BOOLEAN g_HyperTraceInitialized;
+
/**
* @brief Event to show whether the user debugger is waiting for a command or not
*
diff --git a/hyperdbg/include/SDK/headers/DataTypes.h b/hyperdbg/include/SDK/headers/DataTypes.h
index 6f9db996..0c03ca5a 100644
--- a/hyperdbg/include/SDK/headers/DataTypes.h
+++ b/hyperdbg/include/SDK/headers/DataTypes.h
@@ -28,6 +28,21 @@ typedef enum _PAGING_LEVEL
PagingLevelPageMapLevel4
} PAGING_LEVEL;
+//////////////////////////////////////////////////
+// CPU Information //
+//////////////////////////////////////////////////
+
+/**
+ * @brief Different processor vendors
+ *
+ */
+typedef enum _GENERIC_PROCESSOR_VENDOR
+{
+ GENERIC_PROCESSOR_VENDOR_INTEL,
+ GENERIC_PROCESSOR_VENDOR_AMD,
+ GENERIC_PROCESSOR_VENDOR_OTHERS,
+} GENERIC_PROCESSOR_VENDOR;
+
//////////////////////////////////////////////////
// List Entries //
//////////////////////////////////////////////////
diff --git a/hyperdbg/include/SDK/headers/ErrorCodes.h b/hyperdbg/include/SDK/headers/ErrorCodes.h
index 8cb92a84..b205383f 100644
--- a/hyperdbg/include/SDK/headers/ErrorCodes.h
+++ b/hyperdbg/include/SDK/headers/ErrorCodes.h
@@ -635,6 +635,12 @@
*/
#define DEBUGGER_ERROR_PT_NOT_SUPPORTED 0xc0000062
+/**
+ * @brief error, VMM cannot be initialized while HyperTrace module is already loaded
+ *
+ */
+#define DEBUGGER_ERROR_VMM_CANNOT_BE_INITIALIZED_IF_HYPERTRACE_IS_LOADED 0xc0000063
+
//
// WHEN YOU ADD ANYTHING TO THIS LIST OF ERRORS, THEN
// MAKE SURE TO ADD AN ERROR MESSAGE TO ShowErrorMessage(UINT32 Error)
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 46910c00..43348413 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -12,6 +12,36 @@
#pragma once
#include "Pcie.h"
+#define SIZEOF_DEBUGGER_INIT_VMM_PACKET \
+ sizeof(DEBUGGER_INIT_VMM_PACKET)
+
+/**
+ * @brief request for initializing VMM
+ *
+ */
+typedef struct _DEBUGGER_INIT_VMM_PACKET
+{
+ UINT32 KernelStatus;
+
+} DEBUGGER_INIT_VMM_PACKET, *PDEBUGGER_INIT_VMM_PACKET;
+
+// ==============================================================================================
+
+#define SIZEOF_DEBUGGER_INIT_HYPERTRACE_PACKET \
+ sizeof(DEBUGGER_INIT_HYPERTRACE_PACKET)
+
+/**
+ * @brief request for initializing HyperTrace
+ *
+ */
+typedef struct _DEBUGGER_INIT_HYPERTRACE_PACKET
+{
+ UINT32 KernelStatus;
+
+} DEBUGGER_INIT_HYPERTRACE_PACKET, *PDEBUGGER_INIT_HYPERTRACE_PACKET;
+
+// ==============================================================================================
+
#define SIZEOF_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS \
sizeof(DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS)
diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
index 0b3ad7d6..8610bebc 100644
--- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
+++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
@@ -667,6 +667,54 @@ HyperDbgUninstallKdDriver()
return HyperDbgUninstallDriver(g_DriverName);
}
+/**
+ * @brief Initialize VMM module
+ *
+ * @return INT return zero if it was successful or non-zero if there
+ * was error
+ */
+INT
+HyperDbgInitHyperTraceModule()
+{
+ BOOL Status;
+ DEBUGGER_INIT_HYPERTRACE_PACKET InitHyperTracePacket = {0};
+
+ AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnOne);
+
+ //
+ // Send IOCTL to initialize HyperTrace module
+ //
+ Status = DeviceIoControl(g_DeviceHandle, // Handle to device
+ IOCTL_INIT_HYPERTRACE, // IO Control Code (IOCTL)
+ &InitHyperTracePacket, // Input Buffer to driver.
+ SIZEOF_DEBUGGER_INIT_HYPERTRACE_PACKET, // Length of input buffer in bytes.
+ &InitHyperTracePacket, // Output Buffer from driver.
+ SIZEOF_DEBUGGER_INIT_HYPERTRACE_PACKET, // Length of output buffer in bytes.
+ NULL, // Bytes placed in buffer.
+ NULL // synchronous call
+ );
+
+ //
+ // Check if the IOCTL was successful, if not show the error message and return
+ //
+ if (!Status)
+ {
+ ShowMessages("ioctl failed with code 0x%x\n", GetLastError());
+ return 1;
+ }
+
+ //
+ // Check the kernel status
+ //
+ if (InitHyperTracePacket.KernelStatus != DEBUGGER_OPERATION_WAS_SUCCESSFUL)
+ {
+ ShowErrorMessage(InitHyperTracePacket.KernelStatus);
+ return 1;
+ }
+
+ return 0;
+}
+
/**
* @brief Initialize VMM module
*
@@ -676,7 +724,8 @@ HyperDbgUninstallKdDriver()
INT
HyperDbgInitVmmModule()
{
- BOOL Status;
+ BOOL Status;
+ DEBUGGER_INIT_VMM_PACKET InitVmmPacket = {0};
AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnOne);
@@ -688,15 +737,14 @@ HyperDbgInitVmmModule()
//
// Send IOCTL to initialize VMM module
//
- Status = DeviceIoControl(g_DeviceHandle, // Handle to device
- IOCTL_INIT_VMM, // IO Control Code (IOCTL)
- NULL, // Input Buffer to driver.
- 0, // Length of input buffer in bytes. (x 2 is bcuz
- // as the driver is x64 and has 64 bit values)
- NULL, // Output Buffer from driver.
- 0, // Length of output buffer in bytes.
- NULL, // Bytes placed in buffer.
- NULL // synchronous call
+ Status = DeviceIoControl(g_DeviceHandle, // Handle to device
+ IOCTL_INIT_VMM, // IO Control Code (IOCTL)
+ &InitVmmPacket, // Input Buffer to driver.
+ SIZEOF_DEBUGGER_INIT_VMM_PACKET, // Length of input buffer in bytes.
+ &InitVmmPacket, // Output Buffer from driver.
+ SIZEOF_DEBUGGER_INIT_VMM_PACKET, // Length of output buffer in bytes.
+ NULL, // Bytes placed in buffer.
+ NULL // synchronous call
);
//
@@ -709,6 +757,17 @@ HyperDbgInitVmmModule()
return 1;
}
+ //
+ // Check the kernel status for early errors (e.g., HyperTrace already loaded)
+ //
+ if (InitVmmPacket.KernelStatus != DEBUGGER_OPERATION_WAS_SUCCESSFUL &&
+ InitVmmPacket.KernelStatus != 0)
+ {
+ ShowErrorMessage(InitVmmPacket.KernelStatus);
+ CloseHandle(g_IsDriverLoadedSuccessfully);
+ return 1;
+ }
+
//
// We wait for the first message from the kernel debugger to continue
//
@@ -918,6 +977,19 @@ HyperDbgUnloadVmm()
INT
HyperDbgLoadKdModule()
{
+ //
+ // Check if the module is already loaded, if that's the case, we don't
+ // need to handle anymore
+ //
+ if (g_IsDebuggerModulesLoaded)
+ {
+ //
+ // Return zero to indicate that the module is loaded successfully,
+ // and we no need to re-load it anymore
+ //
+ return 0;
+ }
+
if (HyperDbgCreateHandleFromKdModule() == 1)
{
//
@@ -939,24 +1011,15 @@ HyperDbgLoadKdModule()
}
/**
- * @brief load vmm module
+ * @brief Get the vendor of the current processor
*
- * @return int return zero if it was successful or non-zero if there
+ * @return GENERIC_PROCESSOR_VENDOR the vendor of the processor
*/
-INT
-HyperDbgLoadVmmModule()
+GENERIC_PROCESSOR_VENDOR
+HyperDbgGetProcessorVendor()
{
char CpuId[13] = {0};
- //
- // Enable Debug privilege to the current token
- //
- if (!SetDebugPrivilege())
- {
- ShowMessages("err, couldn't set debug privilege\n");
- return 1;
- }
-
//
// Read the vendor string
//
@@ -966,15 +1029,47 @@ HyperDbgLoadVmmModule()
if (strcmp(CpuId, "GenuineIntel") == 0)
{
- ShowMessages("virtualization technology is vt-x\n");
+ return GENERIC_PROCESSOR_VENDOR_INTEL;
+ }
+ else if (strcmp(CpuId, "AuthenticAMD") == 0)
+ {
+ return GENERIC_PROCESSOR_VENDOR_AMD;
}
else
{
- ShowMessages("this program is not designed to run in a non-VT-x "
- "environment !\n");
+ return GENERIC_PROCESSOR_VENDOR_OTHERS;
+ }
+}
+
+/**
+ * @brief load vmm module
+ *
+ * @return int return zero if it was successful or non-zero if there
+ */
+INT
+HyperDbgLoadVmmModule()
+{
+ //
+ // Enable Debug privilege to the current token
+ //
+ if (!SetDebugPrivilege())
+ {
+ ShowMessages("err, couldn't set debug privilege\n");
return 1;
}
+ //
+ // Check if the processor is a genuine Intel processor (required for VT-x)
+ //
+ if (HyperDbgGetProcessorVendor() != GENERIC_PROCESSOR_VENDOR_INTEL)
+ {
+ ShowMessages("err, this program is not designed to run in a non-VT-x "
+ "environment. It needs an Intel processor.\n");
+ return 1;
+ }
+
+ ShowMessages("virtualization technology is vt-x\n");
+
if (VmxSupportDetection())
{
ShowMessages("vmx operation is supported by your processor\n");
@@ -1010,3 +1105,55 @@ HyperDbgLoadVmmModule()
return 0;
}
+
+/**
+ * @brief load hypertrace module
+ *
+ * @return int return zero if it was successful or non-zero if there
+ * was error
+ */
+INT
+HyperDbgLoadHyperTraceModule()
+{
+ //
+ // Enable Debug privilege to the current token
+ //
+ if (!SetDebugPrivilege())
+ {
+ ShowMessages("err, couldn't set debug privilege\n");
+ return 1;
+ }
+
+ //
+ // Check if the processor is a genuine Intel processor (required for HyperTrace)
+ //
+ if (HyperDbgGetProcessorVendor() != GENERIC_PROCESSOR_VENDOR_INTEL)
+ {
+ ShowMessages("err, this program is not designed to run in a non-Intel "
+ "environment as it needs Intel PT (Processor Trace) and Intel LBR "
+ "(Last Branch Record). It needs an Intel processor.\n");
+ return 1;
+ }
+
+ //
+ // Load the KD module and create handle to it
+ //
+ if (HyperDbgLoadKdModule() == 1)
+ {
+ return 1;
+ }
+
+ //
+ // Initialize HyperTrace module
+ //
+ if (HyperDbgInitHyperTraceModule() == 1)
+ {
+ ShowMessages("err, initializing HyperTrace module\n");
+
+ return 1;
+ }
+
+ ShowMessages("hypertrace module is running...\n");
+
+ return 0;
+}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
index c821494c..3e514d9f 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
@@ -96,6 +96,29 @@ CommandLoad(vector CommandTokens, string Command)
//
SymbolLocalReload(GetCurrentProcessId());
}
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "trace"))
+ {
+ //
+ // Check to make sure that the driver is not already loaded
+ //
+ if (g_DeviceHandle)
+ {
+ ShowMessages("handle of the driver found, if you use 'load' before, please "
+ "first unload it then call 'unload'\n");
+ return;
+ }
+
+ //
+ // Load HyperTrace Module
+ //
+ ShowMessages("loading the hypertrace driver\n");
+
+ if (HyperDbgInstallKdDriver() == 1 || HyperDbgLoadHyperTraceModule() == 1)
+ {
+ ShowMessages("failed to install or load the driver\n");
+ return;
+ }
+ }
else
{
//
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp
index 24a42a46..8de6372e 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp
@@ -34,6 +34,7 @@ CommandUnloadHelp()
ShowMessages("\n");
ShowMessages("\t\te.g : unload vmm\n");
+ ShowMessages("\t\te.g : unload vm\n");
ShowMessages("\t\te.g : unload remove vmm\n");
}
@@ -59,8 +60,9 @@ CommandUnload(vector CommandTokens, string Command)
//
// Check for the module
//
- if ((CommandTokens.size() == 2 && CompareLowerCaseStrings(CommandTokens.at(1), "vmm")) ||
- (CommandTokens.size() == 3 && CompareLowerCaseStrings(CommandTokens.at(2), "vmm") && CompareLowerCaseStrings(CommandTokens.at(1), "remove")))
+ if ((CommandTokens.size() == 2 && (CompareLowerCaseStrings(CommandTokens.at(1), "vmm") || CompareLowerCaseStrings(CommandTokens.at(1), "vm"))) ||
+ (CommandTokens.size() == 3 && (CompareLowerCaseStrings(CommandTokens.at(2), "vmm") || CompareLowerCaseStrings(CommandTokens.at(2), "vm")) &&
+ CompareLowerCaseStrings(CommandTokens.at(1), "remove")))
{
if (!g_IsConnectedToHyperDbgLocally)
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index 44d572f2..912ee566 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -615,6 +615,16 @@ ShowErrorMessage(UINT32 Error)
Error);
break;
+ case DEBUGGER_ERROR_VMM_CANNOT_BE_INITIALIZED_IF_HYPERTRACE_IS_LOADED:
+ ShowMessages("err, HyperTrace is already loaded, please unload HyperTrace module using the "
+ "'unload' command and then load the 'VMM' module. Then you can load HyperTrace "
+ "after loading the VMM as it is because HyperTrace behaves differently to sync "
+ "with VMM modules; it needs to have this notion that it is running within the "
+ "hypervisor, so that is why it needs to be initialized again if the VMM module "
+ "is loaded (%x)\n",
+ Error);
+ break;
+
default:
ShowMessages("err, error not found (%x)\n",
Error);
diff --git a/hyperdbg/libhyperdbg/header/libhyperdbg.h b/hyperdbg/libhyperdbg/header/libhyperdbg.h
index b11d430f..be5c83e5 100644
--- a/hyperdbg/libhyperdbg/header/libhyperdbg.h
+++ b/hyperdbg/libhyperdbg/header/libhyperdbg.h
@@ -18,6 +18,9 @@
INT
HyperDbgCreateHandleFromVmmModule();
+INT
+HyperDbgInitHyperTraceModule();
+
INT
HyperDbgUnloadVmm();
@@ -30,6 +33,12 @@ HyperDbgUninstallKdDriver();
INT
HyperDbgLoadVmmModule();
+INT
+HyperDbgLoadHyperTraceModule();
+
+GENERIC_PROCESSOR_VENDOR
+HyperDbgGetProcessorVendor();
+
INT
HyperDbgStopVmmDriver();
From d669d93d81b7d575a315a2072d7fd68deb49fea9 Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 29 May 2026 00:10:44 +0200
Subject: [PATCH 195/323] add packet and messaging files
---
CHANGELOG.md | 7 +-
hyperdbg/hyperdbg.sln | 12 +
.../SDK/imports/user/HyperDbgLibImports.h | 9 +
.../code/windows-only/windows-privilege.c | 67 ++
.../header/windows-only/windows-privilege.h | 23 +
hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 628 +++---------------
hyperdbg/libhyperdbg/code/app/messaging.cpp | 149 +++++
hyperdbg/libhyperdbg/code/app/packets.cpp | 369 ++++++++++
.../commands/debugging-commands/load.cpp | 27 +-
.../commands/debugging-commands/unload.cpp | 4 +-
.../commands/meta-commands/script.cpp | 2 +-
.../code/debugger/core/break-control.cpp | 4 +-
.../code/debugger/core/debugger.cpp | 3 +-
.../code/debugger/kernel-level/kd.cpp | 4 +-
.../code/debugger/script-engine/symbol.cpp | 3 +-
hyperdbg/libhyperdbg/code/export/export.cpp | 35 +-
hyperdbg/libhyperdbg/header/globals.h | 35 +-
hyperdbg/libhyperdbg/header/libhyperdbg.h | 27 +-
hyperdbg/libhyperdbg/header/messaging.h | 25 +
hyperdbg/libhyperdbg/header/packets.h | 22 +
hyperdbg/libhyperdbg/libhyperdbg.vcxproj | 6 +
.../libhyperdbg/libhyperdbg.vcxproj.filters | 24 +
hyperdbg/libhyperdbg/pch.h | 3 +
23 files changed, 882 insertions(+), 606 deletions(-)
create mode 100644 hyperdbg/include/platform/user/code/windows-only/windows-privilege.c
create mode 100644 hyperdbg/include/platform/user/header/windows-only/windows-privilege.h
create mode 100644 hyperdbg/libhyperdbg/code/app/messaging.cpp
create mode 100644 hyperdbg/libhyperdbg/code/app/packets.cpp
create mode 100644 hyperdbg/libhyperdbg/header/messaging.h
create mode 100644 hyperdbg/libhyperdbg/header/packets.h
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8cf3414b..0af5e50a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,9 +16,14 @@ New release of the HyperDbg Debugger.
- Added the '!lbrdump' command for dumping saved Last Branch Record (LBR) entries ([link](https://docs.hyperdbg.org/commands/extension-commands/lbrdmp))
- Added **lbr_save()** and **lbr_print()** functions in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr/lbr_save))([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr/lbr_print))
- Added mock application for compiling SDK for Linux
-- Add '!help' alias for the '.help' command
+- Added '!help' alias for the '.help' command
+- Added 'vm' alias for the 'load' command ([link](https://docs.hyperdbg.org/commands/debugging-commands/load))
- Added **lbr_check()** and **lbr_restore()** functions in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr/lbr_check))([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr/lbr_restore))
- Added **lbr_restore_by_filter(filter)** function in the script engine ([link](https://docs.hyperdbg.org/commands/scripting-language/functions/tracing/lbr/lbr_restore_by_filter))
+- Added the 'kd' module in the 'load' command ([link](https://docs.hyperdbg.org/commands/debugging-commands/load))
+- Added the 'trace' module in the 'load' command ([link](https://docs.hyperdbg.org/commands/debugging-commands/load))
+- Exported SDK API for detecting CPU vendors
+- Exported SDK APIs for loading the 'kd' and the 'trace' modules
### Changed
- Fix the problem of not applying the EAX index in the CPUID event extension command ([link](https://docs.hyperdbg.org/commands/extension-commands/cpuid#parameters))
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 2c4bf22d..ad1af362 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -291,6 +291,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "kernel", "kernel", "{09E02C
linux\mock\kernel\pch.h = linux\mock\kernel\pch.h
EndProjectSection
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "windows-only", "windows-only", "{C95E342A-9622-4351-8177-CDA43A52E7B2}"
+ ProjectSection(SolutionItems) = preProject
+ include\platform\user\header\windows-only\windows-privilege.h = include\platform\user\header\windows-only\windows-privilege.h
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "windows-only", "windows-only", "{45ABB14F-86B9-40BE-9C0F-213653CE6A93}"
+ ProjectSection(SolutionItems) = preProject
+ include\platform\user\code\windows-only\windows-privilege.c = include\platform\user\code\windows-only\windows-privilege.c
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug|x64 = debug|x64
@@ -390,6 +400,8 @@ Global
{848FE945-4F37-4B5B-98C8-F22CA3AA7184} = {17652C16-00A0-40D4-A227-697E595DE053}
{D3722A82-0A54-4172-A0C1-1EA6500E9F1E} = {770B65D6-5307-478C-A9EB-3E4A64B67225}
{09E02C0A-6A6C-408A-8136-C787FDC58A5F} = {770B65D6-5307-478C-A9EB-3E4A64B67225}
+ {C95E342A-9622-4351-8177-CDA43A52E7B2} = {DBE32379-8D5A-4454-A1B6-ACC407881898}
+ {45ABB14F-86B9-40BE-9C0F-213653CE6A93} = {4BF590C3-1032-4DD2-BF87-BB9E5781977C}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1444BEC7-11CE-4CA6-B77C-5F98AC9BFAEB}
diff --git a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
index 13877be9..ca498404 100644
--- a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
+++ b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
@@ -51,6 +51,15 @@ hyperdbg_u_uninstall_kd_driver();
IMPORT_EXPORT_LIBHYPERDBG INT
hyperdbg_u_stop_vmm_driver();
+IMPORT_EXPORT_LIBHYPERDBG GENERIC_PROCESSOR_VENDOR
+hyperdbg_u_get_processor_vendor();
+
+IMPORT_EXPORT_LIBHYPERDBG INT
+hyperdbg_u_load_kd_module();
+
+IMPORT_EXPORT_LIBHYPERDBG INT
+hyperdbg_u_load_hypertrace_module();
+
//
// Testing parser
//
diff --git a/hyperdbg/include/platform/user/code/windows-only/windows-privilege.c b/hyperdbg/include/platform/user/code/windows-only/windows-privilege.c
new file mode 100644
index 00000000..67f84983
--- /dev/null
+++ b/hyperdbg/include/platform/user/code/windows-only/windows-privilege.c
@@ -0,0 +1,67 @@
+/**
+ * @file windows-privilege.c
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Implementation of Windows only APIs for adjusting privileges
+ * @details
+ * @version 0.19
+ * @date 2026-05-28
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+/**
+ * @brief Is privileges already adjusted
+ */
+BOOLEAN g_PrivilegesAlreadyAdjusted = FALSE;
+
+/**
+ * @brief Adjust kernel debug privilege
+ *
+ * @return BOOLEAN return TRUE if it was successful or FALSE if there
+ */
+BOOLEAN
+WindowsSetDebugPrivilege()
+{
+#ifdef _WIN32 // Windows
+ BOOL Status;
+ HANDLE Token;
+
+ //
+ // Check if we already adjusted the privilege
+ //
+ if (g_PrivilegesAlreadyAdjusted)
+ {
+ return TRUE;
+ }
+
+ //
+ // Enable Debug privilege
+ //
+ Status = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &Token);
+ if (!Status)
+ {
+ ShowMessages("err, OpenProcessToken failed (%x)\n", GetLastError());
+ return FALSE;
+ }
+
+ Status = SetPrivilege(Token, SE_DEBUG_NAME, TRUE);
+ if (!Status)
+ {
+ CloseHandle(Token);
+ return FALSE;
+ }
+
+ //
+ // Indicate that the privilege is already adjusted
+ //
+ g_PrivilegesAlreadyAdjusted = TRUE;
+
+ CloseHandle(Token);
+ return TRUE;
+
+#elif defined(__linux__) // Linux
+ return TRUE; // No need to adjust privileges on Linux
+#endif
+}
diff --git a/hyperdbg/include/platform/user/header/windows-only/windows-privilege.h b/hyperdbg/include/platform/user/header/windows-only/windows-privilege.h
new file mode 100644
index 00000000..a8c19eaa
--- /dev/null
+++ b/hyperdbg/include/platform/user/header/windows-only/windows-privilege.h
@@ -0,0 +1,23 @@
+/**
+ * @file windows-privilege.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Windows only APIs for adjusting privileges
+ * @details
+ * @version 0.19
+ * @date 2026-05-28
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+BOOLEAN
+WindowsSetDebugPrivilege();
diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
index 8610bebc..414cb5d1 100644
--- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
+++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
@@ -19,539 +19,13 @@ using namespace std;
extern HANDLE g_DeviceHandle;
extern HANDLE g_IsDriverLoadedSuccessfully;
extern BOOLEAN g_IsVmxOffProcessStart;
-extern PVOID g_MessageHandler;
-extern PVOID g_MessageHandlerSharedBuffer;
extern TCHAR g_DriverLocation[MAX_PATH];
extern TCHAR g_DriverName[MAX_PATH];
extern BOOLEAN g_UseCustomDriverLocation;
extern LIST_ENTRY g_EventTrace;
-extern BOOLEAN g_LogOpened;
-extern BOOLEAN g_BreakPrintingOutput;
-extern BOOLEAN g_IsConnectedToRemoteDebugger;
-extern BOOLEAN g_OutputSourcesInitialized;
-extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
-extern BOOLEAN g_IsDebuggerModulesLoaded;
-extern BOOLEAN g_IsReversingMachineModulesLoaded;
-extern BOOLEAN g_PrivilegesAlreadyAdjusted;
-extern LIST_ENTRY g_OutputSources;
-extern DEBUGGER_SYNCRONIZATION_EVENTS_STATE
- g_UserSyncronizationObjectsHandleTable[DEBUGGER_MAXIMUM_SYNCRONIZATION_USER_DEBUGGER_OBJECTS];
-
-/**
- * @brief Set the function callback that will be called if any message
- * needs to be shown
- *
- * @param Handler Function that handles the messages
- * @return VOID
- */
-VOID
-SetTextMessageCallback(PVOID Handler)
-{
- g_MessageHandler = Handler;
-}
-
-/**
- * @brief Set the function callback that will be called if any message
- * needs to be shown
- *
- * @param Handler Function that handles the messages
- * @return PVOID
- */
-PVOID
-SetTextMessageCallbackUsingSharedBuffer(PVOID Handler)
-{
- g_MessageHandler = Handler;
- g_MessageHandlerSharedBuffer = malloc(COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT);
-
- if (!g_MessageHandlerSharedBuffer)
- {
- g_MessageHandler = NULL;
- return NULL;
- }
-
- RtlZeroMemory(g_MessageHandlerSharedBuffer, COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT);
-
- return g_MessageHandlerSharedBuffer;
-}
-
-/**
- * @brief Unset the function callback that will be called if any message
- * needs to be shown
- *
- * @return VOID
- */
-VOID
-UnsetTextMessageCallback()
-{
- g_MessageHandler = NULL;
- free(g_MessageHandlerSharedBuffer);
- g_MessageHandlerSharedBuffer = NULL;
-}
-
-/**
- * @brief Show messages
- *
- * @param Fmt format string message
- * @param ... arguments
- * @return VOID
- */
-VOID
-ShowMessages(const char * Fmt, ...)
-{
- va_list ArgList;
- va_list Args;
- char TempMessage[COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT] = {0};
-
- if (g_MessageHandler == NULL && !g_IsConnectedToRemoteDebugger && !g_IsSerialConnectedToRemoteDebugger)
- {
- va_start(Args, Fmt);
-
- vprintf(Fmt, Args);
-
- va_end(Args);
-
- if (!g_LogOpened)
- {
- return;
- }
- }
-
- va_start(ArgList, Fmt);
-
- int SprintfResult = vsprintf_s(TempMessage, Fmt, ArgList);
-
- va_end(ArgList);
-
- if (SprintfResult != -1)
- {
- if (g_IsConnectedToRemoteDebugger)
- {
- //
- // vsprintf_s and vswprintf_s return the number of characters written,
- // not including the terminating null character, or a negative value
- // if an output error occurs.
- //
- RemoteConnectionSendResultsToHost(TempMessage, SprintfResult);
- }
- else if (g_IsSerialConnectedToRemoteDebugger)
- {
- KdSendUsermodePrints(TempMessage, SprintfResult);
- }
-
- if (g_LogOpened)
- {
- //
- // .logopen command executed
- //
- LogopenSaveToFile(TempMessage);
- }
- if (g_MessageHandler != NULL)
- {
- //
- // There is another handler
- //
- if (g_MessageHandlerSharedBuffer == NULL)
- {
- ((SendMessageWithParamCallback)g_MessageHandler)(TempMessage);
- }
- else
- {
- memcpy(g_MessageHandlerSharedBuffer, TempMessage, strlen(TempMessage) + 1);
- ((SendMessageWithSharedBufferCallback)g_MessageHandler)();
- }
- }
- }
-}
-
-/**
- * @brief Read kernel buffers using IRP Pending
- *
- * @param Device Driver handle
- * @return VOID
- */
-VOID
-ReadIrpBasedBuffer()
-{
- BOOL Status;
- ULONG ReturnedLength;
- REGISTER_NOTIFY_BUFFER RegisterEvent;
- DWORD ErrorNum;
- HANDLE Handle;
- UINT32 OperationCode;
-
- RegisterEvent.hEvent = NULL;
- RegisterEvent.Type = IRP_BASED;
-
- //
- // Create another handle to be used in for reading kernel messages,
- // it is because I noticed that if I use a same handle for IRP Pending
- // and other IOCTLs then if I complete that IOCTL then both of the current
- // IOCTL and the Pending IRP are completed and return to user mode,
- // even if it's odd but that what happens, so this way we can solve it
- // if you know why this problem happens, then contact me !
- //
- Handle = CreateFileA(
- "\\\\.\\HyperDbgDebuggerDevice",
- GENERIC_READ | GENERIC_WRITE,
- FILE_SHARE_READ | FILE_SHARE_WRITE,
- NULL, /// lpSecurityAttirbutes
- OPEN_EXISTING,
- FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
- NULL); /// lpTemplateFile
-
- if (Handle == INVALID_HANDLE_VALUE)
- {
- ErrorNum = GetLastError();
-
- if (ErrorNum == ERROR_ACCESS_DENIED)
- {
- ShowMessages("err, access denied\nare you sure you have administrator "
- "rights?\n");
- }
- else if (ErrorNum == ERROR_GEN_FAILURE)
- {
- ShowMessages("err, a device attached to the system is not functioning\n"
- "vmx feature might be disabled from BIOS or VBS/HVCI is active\n");
- }
- else
- {
- ShowMessages("err, CreateFile failed with (%x)\n", ErrorNum);
- }
-
- g_DeviceHandle = NULL;
- Handle = NULL;
-
- return;
- }
-
- //
- // allocate buffer for transferring messages
- //
- char * OutputBuffer = (char *)malloc(UsermodeBufferSize);
-
- try
- {
- while (TRUE)
- {
- if (!g_IsVmxOffProcessStart)
- {
- //
- // Clear the buffer
- //
- ZeroMemory(OutputBuffer, UsermodeBufferSize);
-
- Status = DeviceIoControl(
- Handle, // Handle to device
- IOCTL_REGISTER_EVENT, // IO Control Code (IOCTL)
- &RegisterEvent, // Input Buffer to driver.
- SIZEOF_REGISTER_EVENT * 2, // Length of input buffer in bytes. (x 2 is bcuz as the
- // driver is x64 and has 64 bit values)
- OutputBuffer, // Output Buffer from driver.
- UsermodeBufferSize, // Length of output buffer in bytes.
- &ReturnedLength, // Bytes placed in buffer.
- NULL // synchronous call
- );
-
- if (!Status)
- {
- //
- // Error occurred for second time, and we show the error message
- //
- // ShowMessages("ioctl failed with code 0x%x\n", GetLastError());
-
- //
- // if we reach here, the packet is probably failed, it might
- // be because of using flush command
- //
- continue;
- }
-
- //
- // Compute the received buffer's operation code
- //
- memcpy(&OperationCode, OutputBuffer, sizeof(UINT32));
-
- // ShowMessages("Returned Length : 0x%x \n", ReturnedLength);
- // ShowMessages("Operation Code : 0x%x \n", OperationCode);
-
- //
- // Check if the operation code contains mandatory debuggee bit
- // If that's the case, we shouldn't wait (sleep) for new messages
- //
- if ((OperationCode & OPERATION_MANDATORY_DEBUGGEE_BIT) == 0)
- {
- Sleep(DefaultSpeedOfReadingKernelMessages); // we're not trying to eat all of the CPU ;)
- }
-
- switch (OperationCode)
- {
- case OPERATION_LOG_NON_IMMEDIATE_MESSAGE:
-
- if (g_BreakPrintingOutput)
- {
- //
- // means that the user asserts a CTRL+C or CTRL+BREAK Signal
- // we shouldn't show or save anything in this case
- //
- continue;
- }
-
- ShowMessages("%s", OutputBuffer + sizeof(UINT32));
-
- break;
-
- case OPERATION_LOG_MESSAGE_MANDATORY:
-
- ShowMessages("%s", OutputBuffer + sizeof(UINT32));
-
- break;
-
- case OPERATION_LOG_INFO_MESSAGE:
-
- if (g_BreakPrintingOutput)
- {
- //
- // means that the user asserts a CTRL+C or CTRL+BREAK Signal
- // we shouldn't show or save anything in this case
- //
- continue;
- }
-
- ShowMessages("%s", OutputBuffer + sizeof(UINT32));
-
- break;
-
- case OPERATION_LOG_ERROR_MESSAGE:
- if (g_BreakPrintingOutput)
- {
- //
- // means that the user asserts a CTRL+C or CTRL+BREAK Signal
- // we shouldn't show or save anything in this case
- //
- continue;
- }
-
- ShowMessages("%s", OutputBuffer + sizeof(UINT32));
-
- break;
-
- case OPERATION_LOG_WARNING_MESSAGE:
-
- if (g_BreakPrintingOutput)
- {
- //
- // means that the user asserts a CTRL+C or CTRL+BREAK Signal
- // we shouldn't show or save anything in this case
- //
- continue;
- }
-
- ShowMessages("%s", OutputBuffer + sizeof(UINT32));
-
- break;
-
- case OPERATION_COMMAND_FROM_DEBUGGER_CLOSE_AND_UNLOAD_VMM:
-
- KdCloseConnection();
-
- break;
-
- case OPERATION_DEBUGGEE_USER_INPUT:
-
- KdHandleUserInputInDebuggee((DEBUGGEE_USER_INPUT_PACKET *)(OutputBuffer + sizeof(UINT32)));
-
- break;
-
- case OPERATION_DEBUGGEE_REGISTER_EVENT:
-
- KdRegisterEventInDebuggee(
- (PDEBUGGER_GENERAL_EVENT_DETAIL)(OutputBuffer + sizeof(UINT32)),
- ReturnedLength);
-
- break;
-
- case OPERATION_DEBUGGEE_ADD_ACTION_TO_EVENT:
-
- KdAddActionToEventInDebuggee(
- (PDEBUGGER_GENERAL_ACTION)(OutputBuffer + sizeof(UINT32)),
- ReturnedLength);
-
- break;
-
- case OPERATION_DEBUGGEE_CLEAR_EVENTS:
-
- KdSendModifyEventInDebuggee(
- (PDEBUGGER_MODIFY_EVENTS)(OutputBuffer + sizeof(UINT32)),
- TRUE);
-
- break;
-
- case OPERATION_DEBUGGEE_CLEAR_EVENTS_WITHOUT_NOTIFYING_DEBUGGER:
-
- KdSendModifyEventInDebuggee(
- (PDEBUGGER_MODIFY_EVENTS)(OutputBuffer + sizeof(UINT32)),
- FALSE);
-
- break;
-
- case OPERATION_HYPERVISOR_DRIVER_IS_SUCCESSFULLY_LOADED:
-
- //
- // Indicate that driver (Hypervisor) is loaded successfully
- //
- SetEvent(g_IsDriverLoadedSuccessfully);
-
- break;
-
- case OPERATION_HYPERVISOR_DRIVER_END_OF_IRPS:
-
- //
- // End of receiving messages (IRPs), nothing to do
- //
- break;
-
- case OPERATION_COMMAND_FROM_DEBUGGER_RELOAD_SYMBOL:
-
- //
- // Pause debugger after getting the results
- //
- KdReloadSymbolsInDebuggee(TRUE,
- ((PDEBUGGEE_SYMBOL_REQUEST_PACKET)(OutputBuffer + sizeof(UINT32)))->ProcessId);
-
- break;
-
- case OPERATION_NOTIFICATION_FROM_USER_DEBUGGER_PAUSE:
-
- //
- // handle pausing packet from user debugger
- //
- UdHandleUserDebuggerPausing(
- (PDEBUGGEE_UD_PAUSED_PACKET)(OutputBuffer + sizeof(UINT32)));
-
- break;
-
- default:
-
- //
- // Check if there are available output sources
- //
- if (!g_OutputSourcesInitialized || !ForwardingCheckAndPerformEventForwarding(OperationCode,
- OutputBuffer + sizeof(UINT32),
- ReturnedLength - sizeof(UINT32) - 1))
- {
- if (g_BreakPrintingOutput)
- {
- //
- // means that the user asserts a CTRL+C or CTRL+BREAK Signal
- // we shouldn't show or save anything in this case
- //
- continue;
- }
-
- ShowMessages("%s", OutputBuffer + sizeof(UINT32));
- }
-
- break;
- }
- }
- else
- {
- //
- // the thread should not work anymore
- //
- free(OutputBuffer);
-
- //
- // closeHandle
- //
- if (!CloseHandle(Handle))
- {
- ShowMessages("err, closing handle 0x%x\n", GetLastError());
- }
-
- return;
- }
- }
- }
- catch (const std::exception &)
- {
- ShowMessages("err, exception occurred in creating handle or parsing buffer\n");
- }
-
- free(OutputBuffer);
-
- //
- // closeHandle
- //
- if (!CloseHandle(Handle))
- {
- ShowMessages("err, closing handle 0x%x\n", GetLastError());
- };
-}
-
-/**
- * @brief Create a thread for pending buffers
- *
- * @param Data
- * @return DWORD Device Handle
- */
-DWORD WINAPI
-IrpBasedBufferThread(void * data)
-{
- //
- // Do stuff. This will be the first function called on the new
- // thread. When this function returns, the thread goes away. See
- // MSDN for more details. Test Irp Based Notifications
- //
- ReadIrpBasedBuffer();
-
- return 0;
-}
-
-/**
- * @brief Adjust kernel debug privilege
- *
- * @return BOOLEAN return TRUE if it was successful or FALSE if there
- */
-BOOLEAN
-SetDebugPrivilege()
-{
- BOOL Status;
- HANDLE Token;
-
- //
- // Check if we already adjusted the privilege
- //
- if (g_PrivilegesAlreadyAdjusted)
- {
- return TRUE;
- }
-
- //
- // Enable Debug privilege
- //
- Status = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &Token);
- if (!Status)
- {
- ShowMessages("err, OpenProcessToken failed (%x)\n", GetLastError());
- return FALSE;
- }
-
- Status = SetPrivilege(Token, SE_DEBUG_NAME, TRUE);
- if (!Status)
- {
- CloseHandle(Token);
- return FALSE;
- }
-
- //
- // Indicate that the privilege is already adjusted
- //
- g_PrivilegesAlreadyAdjusted = TRUE;
-
- CloseHandle(Token);
- return TRUE;
-}
+extern BOOLEAN g_IsKdModuleLoaded;
+extern BOOLEAN g_IsVmmModuleLoaded;
+extern BOOLEAN g_IsHyperTraceModuleLoaded;
/**
* @brief Install KD (Kernel Debugger) driver
@@ -562,6 +36,18 @@ SetDebugPrivilege()
INT
HyperDbgInstallKdDriver()
{
+ //
+ // Check if the driver is already loaded, if that's the case, we shouldn't try to load it again
+ //
+ if (g_IsKdModuleLoaded)
+ {
+ //
+ // The driver is already loaded, so we shouldn't try to load it again
+ // but we can consider it as success and return zero
+ //
+ return 0;
+ }
+
//
// The driver is not started yet so let us the install driver
// First setup full path to driver name
@@ -602,10 +88,10 @@ HyperDbgInstallKdDriver()
/**
* @brief Stop the driver
*
- * @return int return zero if it was successful or non-zero if there
+ * @return INT return zero if it was successful or non-zero if there
* was error
*/
-int
+INT
HyperDbgStopDriver(LPCTSTR DriverName)
{
//
@@ -636,10 +122,10 @@ HyperDbgStopVmmDriver()
/**
* @brief Remove the driver
*
- * @return int return zero if it was successful or non-zero if there
+ * @return INT return zero if it was successful or non-zero if there
* was error
*/
-int
+INT
HyperDbgUninstallDriver(LPCTSTR DriverName)
{
//
@@ -676,7 +162,7 @@ HyperDbgUninstallKdDriver()
INT
HyperDbgInitHyperTraceModule()
{
- BOOL Status;
+ BOOL Status;
DEBUGGER_INIT_HYPERTRACE_PACKET InitHyperTracePacket = {0};
AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnOne);
@@ -684,14 +170,14 @@ HyperDbgInitHyperTraceModule()
//
// Send IOCTL to initialize HyperTrace module
//
- Status = DeviceIoControl(g_DeviceHandle, // Handle to device
- IOCTL_INIT_HYPERTRACE, // IO Control Code (IOCTL)
- &InitHyperTracePacket, // Input Buffer to driver.
+ Status = DeviceIoControl(g_DeviceHandle, // Handle to device
+ IOCTL_INIT_HYPERTRACE, // IO Control Code (IOCTL)
+ &InitHyperTracePacket, // Input Buffer to driver.
SIZEOF_DEBUGGER_INIT_HYPERTRACE_PACKET, // Length of input buffer in bytes.
- &InitHyperTracePacket, // Output Buffer from driver.
+ &InitHyperTracePacket, // Output Buffer from driver.
SIZEOF_DEBUGGER_INIT_HYPERTRACE_PACKET, // Length of output buffer in bytes.
- NULL, // Bytes placed in buffer.
- NULL // synchronous call
+ NULL, // Bytes placed in buffer.
+ NULL // synchronous call
);
//
@@ -724,7 +210,7 @@ HyperDbgInitHyperTraceModule()
INT
HyperDbgInitVmmModule()
{
- BOOL Status;
+ BOOL Status;
DEBUGGER_INIT_VMM_PACKET InitVmmPacket = {0};
AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnOne);
@@ -737,14 +223,14 @@ HyperDbgInitVmmModule()
//
// Send IOCTL to initialize VMM module
//
- Status = DeviceIoControl(g_DeviceHandle, // Handle to device
- IOCTL_INIT_VMM, // IO Control Code (IOCTL)
- &InitVmmPacket, // Input Buffer to driver.
+ Status = DeviceIoControl(g_DeviceHandle, // Handle to device
+ IOCTL_INIT_VMM, // IO Control Code (IOCTL)
+ &InitVmmPacket, // Input Buffer to driver.
SIZEOF_DEBUGGER_INIT_VMM_PACKET, // Length of input buffer in bytes.
- &InitVmmPacket, // Output Buffer from driver.
+ &InitVmmPacket, // Output Buffer from driver.
SIZEOF_DEBUGGER_INIT_VMM_PACKET, // Length of output buffer in bytes.
- NULL, // Bytes placed in buffer.
- NULL // synchronous call
+ NULL, // Bytes placed in buffer.
+ NULL // synchronous call
);
//
@@ -957,7 +443,7 @@ HyperDbgUnloadVmm()
//
// Debugger module is not loaded anymore
//
- g_IsDebuggerModulesLoaded = FALSE;
+ g_IsKdModuleLoaded = FALSE;
//
// Check if we found an already built symbol table
@@ -981,7 +467,7 @@ HyperDbgLoadKdModule()
// Check if the module is already loaded, if that's the case, we don't
// need to handle anymore
//
- if (g_IsDebuggerModulesLoaded)
+ if (g_IsKdModuleLoaded)
{
//
// Return zero to indicate that the module is loaded successfully,
@@ -1005,7 +491,7 @@ HyperDbgLoadKdModule()
//
// If we reach here so the module are loaded
//
- g_IsDebuggerModulesLoaded = TRUE;
+ g_IsKdModuleLoaded = TRUE;
return 0;
}
@@ -1025,7 +511,7 @@ HyperDbgGetProcessorVendor()
//
CpuReadVendorString(CpuId);
- ShowMessages("current processor vendor is : %s\n", CpuId);
+ // ShowMessages("current processor vendor is : %s\n", CpuId);
if (strcmp(CpuId, "GenuineIntel") == 0)
{
@@ -1049,10 +535,23 @@ HyperDbgGetProcessorVendor()
INT
HyperDbgLoadVmmModule()
{
+ //
+ // Check if the module is already loaded, if that's the case, we don't
+ // need to handle anymore
+ //
+ if (g_IsVmmModuleLoaded)
+ {
+ //
+ // Return zero to indicate that the module is loaded successfully,
+ // and we no need to re-load it anymore
+ //
+ return 0;
+ }
+
//
// Enable Debug privilege to the current token
//
- if (!SetDebugPrivilege())
+ if ( !WindowsSetDebugPrivilege())
{
ShowMessages("err, couldn't set debug privilege\n");
return 1;
@@ -1101,6 +600,11 @@ HyperDbgLoadVmmModule()
return 1;
}
+ //
+ // If we reach here so the module are loaded
+ //
+ g_IsVmmModuleLoaded = TRUE;
+
ShowMessages("vmm module is running...\n");
return 0;
@@ -1115,10 +619,23 @@ HyperDbgLoadVmmModule()
INT
HyperDbgLoadHyperTraceModule()
{
+ //
+ // Check if the module is already loaded, if that's the case, we don't
+ // need to handle anymore
+ //
+ if (g_IsHyperTraceModuleLoaded)
+ {
+ //
+ // Return zero to indicate that the module is loaded successfully,
+ // and we no need to re-load it anymore
+ //
+ return 0;
+ }
+
//
// Enable Debug privilege to the current token
//
- if (!SetDebugPrivilege())
+ if ( !WindowsSetDebugPrivilege())
{
ShowMessages("err, couldn't set debug privilege\n");
return 1;
@@ -1153,6 +670,11 @@ HyperDbgLoadHyperTraceModule()
return 1;
}
+ //
+ // If we reach here so the module are loaded
+ //
+ g_IsHyperTraceModuleLoaded = TRUE;
+
ShowMessages("hypertrace module is running...\n");
return 0;
diff --git a/hyperdbg/libhyperdbg/code/app/messaging.cpp b/hyperdbg/libhyperdbg/code/app/messaging.cpp
new file mode 100644
index 00000000..390ab620
--- /dev/null
+++ b/hyperdbg/libhyperdbg/code/app/messaging.cpp
@@ -0,0 +1,149 @@
+/**
+ * @file messaging.cpp
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Functions for handling messages
+ * @details
+ * @version 0.19
+ * @date 2026-05-28
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+using namespace std;
+
+//
+// Global Variables
+//
+extern PVOID g_MessageHandler;
+extern PVOID g_MessageHandlerSharedBuffer;
+extern BOOLEAN g_LogOpened;
+extern BOOLEAN g_IsConnectedToRemoteDebugger;
+extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
+
+/**
+ * @brief Set the function callback that will be called if any message
+ * needs to be shown
+ *
+ * @param Handler Function that handles the messages
+ * @return VOID
+ */
+VOID
+SetTextMessageCallback(PVOID Handler)
+{
+ g_MessageHandler = Handler;
+}
+
+/**
+ * @brief Set the function callback that will be called if any message
+ * needs to be shown
+ *
+ * @param Handler Function that handles the messages
+ * @return PVOID
+ */
+PVOID
+SetTextMessageCallbackUsingSharedBuffer(PVOID Handler)
+{
+ g_MessageHandler = Handler;
+ g_MessageHandlerSharedBuffer = malloc(COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT);
+
+ if (!g_MessageHandlerSharedBuffer)
+ {
+ g_MessageHandler = NULL;
+ return NULL;
+ }
+
+ RtlZeroMemory(g_MessageHandlerSharedBuffer, COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT);
+
+ return g_MessageHandlerSharedBuffer;
+}
+
+/**
+ * @brief Unset the function callback that will be called if any message
+ * needs to be shown
+ *
+ * @return VOID
+ */
+VOID
+UnsetTextMessageCallback()
+{
+ g_MessageHandler = NULL;
+ free(g_MessageHandlerSharedBuffer);
+ g_MessageHandlerSharedBuffer = NULL;
+}
+
+/**
+ * @brief Show messages
+ *
+ * @param Fmt format string message
+ * @param ... arguments
+ * @return VOID
+ */
+VOID
+ShowMessages(const char * Fmt, ...)
+{
+ va_list ArgList;
+ va_list Args;
+ char TempMessage[COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT] = {0};
+
+ if (g_MessageHandler == NULL && !g_IsConnectedToRemoteDebugger && !g_IsSerialConnectedToRemoteDebugger)
+ {
+ va_start(Args, Fmt);
+
+ vprintf(Fmt, Args);
+
+ va_end(Args);
+
+ if (!g_LogOpened)
+ {
+ return;
+ }
+ }
+
+ va_start(ArgList, Fmt);
+
+ int SprintfResult = vsprintf_s(TempMessage, Fmt, ArgList);
+
+ va_end(ArgList);
+
+ if (SprintfResult != -1)
+ {
+ if (g_IsConnectedToRemoteDebugger)
+ {
+ //
+ // vsprintf_s and vswprintf_s return the number of characters written,
+ // not including the terminating null character, or a negative value
+ // if an output error occurs.
+ //
+ RemoteConnectionSendResultsToHost(TempMessage, SprintfResult);
+ }
+ else if (g_IsSerialConnectedToRemoteDebugger)
+ {
+ KdSendUsermodePrints(TempMessage, SprintfResult);
+ }
+
+ if (g_LogOpened)
+ {
+ //
+ // .logopen command executed
+ //
+ LogopenSaveToFile(TempMessage);
+ }
+ if (g_MessageHandler != NULL)
+ {
+ //
+ // There is another handler
+ //
+ if (g_MessageHandlerSharedBuffer == NULL)
+ {
+ ((SendMessageWithParamCallback)g_MessageHandler)(TempMessage);
+ }
+ else
+ {
+ memcpy(g_MessageHandlerSharedBuffer, TempMessage, strlen(TempMessage) + 1);
+ ((SendMessageWithSharedBufferCallback)g_MessageHandler)();
+ }
+ }
+ }
+}
diff --git a/hyperdbg/libhyperdbg/code/app/packets.cpp b/hyperdbg/libhyperdbg/code/app/packets.cpp
new file mode 100644
index 00000000..8aa8185b
--- /dev/null
+++ b/hyperdbg/libhyperdbg/code/app/packets.cpp
@@ -0,0 +1,369 @@
+/**
+ * @file packets.cpp
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief Functions for handling packets from the driver
+ * @details
+ * @version 0.19
+ * @date 2026-05-28
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+using namespace std;
+
+//
+// Global Variables
+//
+extern HANDLE g_DeviceHandle;
+extern HANDLE g_IsDriverLoadedSuccessfully;
+extern BOOLEAN g_IsVmxOffProcessStart;
+extern BOOLEAN g_BreakPrintingOutput;
+extern BOOLEAN g_OutputSourcesInitialized;
+extern LIST_ENTRY g_OutputSources;
+
+/**
+ * @brief Read kernel buffers using IRP Pending
+ *
+ * @param Device Driver handle
+ * @return VOID
+ */
+VOID
+ReadIrpBasedBuffer()
+{
+ BOOL Status;
+ ULONG ReturnedLength;
+ REGISTER_NOTIFY_BUFFER RegisterEvent;
+ DWORD ErrorNum;
+ HANDLE Handle;
+ UINT32 OperationCode;
+
+ RegisterEvent.hEvent = NULL;
+ RegisterEvent.Type = IRP_BASED;
+
+ //
+ // Create another handle to be used in for reading kernel messages,
+ // it is because I noticed that if I use a same handle for IRP Pending
+ // and other IOCTLs then if I complete that IOCTL then both of the current
+ // IOCTL and the Pending IRP are completed and return to user mode,
+ // even if it's odd but that what happens, so this way we can solve it
+ // if you know why this problem happens, then contact me !
+ //
+ Handle = CreateFileA(
+ "\\\\.\\HyperDbgDebuggerDevice",
+ GENERIC_READ | GENERIC_WRITE,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ NULL, /// lpSecurityAttirbutes
+ OPEN_EXISTING,
+ FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
+ NULL); /// lpTemplateFile
+
+ if (Handle == INVALID_HANDLE_VALUE)
+ {
+ ErrorNum = GetLastError();
+
+ if (ErrorNum == ERROR_ACCESS_DENIED)
+ {
+ ShowMessages("err, access denied\nare you sure you have administrator "
+ "rights?\n");
+ }
+ else if (ErrorNum == ERROR_GEN_FAILURE)
+ {
+ ShowMessages("err, a device attached to the system is not functioning\n"
+ "vmx feature might be disabled from BIOS or VBS/HVCI is active\n");
+ }
+ else
+ {
+ ShowMessages("err, CreateFile failed with (%x)\n", ErrorNum);
+ }
+
+ g_DeviceHandle = NULL;
+ Handle = NULL;
+
+ return;
+ }
+
+ //
+ // allocate buffer for transferring messages
+ //
+ char * OutputBuffer = (char *)malloc(UsermodeBufferSize);
+
+ try
+ {
+ while (TRUE)
+ {
+ if (!g_IsVmxOffProcessStart)
+ {
+ //
+ // Clear the buffer
+ //
+ ZeroMemory(OutputBuffer, UsermodeBufferSize);
+
+ Status = DeviceIoControl(
+ Handle, // Handle to device
+ IOCTL_REGISTER_EVENT, // IO Control Code (IOCTL)
+ &RegisterEvent, // Input Buffer to driver.
+ SIZEOF_REGISTER_EVENT * 2, // Length of input buffer in bytes. (x 2 is bcuz as the
+ // driver is x64 and has 64 bit values)
+ OutputBuffer, // Output Buffer from driver.
+ UsermodeBufferSize, // Length of output buffer in bytes.
+ &ReturnedLength, // Bytes placed in buffer.
+ NULL // synchronous call
+ );
+
+ if (!Status)
+ {
+ //
+ // Error occurred for second time, and we show the error message
+ //
+ // ShowMessages("ioctl failed with code 0x%x\n", GetLastError());
+
+ //
+ // if we reach here, the packet is probably failed, it might
+ // be because of using flush command
+ //
+ continue;
+ }
+
+ //
+ // Compute the received buffer's operation code
+ //
+ memcpy(&OperationCode, OutputBuffer, sizeof(UINT32));
+
+ // ShowMessages("Returned Length : 0x%x \n", ReturnedLength);
+ // ShowMessages("Operation Code : 0x%x \n", OperationCode);
+
+ //
+ // Check if the operation code contains mandatory debuggee bit
+ // If that's the case, we shouldn't wait (sleep) for new messages
+ //
+ if ((OperationCode & OPERATION_MANDATORY_DEBUGGEE_BIT) == 0)
+ {
+ Sleep(DefaultSpeedOfReadingKernelMessages); // we're not trying to eat all of the CPU ;)
+ }
+
+ switch (OperationCode)
+ {
+ case OPERATION_LOG_NON_IMMEDIATE_MESSAGE:
+
+ if (g_BreakPrintingOutput)
+ {
+ //
+ // means that the user asserts a CTRL+C or CTRL+BREAK Signal
+ // we shouldn't show or save anything in this case
+ //
+ continue;
+ }
+
+ ShowMessages("%s", OutputBuffer + sizeof(UINT32));
+
+ break;
+
+ case OPERATION_LOG_MESSAGE_MANDATORY:
+
+ ShowMessages("%s", OutputBuffer + sizeof(UINT32));
+
+ break;
+
+ case OPERATION_LOG_INFO_MESSAGE:
+
+ if (g_BreakPrintingOutput)
+ {
+ //
+ // means that the user asserts a CTRL+C or CTRL+BREAK Signal
+ // we shouldn't show or save anything in this case
+ //
+ continue;
+ }
+
+ ShowMessages("%s", OutputBuffer + sizeof(UINT32));
+
+ break;
+
+ case OPERATION_LOG_ERROR_MESSAGE:
+ if (g_BreakPrintingOutput)
+ {
+ //
+ // means that the user asserts a CTRL+C or CTRL+BREAK Signal
+ // we shouldn't show or save anything in this case
+ //
+ continue;
+ }
+
+ ShowMessages("%s", OutputBuffer + sizeof(UINT32));
+
+ break;
+
+ case OPERATION_LOG_WARNING_MESSAGE:
+
+ if (g_BreakPrintingOutput)
+ {
+ //
+ // means that the user asserts a CTRL+C or CTRL+BREAK Signal
+ // we shouldn't show or save anything in this case
+ //
+ continue;
+ }
+
+ ShowMessages("%s", OutputBuffer + sizeof(UINT32));
+
+ break;
+
+ case OPERATION_COMMAND_FROM_DEBUGGER_CLOSE_AND_UNLOAD_VMM:
+
+ KdCloseConnection();
+
+ break;
+
+ case OPERATION_DEBUGGEE_USER_INPUT:
+
+ KdHandleUserInputInDebuggee((DEBUGGEE_USER_INPUT_PACKET *)(OutputBuffer + sizeof(UINT32)));
+
+ break;
+
+ case OPERATION_DEBUGGEE_REGISTER_EVENT:
+
+ KdRegisterEventInDebuggee(
+ (PDEBUGGER_GENERAL_EVENT_DETAIL)(OutputBuffer + sizeof(UINT32)),
+ ReturnedLength);
+
+ break;
+
+ case OPERATION_DEBUGGEE_ADD_ACTION_TO_EVENT:
+
+ KdAddActionToEventInDebuggee(
+ (PDEBUGGER_GENERAL_ACTION)(OutputBuffer + sizeof(UINT32)),
+ ReturnedLength);
+
+ break;
+
+ case OPERATION_DEBUGGEE_CLEAR_EVENTS:
+
+ KdSendModifyEventInDebuggee(
+ (PDEBUGGER_MODIFY_EVENTS)(OutputBuffer + sizeof(UINT32)),
+ TRUE);
+
+ break;
+
+ case OPERATION_DEBUGGEE_CLEAR_EVENTS_WITHOUT_NOTIFYING_DEBUGGER:
+
+ KdSendModifyEventInDebuggee(
+ (PDEBUGGER_MODIFY_EVENTS)(OutputBuffer + sizeof(UINT32)),
+ FALSE);
+
+ break;
+
+ case OPERATION_HYPERVISOR_DRIVER_IS_SUCCESSFULLY_LOADED:
+
+ //
+ // Indicate that driver (Hypervisor) is loaded successfully
+ //
+ SetEvent(g_IsDriverLoadedSuccessfully);
+
+ break;
+
+ case OPERATION_HYPERVISOR_DRIVER_END_OF_IRPS:
+
+ //
+ // End of receiving messages (IRPs), nothing to do
+ //
+ break;
+
+ case OPERATION_COMMAND_FROM_DEBUGGER_RELOAD_SYMBOL:
+
+ //
+ // Pause debugger after getting the results
+ //
+ KdReloadSymbolsInDebuggee(TRUE,
+ ((PDEBUGGEE_SYMBOL_REQUEST_PACKET)(OutputBuffer + sizeof(UINT32)))->ProcessId);
+
+ break;
+
+ case OPERATION_NOTIFICATION_FROM_USER_DEBUGGER_PAUSE:
+
+ //
+ // handle pausing packet from user debugger
+ //
+ UdHandleUserDebuggerPausing(
+ (PDEBUGGEE_UD_PAUSED_PACKET)(OutputBuffer + sizeof(UINT32)));
+
+ break;
+
+ default:
+
+ //
+ // Check if there are available output sources
+ //
+ if (!g_OutputSourcesInitialized || !ForwardingCheckAndPerformEventForwarding(OperationCode,
+ OutputBuffer + sizeof(UINT32),
+ ReturnedLength - sizeof(UINT32) - 1))
+ {
+ if (g_BreakPrintingOutput)
+ {
+ //
+ // means that the user asserts a CTRL+C or CTRL+BREAK Signal
+ // we shouldn't show or save anything in this case
+ //
+ continue;
+ }
+
+ ShowMessages("%s", OutputBuffer + sizeof(UINT32));
+ }
+
+ break;
+ }
+ }
+ else
+ {
+ //
+ // the thread should not work anymore
+ //
+ free(OutputBuffer);
+
+ //
+ // closeHandle
+ //
+ if (!CloseHandle(Handle))
+ {
+ ShowMessages("err, closing handle 0x%x\n", GetLastError());
+ }
+
+ return;
+ }
+ }
+ }
+ catch (const std::exception &)
+ {
+ ShowMessages("err, exception occurred in creating handle or parsing buffer\n");
+ }
+
+ free(OutputBuffer);
+
+ //
+ // closeHandle
+ //
+ if (!CloseHandle(Handle))
+ {
+ ShowMessages("err, closing handle 0x%x\n", GetLastError());
+ };
+}
+
+/**
+ * @brief Create a thread for pending buffers
+ *
+ * @param Data
+ * @return DWORD Device Handle
+ */
+DWORD WINAPI
+IrpBasedBufferThread(void * data)
+{
+ //
+ // Do stuff. This will be the first function called on the new
+ // thread. When this function returns, the thread goes away. See
+ // MSDN for more details. Test Irp Based Notifications
+ //
+ ReadIrpBasedBuffer();
+
+ return 0;
+}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
index 3e514d9f..a8a7c8b1 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
@@ -16,7 +16,9 @@
//
extern HANDLE g_DeviceHandle;
extern BOOLEAN g_IsConnectedToHyperDbgLocally;
-extern BOOLEAN g_IsDebuggerModulesLoaded;
+extern BOOLEAN g_IsKdModuleLoaded;
+extern BOOLEAN g_IsVmmModuleLoaded;
+extern BOOLEAN g_IsHyperTraceModuleLoaded;
/**
* @brief help of the load command
@@ -32,6 +34,7 @@ CommandLoadHelp()
ShowMessages("\n");
ShowMessages("\t\te.g : load vmm\n");
+ ShowMessages("\t\te.g : load kd\n");
ShowMessages("\t\te.g : load trace\n");
}
@@ -64,22 +67,23 @@ CommandLoad(vector CommandTokens, string Command)
//
// Check for the module
//
- if (CompareLowerCaseStrings(CommandTokens.at(1), "vmm") || CompareLowerCaseStrings(CommandTokens.at(1), "vm"))
+ if (CompareLowerCaseStrings(CommandTokens.at(1), "vmm") ||
+ CompareLowerCaseStrings(CommandTokens.at(1), "vm"))
{
//
// Check to make sure that the driver is not already loaded
//
- if (g_DeviceHandle)
+ if (g_IsVmmModuleLoaded)
{
- ShowMessages("handle of the driver found, if you use 'load' before, please "
- "first unload it then call 'unload'\n");
+ ShowMessages("the vmm module is already running, if you use 'load' before, please "
+ "first unload it using the 'unload' command\n");
return;
}
//
// Load VMM Module
//
- ShowMessages("loading the vmm driver\n");
+ ShowMessages("loading the vmm module\n");
if (HyperDbgInstallKdDriver() == 1 || HyperDbgLoadVmmModule() == 1)
{
@@ -96,22 +100,23 @@ CommandLoad(vector CommandTokens, string Command)
//
SymbolLocalReload(GetCurrentProcessId());
}
- else if (CompareLowerCaseStrings(CommandTokens.at(1), "trace"))
+ else if (CompareLowerCaseStrings(CommandTokens.at(1), "trace") ||
+ CompareLowerCaseStrings(CommandTokens.at(1), "hypertrace"))
{
//
// Check to make sure that the driver is not already loaded
//
- if (g_DeviceHandle)
+ if (g_IsHyperTraceModuleLoaded)
{
- ShowMessages("handle of the driver found, if you use 'load' before, please "
- "first unload it then call 'unload'\n");
+ ShowMessages("the trace module is already running, if you use 'load' before, please "
+ "first unload it using the 'unload' command\n");
return;
}
//
// Load HyperTrace Module
//
- ShowMessages("loading the hypertrace driver\n");
+ ShowMessages("loading the trace module\n");
if (HyperDbgInstallKdDriver() == 1 || HyperDbgLoadHyperTraceModule() == 1)
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp
index 8de6372e..25b37947 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp
@@ -15,7 +15,7 @@
// Global Variables
//
extern BOOLEAN g_IsConnectedToHyperDbgLocally;
-extern BOOLEAN g_IsDebuggerModulesLoaded;
+extern BOOLEAN g_IsKdModuleLoaded;
extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
@@ -81,7 +81,7 @@ CommandUnload(vector CommandTokens, string Command)
return;
}
- if (g_IsDebuggerModulesLoaded)
+ if (g_IsKdModuleLoaded)
{
HyperDbgUnloadVmm();
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/script.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/script.cpp
index ebbad88c..68f7c5f7 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/script.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/script.cpp
@@ -222,7 +222,7 @@ HyperDbgScriptReadFileAndExecuteCommand(std::vector & PathAndArgs)
* @return INT
*/
INT
-ScriptReadFileAndExecuteCommandline(INT argc, CHAR * argv[])
+HyperDbgScriptReadFileAndExecuteCommandline(INT argc, CHAR * argv[])
{
vector Args;
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/break-control.cpp b/hyperdbg/libhyperdbg/code/debugger/core/break-control.cpp
index 8509d265..a703ac8c 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/break-control.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/break-control.cpp
@@ -15,7 +15,7 @@
// Global Variables
//
extern BOOLEAN g_BreakPrintingOutput;
-extern BOOLEAN g_IsDebuggerModulesLoaded;
+extern BOOLEAN g_IsKdModuleLoaded;
extern BOOLEAN g_AutoUnpause;
extern BOOLEAN g_IsConnectedToRemoteDebuggee;
extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
@@ -79,7 +79,7 @@ BreakController(DWORD CtrlType)
KdBreakControlCheckAndPauseDebugger(TRUE);
}
}
- else if (!g_IsDebuggerModulesLoaded && !g_IsConnectedToRemoteDebuggee)
+ else if (!g_IsKdModuleLoaded && !g_IsConnectedToRemoteDebuggee)
{
//
// vmm module is not loaded here
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index 912ee566..f07fb45e 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -570,7 +570,8 @@ ShowErrorMessage(UINT32 Error)
break;
case DEBUGGER_ERROR_HYPERTRACE_NOT_INITIALIZED:
- ShowMessages("err, the HyperTrace module is not initialized (%x)\n",
+ ShowMessages("err, the HyperTrace module is not loaded and initialized, "
+ "use the 'load trace' command to load the HyperTrace module (%x)\n",
Error);
break;
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
index 3009dac4..1c0e5ef8 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
@@ -34,7 +34,7 @@ extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
extern BOOLEAN g_IsDebuggerConntectedToNamedPipe;
extern BOOLEAN g_IsDebuggeeRunning;
-extern BOOLEAN g_IsDebuggerModulesLoaded;
+extern BOOLEAN g_IsKdModuleLoaded;
extern BOOLEAN g_SerialConnectionAlreadyClosed;
extern BOOLEAN g_IgnoreNewLoggingMessages;
extern BOOLEAN g_SharedEventStatus;
@@ -3028,7 +3028,7 @@ KdCloseConnection()
//
if (g_IsSerialConnectedToRemoteDebugger)
{
- if (g_IsConnectedToHyperDbgLocally && g_IsDebuggerModulesLoaded)
+ if (g_IsConnectedToHyperDbgLocally && g_IsKdModuleLoaded)
{
//
// The messages (and outputs) should no longer be passed
diff --git a/hyperdbg/libhyperdbg/code/debugger/script-engine/symbol.cpp b/hyperdbg/libhyperdbg/code/debugger/script-engine/symbol.cpp
index 34eacb9d..2afe6619 100644
--- a/hyperdbg/libhyperdbg/code/debugger/script-engine/symbol.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/script-engine/symbol.cpp
@@ -1010,8 +1010,9 @@ SymbolCheckAndAllocateModuleInformation(PRTL_PROCESS_MODULES * Modules)
//
// Enable Debug privilege to the current token
//
- if (!SetDebugPrivilege())
+ if (!WindowsSetDebugPrivilege())
{
+
ShowMessages("err, couldn't set debug privilege\n");
return FALSE;
}
diff --git a/hyperdbg/libhyperdbg/code/export/export.cpp b/hyperdbg/libhyperdbg/code/export/export.cpp
index cc9cab13..71cb064d 100644
--- a/hyperdbg/libhyperdbg/code/export/export.cpp
+++ b/hyperdbg/libhyperdbg/code/export/export.cpp
@@ -96,6 +96,39 @@ hyperdbg_u_stop_vmm_driver()
return HyperDbgStopVmmDriver();
}
+/**
+ * @brief Get the vendor of the current processor
+ *
+ * @return GENERIC_PROCESSOR_VENDOR the vendor of the processor
+ */
+GENERIC_PROCESSOR_VENDOR
+hyperdbg_u_get_processor_vendor()
+{
+ return HyperDbgGetProcessorVendor();
+}
+
+/**
+ * @brief Load the KD module
+ *
+ * @return INT Returns 0 if it was successful and 1 if it was failed
+ */
+INT
+hyperdbg_u_load_kd_module()
+{
+ return HyperDbgLoadKdModule();
+}
+
+/**
+ * @brief Load the HyperTrace module
+ *
+ * @return INT Returns 0 if it was successful and 1 if it was failed
+ */
+INT
+hyperdbg_u_load_hypertrace_module()
+{
+ return HyperDbgLoadHyperTraceModule();
+}
+
/**
* @brief Run a command
*
@@ -200,7 +233,7 @@ hyperdbg_u_unset_text_message_callback()
INT
hyperdbg_u_script_read_file_and_execute_commandline(INT argc, CHAR * argv[])
{
- return ScriptReadFileAndExecuteCommandline(argc, argv);
+ return HyperDbgScriptReadFileAndExecuteCommandline(argc, argv);
}
/**
diff --git a/hyperdbg/libhyperdbg/header/globals.h b/hyperdbg/libhyperdbg/header/globals.h
index 9140c4c8..022fa9db 100644
--- a/hyperdbg/libhyperdbg/header/globals.h
+++ b/hyperdbg/libhyperdbg/header/globals.h
@@ -11,6 +11,28 @@
*/
#pragma once
+//////////////////////////////////////////////////
+// Module Loading Status //
+//////////////////////////////////////////////////
+
+/**
+ * @brief shows whether the kernel debugger (KD) module is loaded or not
+ *
+ */
+BOOLEAN g_IsKdModuleLoaded = FALSE;
+
+/**
+ * @brief shows whether the VMM module is loaded or not
+ *
+ */
+BOOLEAN g_IsVmmModuleLoaded = FALSE;
+
+/**
+ * @brief shows whether the HyperTrace module is loaded or not
+ *
+ */
+BOOLEAN g_IsHyperTraceModuleLoaded = FALSE;
+
//////////////////////////////////////////////////
// Feature Indicators //
//////////////////////////////////////////////////
@@ -341,14 +363,6 @@ UINT64 * g_ScriptStackBuffer;
*/
BOOLEAN g_IsCommandListInitialized = FALSE;
-/**
- * @brief this variable is used to indicate that modules
- * are loaded so we make sure to later use a trace of
- * loading in 'unload' command (used in Debugger VMM)
- *
- */
-BOOLEAN g_IsDebuggerModulesLoaded = FALSE;
-
/**
* @brief State of active debugging thread
*
@@ -559,11 +573,6 @@ BOOLEAN g_IsInstrumentingInstructions = FALSE;
*/
UINT64 g_KernelBaseAddress;
-/**
- * @brief Is privileges already adjusted
- */
-BOOLEAN g_PrivilegesAlreadyAdjusted = FALSE;
-
//////////////////////////////////////////////////
// Settings //
//////////////////////////////////////////////////
diff --git a/hyperdbg/libhyperdbg/header/libhyperdbg.h b/hyperdbg/libhyperdbg/header/libhyperdbg.h
index be5c83e5..e6a881ed 100644
--- a/hyperdbg/libhyperdbg/header/libhyperdbg.h
+++ b/hyperdbg/libhyperdbg/header/libhyperdbg.h
@@ -30,21 +30,27 @@ HyperDbgInstallKdDriver();
INT
HyperDbgUninstallKdDriver();
+INT
+HyperDbgLoadKdModule();
+
INT
HyperDbgLoadVmmModule();
INT
HyperDbgLoadHyperTraceModule();
-GENERIC_PROCESSOR_VENDOR
-HyperDbgGetProcessorVendor();
-
INT
HyperDbgStopVmmDriver();
INT
HyperDbgInterpreter(CHAR * Command);
+INT
+HyperDbgScriptReadFileAndExecuteCommandline(INT argc, CHAR * argv[]);
+
+GENERIC_PROCESSOR_VENDOR
+HyperDbgGetProcessorVendor();
+
BOOLEAN
HyperDbgTestCommandParser(CHAR * Command,
UINT32 NumberOfTokens,
@@ -55,20 +61,5 @@ HyperDbgTestCommandParser(CHAR * Command,
VOID
HyperDbgTestCommandParserShowTokens(CHAR * Command);
-INT
-ScriptReadFileAndExecuteCommandline(INT argc, CHAR * argv[]);
-
VOID
HyperDbgShowSignature();
-
-VOID
-SetTextMessageCallback(PVOID Handler);
-
-PVOID
-SetTextMessageCallbackUsingSharedBuffer(PVOID Handler);
-
-VOID
-UnsetTextMessageCallback();
-
-BOOLEAN
-SetDebugPrivilege();
diff --git a/hyperdbg/libhyperdbg/header/messaging.h b/hyperdbg/libhyperdbg/header/messaging.h
new file mode 100644
index 00000000..db804888
--- /dev/null
+++ b/hyperdbg/libhyperdbg/header/messaging.h
@@ -0,0 +1,25 @@
+/**
+ * @file messaging.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief headers for messaging functions
+ * @details
+ * @version 0.19
+ * @date 2026-05-28
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+VOID
+SetTextMessageCallback(PVOID Handler);
+
+PVOID
+SetTextMessageCallbackUsingSharedBuffer(PVOID Handler);
+
+VOID
+UnsetTextMessageCallback();
diff --git a/hyperdbg/libhyperdbg/header/packets.h b/hyperdbg/libhyperdbg/header/packets.h
new file mode 100644
index 00000000..98015021
--- /dev/null
+++ b/hyperdbg/libhyperdbg/header/packets.h
@@ -0,0 +1,22 @@
+/**
+ * @file packets.h
+ * @author Sina Karvandi (sina@hyperdbg.org)
+ * @brief headers for kernel packet functions
+ * @details
+ * @version 0.19
+ * @date 2026-05-28
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+VOID
+ReadIrpBasedBuffer();
+
+DWORD WINAPI
+IrpBasedBufferThread(void * data);
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
index 70f6d526..cfeb8796 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
@@ -128,6 +128,7 @@
+
@@ -145,8 +146,10 @@
+
+
@@ -160,11 +163,14 @@
+
+
+
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
index 9443bd3c..02804e76 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
@@ -84,6 +84,12 @@
{cfacdcfe-8503-4a00-b7e2-75b0e906f75e}
+
+ {223523be-9b81-41cc-b708-872e292fd1f5}
+
+
+ {8e3c36aa-4263-4c94-9910-884ad9652921}
+
@@ -176,6 +182,15 @@
header\platform
+
+ header
+
+
+ header
+
+
+ header\platform\windows-only
+
@@ -610,6 +625,15 @@
code\platform
+
+ code\app
+
+
+ code\app
+
+
+ code\platform\windows-only
+
diff --git a/hyperdbg/libhyperdbg/pch.h b/hyperdbg/libhyperdbg/pch.h
index c8ade1aa..7e662946 100644
--- a/hyperdbg/libhyperdbg/pch.h
+++ b/hyperdbg/libhyperdbg/pch.h
@@ -144,6 +144,7 @@ typedef const wchar_t *LPCWCHAR, *PCWCHAR;
// Platform-specific intrinsics
//
#include "platform/user/header/platform-intrinsics.h"
+#include "platform/user/header/windows-only/windows-privilege.h"
//
// PCI IDs
@@ -165,6 +166,8 @@ typedef const wchar_t *LPCWCHAR, *PCWCHAR;
#include "header/install.h"
#include "header/list.h"
#include "header/tests.h"
+#include "header/messaging.h"
+#include "header/packets.h"
#include "header/transparency.h"
#include "header/communication.h"
#include "header/namedpipe.h"
From e31731cd375fe77c79a3c22776e2e589b9c55ff1 Mon Sep 17 00:00:00 2001
From: sina
Date: Fri, 29 May 2026 00:34:08 +0200
Subject: [PATCH 196/323] remove unused extern variables
---
hyperdbg/libhyperdbg/code/app/packets.cpp | 11 +++---
.../commands/debugging-commands/bp.cpp | 1 -
.../commands/debugging-commands/continue.cpp | 8 -----
.../commands/debugging-commands/load.cpp | 2 --
.../commands/extension-commands/hide.cpp | 9 -----
.../commands/extension-commands/ioapic.cpp | 5 ---
.../commands/extension-commands/rev.cpp | 6 ++--
.../debugger/commands/hwdbg-commands/hw.cpp | 3 +-
.../commands/meta-commands/attach.cpp | 1 -
.../debugger/commands/meta-commands/debug.cpp | 4 ---
.../commands/meta-commands/detach.cpp | 1 -
.../debugger/commands/meta-commands/start.cpp | 1 -
.../commands/meta-commands/switch.cpp | 6 ----
.../code/debugger/core/interpreter.cpp | 35 ++++++++-----------
.../code/debugger/kernel-level/kd.cpp | 9 ++---
.../kernel-level/kernel-listening.cpp | 6 ++--
.../script-engine/script-engine-wrapper.cpp | 1 -
.../code/debugger/script-engine/symbol.cpp | 2 --
hyperdbg/libhyperdbg/code/objects/objects.cpp | 5 ---
19 files changed, 28 insertions(+), 88 deletions(-)
diff --git a/hyperdbg/libhyperdbg/code/app/packets.cpp b/hyperdbg/libhyperdbg/code/app/packets.cpp
index 8aa8185b..374554fa 100644
--- a/hyperdbg/libhyperdbg/code/app/packets.cpp
+++ b/hyperdbg/libhyperdbg/code/app/packets.cpp
@@ -16,12 +16,11 @@ using namespace std;
//
// Global Variables
//
-extern HANDLE g_DeviceHandle;
-extern HANDLE g_IsDriverLoadedSuccessfully;
-extern BOOLEAN g_IsVmxOffProcessStart;
-extern BOOLEAN g_BreakPrintingOutput;
-extern BOOLEAN g_OutputSourcesInitialized;
-extern LIST_ENTRY g_OutputSources;
+extern HANDLE g_DeviceHandle;
+extern HANDLE g_IsDriverLoadedSuccessfully;
+extern BOOLEAN g_IsVmxOffProcessStart;
+extern BOOLEAN g_BreakPrintingOutput;
+extern BOOLEAN g_OutputSourcesInitialized;
/**
* @brief Read kernel buffers using IRP Pending
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/bp.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/bp.cpp
index b25ad65b..2b45bec0 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/bp.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/bp.cpp
@@ -15,7 +15,6 @@
// Global Variables
//
extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
-extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
extern ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState;
/**
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/continue.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/continue.cpp
index bb8b3065..af385224 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/continue.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/continue.cpp
@@ -11,14 +11,6 @@
*/
#include "pch.h"
-//
-// Global Variables
-//
-extern BOOLEAN g_BreakPrintingOutput;
-extern BOOLEAN g_IsConnectedToRemoteDebuggee;
-extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
-extern ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState;
-
/**
* @brief help of the continue command
*
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
index a8a7c8b1..061e8b83 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/load.cpp
@@ -14,9 +14,7 @@
//
// Global Variables
//
-extern HANDLE g_DeviceHandle;
extern BOOLEAN g_IsConnectedToHyperDbgLocally;
-extern BOOLEAN g_IsKdModuleLoaded;
extern BOOLEAN g_IsVmmModuleLoaded;
extern BOOLEAN g_IsHyperTraceModuleLoaded;
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/hide.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/hide.cpp
index 2e88983a..9eb9c875 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/hide.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/hide.cpp
@@ -14,15 +14,6 @@
//
// Global Variables
//
-extern UINT64 g_CpuidAverage;
-extern UINT64 g_CpuidStandardDeviation;
-extern UINT64 g_CpuidMedian;
-
-extern UINT64 g_RdtscAverage;
-extern UINT64 g_RdtscStandardDeviation;
-extern UINT64 g_RdtscMedian;
-
-extern BOOLEAN g_TransparentResultsMeasured;
extern ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState;
/**
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/ioapic.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/ioapic.cpp
index 41734745..ab1f18b4 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/ioapic.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/ioapic.cpp
@@ -11,11 +11,6 @@
*/
#include "pch.h"
-//
-// Global Variables
-//
-extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
-
/**
* @brief help of the !ioapic command
*
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/rev.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/rev.cpp
index 191d4f6e..53c16ce4 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/rev.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/rev.cpp
@@ -14,10 +14,8 @@
//
// Global Variables
//
-extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
-extern std::wstring g_StartCommandPath;
-extern std::wstring g_StartCommandPathAndArguments;
-extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
+extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
+extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
/**
* @brief help of the !rev command
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/hwdbg-commands/hw.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/hwdbg-commands/hw.cpp
index 7d06c0d9..036355e9 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/hwdbg-commands/hw.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/hwdbg-commands/hw.cpp
@@ -14,8 +14,7 @@
//
// Global Variables
//
-extern HWDBG_INSTANCE_INFORMATION g_HwdbgInstanceInfo;
-extern BOOLEAN g_HwdbgInstanceInfoIsValid;
+extern BOOLEAN g_HwdbgInstanceInfoIsValid;
/**
* @brief help of the !hw command
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/attach.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/attach.cpp
index 89521aad..24f2ede8 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/attach.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/attach.cpp
@@ -14,7 +14,6 @@
//
// Global Variables
//
-extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
/**
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/debug.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/debug.cpp
index ec6e332e..42e9fb4e 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/debug.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/debug.cpp
@@ -14,11 +14,7 @@
//
// Global Variables
//
-extern HANDLE g_SerialListeningThreadHandle;
-extern HANDLE g_SerialRemoteComPortHandle;
extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
-extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
-extern BOOLEAN g_IsDebuggeeRunning;
/**
* @brief help of the .debug command
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/detach.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/detach.cpp
index 1c5eb62b..fae37f2f 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/detach.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/detach.cpp
@@ -15,7 +15,6 @@
// Global Variables
//
extern ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState;
-extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
/**
* @brief help of the .detach command
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp
index 0cb94ec0..6141f4a0 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/start.cpp
@@ -17,7 +17,6 @@
extern std::wstring g_StartCommandPath;
extern std::wstring g_StartCommandPathAndArguments;
extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
-extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
/**
* @brief help of the .start command
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/switch.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/switch.cpp
index 9c3f1f76..65bf33ea 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/switch.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/switch.cpp
@@ -11,12 +11,6 @@
*/
#include "pch.h"
-//
-// Global Variables
-//
-extern ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState;
-extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
-
/**
* @brief help of the .switch command
*
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
index a5a002ed..c5df6a64 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
@@ -16,26 +16,21 @@
//
extern ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState;
extern CommandType g_CommandsList;
-
-extern BOOLEAN g_ShouldPreviousCommandBeContinued;
-extern BOOLEAN g_IsCommandListInitialized;
-extern BOOLEAN g_LogOpened;
-extern BOOLEAN g_ExecutingScript;
-extern BOOLEAN g_IsConnectedToHyperDbgLocally;
-extern BOOLEAN g_IsConnectedToRemoteDebuggee;
-extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
-extern BOOLEAN g_IsDebuggeeRunning;
-extern BOOLEAN g_BreakPrintingOutput;
-extern BOOLEAN g_IsInterpreterOnString;
-extern BOOLEAN g_IsInterpreterPreviousCharacterABackSlash;
-extern BOOLEAN g_RtmSupport;
-
-extern UINT32 g_VirtualAddressWidth;
-extern UINT32 g_InterpreterCountOfOpenCurlyBrackets;
-extern ULONG g_CurrentRemoteCore;
-
-extern string g_ServerPort;
-extern string g_ServerIp;
+extern BOOLEAN g_ShouldPreviousCommandBeContinued;
+extern BOOLEAN g_IsCommandListInitialized;
+extern BOOLEAN g_LogOpened;
+extern BOOLEAN g_ExecutingScript;
+extern BOOLEAN g_IsConnectedToRemoteDebuggee;
+extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
+extern BOOLEAN g_BreakPrintingOutput;
+extern BOOLEAN g_IsInterpreterOnString;
+extern BOOLEAN g_IsInterpreterPreviousCharacterABackSlash;
+extern BOOLEAN g_RtmSupport;
+extern UINT32 g_VirtualAddressWidth;
+extern UINT32 g_InterpreterCountOfOpenCurlyBrackets;
+extern ULONG g_CurrentRemoteCore;
+extern string g_ServerPort;
+extern string g_ServerIp;
class CommandParser
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
index 1c0e5ef8..e4fd1aa0 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
@@ -14,12 +14,9 @@
//
// Global Variables
//
-extern PMODULE_SYMBOL_DETAIL g_SymbolTable;
-extern UINT32 g_SymbolTableSize;
-extern UINT32 g_SymbolTableCurrentIndex;
-extern HANDLE g_SerialListeningThreadHandle;
-extern HANDLE g_SerialRemoteComPortHandle;
-extern HANDLE g_DebuggeeStopCommandEventHandle;
+extern HANDLE g_SerialListeningThreadHandle;
+extern HANDLE g_SerialRemoteComPortHandle;
+extern HANDLE g_DebuggeeStopCommandEventHandle;
extern DEBUGGER_SYNCRONIZATION_EVENTS_STATE
g_KernelSyncronizationObjectsHandleTable[DEBUGGER_MAXIMUM_SYNCRONIZATION_KERNEL_DEBUGGER_OBJECTS];
extern BYTE g_CurrentRunningInstruction[MAXIMUM_INSTR_SIZE];
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
index 5293dd19..b71fa54a 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
@@ -15,11 +15,7 @@
//
// Global Variables
//
-extern DEBUGGER_SYNCRONIZATION_EVENTS_STATE
- g_KernelSyncronizationObjectsHandleTable[DEBUGGER_MAXIMUM_SYNCRONIZATION_KERNEL_DEBUGGER_OBJECTS];
extern BYTE g_CurrentRunningInstruction[MAXIMUM_INSTR_SIZE];
-extern OVERLAPPED g_OverlappedIoStructureForReadDebugger;
-extern OVERLAPPED g_OverlappedIoStructureForWriteDebugger;
extern HANDLE g_SerialRemoteComPortHandle;
extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
extern BOOLEAN g_IsDebuggeeRunning;
@@ -33,6 +29,8 @@ extern DEBUGGER_EVENT_AND_ACTION_RESULT g_DebuggeeResultOfAddingActionsToEvent;
extern UINT64 g_ResultOfEvaluatedExpression;
extern UINT32 g_ErrorStateOfResultOfEvaluatedExpression;
extern UINT64 g_KernelBaseAddress;
+extern DEBUGGER_SYNCRONIZATION_EVENTS_STATE
+ g_KernelSyncronizationObjectsHandleTable[DEBUGGER_MAXIMUM_SYNCRONIZATION_KERNEL_DEBUGGER_OBJECTS];
/**
* @brief Check if the remote debuggee needs to pause the system
diff --git a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine-wrapper.cpp b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine-wrapper.cpp
index aa33bab9..00caccde 100644
--- a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine-wrapper.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine-wrapper.cpp
@@ -23,7 +23,6 @@ extern UINT64 * g_ScriptStackBuffer;
extern UINT64 g_CurrentExprEvalResult;
extern BOOLEAN g_CurrentExprEvalResultHasError;
extern UINT64 * g_HwdbgPinsStatus;
-extern BOOLEAN g_HwdbgInstanceInfoIsValid;
//
// Temporary structures used only for testing
diff --git a/hyperdbg/libhyperdbg/code/debugger/script-engine/symbol.cpp b/hyperdbg/libhyperdbg/code/debugger/script-engine/symbol.cpp
index 2afe6619..8b07c2b0 100644
--- a/hyperdbg/libhyperdbg/code/debugger/script-engine/symbol.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/script-engine/symbol.cpp
@@ -19,7 +19,6 @@ extern PMODULE_SYMBOL_DETAIL g_SymbolTable;
extern UINT32 g_SymbolTableSize;
extern UINT32 g_SymbolTableCurrentIndex;
extern BOOLEAN g_IsExecutingSymbolLoadingRoutines;
-extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
extern BOOLEAN g_AddressConversion;
extern std::map g_DisassemblerSymbolMap;
@@ -1012,7 +1011,6 @@ SymbolCheckAndAllocateModuleInformation(PRTL_PROCESS_MODULES * Modules)
//
if (!WindowsSetDebugPrivilege())
{
-
ShowMessages("err, couldn't set debug privilege\n");
return FALSE;
}
diff --git a/hyperdbg/libhyperdbg/code/objects/objects.cpp b/hyperdbg/libhyperdbg/code/objects/objects.cpp
index f63707ac..b056d6b7 100644
--- a/hyperdbg/libhyperdbg/code/objects/objects.cpp
+++ b/hyperdbg/libhyperdbg/code/objects/objects.cpp
@@ -11,11 +11,6 @@
*/
#include "pch.h"
-//
-// Global Variables
-//
-extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
-
/**
* @brief Get details about processes or threads
* @param IsProcess
From 6eca8c6c85dff8c52dff57dbd1fab217060e38fa Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 30 May 2026 15:54:20 +0200
Subject: [PATCH 197/323] refactor code convention in hyperlog
---
hyperdbg/hyperlog/code/Logging.c | 234 +++++++++---------
hyperdbg/hyperlog/code/UnloadDll.c | 2 +-
hyperdbg/hyperlog/header/Logging.h | 10 +-
hyperdbg/hyperlog/header/UnloadDll.h | 2 +-
hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 6 +-
hyperdbg/libhyperdbg/header/kd.h | 12 +-
hyperdbg/libhyperdbg/header/libhyperdbg.h | 3 -
7 files changed, 133 insertions(+), 136 deletions(-)
diff --git a/hyperdbg/hyperlog/code/Logging.c b/hyperdbg/hyperlog/code/Logging.c
index 27e80cc4..a699335d 100644
--- a/hyperdbg/hyperlog/code/Logging.c
+++ b/hyperdbg/hyperlog/code/Logging.c
@@ -105,36 +105,36 @@ LogInitialize(MESSAGE_TRACING_CALLBACKS * MsgTracingCallbacks)
// Initialize buffers for trace message and data messages
//(we have two buffers one for vmx root and one for vmx non-root)
//
- MessageBufferInformation = PlatformMemAllocateZeroedNonPagedPool(sizeof(LOG_BUFFER_INFORMATION) * 2);
+ g_MessageBufferInformation = PlatformMemAllocateZeroedNonPagedPool(sizeof(LOG_BUFFER_INFORMATION) * 2);
- if (!MessageBufferInformation)
+ if (!g_MessageBufferInformation)
{
return FALSE; // STATUS_INSUFFICIENT_RESOURCES
}
//
- // Allocate VmxTempMessage and VmxLogMessage
+ // Allocate g_VmxTempMessage and g_VmxLogMessage
//
- VmxTempMessage = NULL;
- VmxTempMessage = PlatformMemAllocateZeroedNonPagedPool(PacketChunkSize * ProcessorsCount);
+ g_VmxTempMessage = NULL;
+ g_VmxTempMessage = PlatformMemAllocateZeroedNonPagedPool(PacketChunkSize * ProcessorsCount);
- if (!VmxTempMessage)
+ if (!g_VmxTempMessage)
{
- PlatformMemFreePool(MessageBufferInformation);
- MessageBufferInformation = NULL;
+ PlatformMemFreePool(g_MessageBufferInformation);
+ g_MessageBufferInformation = NULL;
return FALSE; // STATUS_INSUFFICIENT_RESOURCES
}
- VmxLogMessage = NULL;
- VmxLogMessage = PlatformMemAllocateZeroedNonPagedPool(PacketChunkSize * ProcessorsCount);
+ g_VmxLogMessage = NULL;
+ g_VmxLogMessage = PlatformMemAllocateZeroedNonPagedPool(PacketChunkSize * ProcessorsCount);
- if (!VmxLogMessage)
+ if (!g_VmxLogMessage)
{
- PlatformMemFreePool(MessageBufferInformation);
- MessageBufferInformation = NULL;
+ PlatformMemFreePool(g_MessageBufferInformation);
+ g_MessageBufferInformation = NULL;
- PlatformMemFreePool(VmxTempMessage);
- VmxTempMessage = NULL;
+ PlatformMemFreePool(g_VmxTempMessage);
+ g_VmxTempMessage = NULL;
return FALSE; // STATUS_INSUFFICIENT_RESOURCES
}
@@ -142,12 +142,12 @@ LogInitialize(MESSAGE_TRACING_CALLBACKS * MsgTracingCallbacks)
//
// Initialize the lock for Vmx-root mode (HIGH_IRQL Spinlock)
//
- VmxRootLoggingLock = 0;
+ g_VmxRootLoggingLock = 0;
//
// Allocate buffer for messages and initialize the core buffer information
//
- for (int i = 0; i < 2; i++)
+ for (UINT32 i = 0; i < 2; i++)
{
//
// initialize the lock
@@ -155,17 +155,17 @@ LogInitialize(MESSAGE_TRACING_CALLBACKS * MsgTracingCallbacks)
// for both but the second buffer spinlock is useless
// as we use our custom spinlock
//
- PlatformSpinlockInitialize(&MessageBufferInformation[i].BufferLock);
- PlatformSpinlockInitialize(&MessageBufferInformation[i].BufferLockForNonImmMessage);
+ PlatformSpinlockInitialize(&g_MessageBufferInformation[i].BufferLock);
+ PlatformSpinlockInitialize(&g_MessageBufferInformation[i].BufferLockForNonImmMessage);
//
// allocate the buffer for regular buffers
//
- MessageBufferInformation[i].BufferStartAddress = (UINT64)PlatformMemAllocateNonPagedPool(LogBufferSize);
- MessageBufferInformation[i].BufferForMultipleNonImmediateMessage = (UINT64)PlatformMemAllocateNonPagedPool(PacketChunkSize);
+ g_MessageBufferInformation[i].BufferStartAddress = (UINT64)PlatformMemAllocateNonPagedPool(LogBufferSize);
+ g_MessageBufferInformation[i].BufferForMultipleNonImmediateMessage = (UINT64)PlatformMemAllocateNonPagedPool(PacketChunkSize);
- if (!MessageBufferInformation[i].BufferStartAddress ||
- !MessageBufferInformation[i].BufferForMultipleNonImmediateMessage)
+ if (!g_MessageBufferInformation[i].BufferStartAddress ||
+ !g_MessageBufferInformation[i].BufferForMultipleNonImmediateMessage)
{
return FALSE; // STATUS_INSUFFICIENT_RESOURCES
}
@@ -173,9 +173,9 @@ LogInitialize(MESSAGE_TRACING_CALLBACKS * MsgTracingCallbacks)
//
// allocate the buffer for priority buffers
//
- MessageBufferInformation[i].BufferStartAddressPriority = (UINT64)PlatformMemAllocateNonPagedPool(LogBufferSizePriority);
+ g_MessageBufferInformation[i].BufferStartAddressPriority = (UINT64)PlatformMemAllocateNonPagedPool(LogBufferSizePriority);
- if (!MessageBufferInformation[i].BufferStartAddressPriority)
+ if (!g_MessageBufferInformation[i].BufferStartAddressPriority)
{
return FALSE; // STATUS_INSUFFICIENT_RESOURCES
}
@@ -183,15 +183,15 @@ LogInitialize(MESSAGE_TRACING_CALLBACKS * MsgTracingCallbacks)
//
// Zeroing the buffer
//
- PlatformZeroMemory((PVOID)MessageBufferInformation[i].BufferStartAddress, LogBufferSize);
- PlatformZeroMemory((PVOID)MessageBufferInformation[i].BufferForMultipleNonImmediateMessage, PacketChunkSize);
- PlatformZeroMemory((PVOID)MessageBufferInformation[i].BufferStartAddressPriority, LogBufferSizePriority);
+ PlatformZeroMemory((PVOID)g_MessageBufferInformation[i].BufferStartAddress, LogBufferSize);
+ PlatformZeroMemory((PVOID)g_MessageBufferInformation[i].BufferForMultipleNonImmediateMessage, PacketChunkSize);
+ PlatformZeroMemory((PVOID)g_MessageBufferInformation[i].BufferStartAddressPriority, LogBufferSizePriority);
//
// Set the end address
//
- MessageBufferInformation[i].BufferEndAddress = (UINT64)MessageBufferInformation[i].BufferStartAddress + LogBufferSize;
- MessageBufferInformation[i].BufferEndAddressPriority = (UINT64)MessageBufferInformation[i].BufferStartAddressPriority + LogBufferSizePriority;
+ g_MessageBufferInformation[i].BufferEndAddress = (UINT64)g_MessageBufferInformation[i].BufferStartAddress + LogBufferSize;
+ g_MessageBufferInformation[i].BufferEndAddressPriority = (UINT64)g_MessageBufferInformation[i].BufferStartAddressPriority + LogBufferSizePriority;
}
//
@@ -213,12 +213,12 @@ LogUnInitialize()
//
// de-allocate buffer for messages and initialize the core buffer information (for vmx-root core)
//
- for (int i = 0; i < 2; i++)
+ for (UINT32 i = 0; i < 2; i++)
{
//
// Check if the buffer is allocated or not
//
- if (MessageBufferInformation == NULL64_ZERO)
+ if (g_MessageBufferInformation == NULL64_ZERO)
{
continue; // No need to free the buffers
}
@@ -226,29 +226,29 @@ LogUnInitialize()
//
// Free each buffers
//
- if (MessageBufferInformation[i].BufferStartAddress != NULL64_ZERO)
+ if (g_MessageBufferInformation[i].BufferStartAddress != NULL64_ZERO)
{
- PlatformMemFreePool((PVOID)MessageBufferInformation[i].BufferStartAddress);
+ PlatformMemFreePool((PVOID)g_MessageBufferInformation[i].BufferStartAddress);
}
- if (MessageBufferInformation[i].BufferStartAddressPriority != NULL64_ZERO)
+ if (g_MessageBufferInformation[i].BufferStartAddressPriority != NULL64_ZERO)
{
- PlatformMemFreePool((PVOID)MessageBufferInformation[i].BufferStartAddressPriority);
+ PlatformMemFreePool((PVOID)g_MessageBufferInformation[i].BufferStartAddressPriority);
}
- if (MessageBufferInformation[i].BufferForMultipleNonImmediateMessage != NULL64_ZERO)
+ if (g_MessageBufferInformation[i].BufferForMultipleNonImmediateMessage != NULL64_ZERO)
{
- PlatformMemFreePool((PVOID)MessageBufferInformation[i].BufferForMultipleNonImmediateMessage);
+ PlatformMemFreePool((PVOID)g_MessageBufferInformation[i].BufferForMultipleNonImmediateMessage);
}
}
//
// de-allocate buffers for trace message and data messages if they are allocated
//
- if (MessageBufferInformation != NULL64_ZERO)
+ if (g_MessageBufferInformation != NULL64_ZERO)
{
- PlatformMemFreePool((PVOID)MessageBufferInformation);
- MessageBufferInformation = NULL;
+ PlatformMemFreePool((PVOID)g_MessageBufferInformation);
+ g_MessageBufferInformation = NULL;
}
}
@@ -291,9 +291,9 @@ LogCallbackCheckIfBufferIsFull(BOOLEAN Priority)
//
if (Priority)
{
- CurrentIndexToWritePriority = MessageBufferInformation[Index].CurrentIndexToWritePriority;
+ CurrentIndexToWritePriority = g_MessageBufferInformation[Index].CurrentIndexToWritePriority;
- if (MessageBufferInformation[Index].CurrentIndexToWritePriority > MaximumPacketsCapacityPriority - 1)
+ if (g_MessageBufferInformation[Index].CurrentIndexToWritePriority > MaximumPacketsCapacityPriority - 1)
{
//
// start from the beginning
@@ -303,9 +303,9 @@ LogCallbackCheckIfBufferIsFull(BOOLEAN Priority)
}
else
{
- CurrentIndexToWrite = MessageBufferInformation[Index].CurrentIndexToWrite;
+ CurrentIndexToWrite = g_MessageBufferInformation[Index].CurrentIndexToWrite;
- if (MessageBufferInformation[Index].CurrentIndexToWrite > MaximumPacketsCapacity - 1)
+ if (g_MessageBufferInformation[Index].CurrentIndexToWrite > MaximumPacketsCapacity - 1)
{
//
// start from the beginning
@@ -321,11 +321,11 @@ LogCallbackCheckIfBufferIsFull(BOOLEAN Priority)
if (Priority)
{
- Header = (BUFFER_HEADER *)((UINT64)MessageBufferInformation[Index].BufferStartAddressPriority + (CurrentIndexToWritePriority * (PacketChunkSize + sizeof(BUFFER_HEADER))));
+ Header = (BUFFER_HEADER *)((UINT64)g_MessageBufferInformation[Index].BufferStartAddressPriority + (CurrentIndexToWritePriority * (PacketChunkSize + sizeof(BUFFER_HEADER))));
}
else
{
- Header = (BUFFER_HEADER *)((UINT64)MessageBufferInformation[Index].BufferStartAddress + (CurrentIndexToWrite * (PacketChunkSize + sizeof(BUFFER_HEADER))));
+ Header = (BUFFER_HEADER *)((UINT64)g_MessageBufferInformation[Index].BufferStartAddress + (CurrentIndexToWrite * (PacketChunkSize + sizeof(BUFFER_HEADER))));
}
//
@@ -419,7 +419,7 @@ LogCallbackSendBuffer(UINT32 OperationCode, PVOID Buffer, UINT32 BufferLength, B
// Set the index
//
Index = 1;
- SpinlockLock(&VmxRootLoggingLock);
+ SpinlockLock(&g_VmxRootLoggingLock);
}
else
{
@@ -431,7 +431,7 @@ LogCallbackSendBuffer(UINT32 OperationCode, PVOID Buffer, UINT32 BufferLength, B
//
// Acquire the lock
//
- PlatformSpinlockAcquire(&MessageBufferInformation[Index].BufferLock, &OldIRQL);
+ PlatformSpinlockAcquire(&g_MessageBufferInformation[Index].BufferLock, &OldIRQL);
}
//
@@ -439,22 +439,22 @@ LogCallbackSendBuffer(UINT32 OperationCode, PVOID Buffer, UINT32 BufferLength, B
//
if (Priority)
{
- if (MessageBufferInformation[Index].CurrentIndexToWritePriority > MaximumPacketsCapacityPriority - 1)
+ if (g_MessageBufferInformation[Index].CurrentIndexToWritePriority > MaximumPacketsCapacityPriority - 1)
{
//
// start from the beginning
//
- MessageBufferInformation[Index].CurrentIndexToWritePriority = 0;
+ g_MessageBufferInformation[Index].CurrentIndexToWritePriority = 0;
}
}
else
{
- if (MessageBufferInformation[Index].CurrentIndexToWrite > MaximumPacketsCapacity - 1)
+ if (g_MessageBufferInformation[Index].CurrentIndexToWrite > MaximumPacketsCapacity - 1)
{
//
// start from the beginning
//
- MessageBufferInformation[Index].CurrentIndexToWrite = 0;
+ g_MessageBufferInformation[Index].CurrentIndexToWrite = 0;
}
}
@@ -465,11 +465,11 @@ LogCallbackSendBuffer(UINT32 OperationCode, PVOID Buffer, UINT32 BufferLength, B
if (Priority)
{
- Header = (BUFFER_HEADER *)((UINT64)MessageBufferInformation[Index].BufferStartAddressPriority + (MessageBufferInformation[Index].CurrentIndexToWritePriority * (PacketChunkSize + sizeof(BUFFER_HEADER))));
+ Header = (BUFFER_HEADER *)((UINT64)g_MessageBufferInformation[Index].BufferStartAddressPriority + (g_MessageBufferInformation[Index].CurrentIndexToWritePriority * (PacketChunkSize + sizeof(BUFFER_HEADER))));
}
else
{
- Header = (BUFFER_HEADER *)((UINT64)MessageBufferInformation[Index].BufferStartAddress + (MessageBufferInformation[Index].CurrentIndexToWrite * (PacketChunkSize + sizeof(BUFFER_HEADER))));
+ Header = (BUFFER_HEADER *)((UINT64)g_MessageBufferInformation[Index].BufferStartAddress + (g_MessageBufferInformation[Index].CurrentIndexToWrite * (PacketChunkSize + sizeof(BUFFER_HEADER))));
}
//
@@ -490,11 +490,11 @@ LogCallbackSendBuffer(UINT32 OperationCode, PVOID Buffer, UINT32 BufferLength, B
if (Priority)
{
- SavingBuffer = (PVOID)((UINT64)MessageBufferInformation[Index].BufferStartAddressPriority + (MessageBufferInformation[Index].CurrentIndexToWritePriority * (PacketChunkSize + sizeof(BUFFER_HEADER))) + sizeof(BUFFER_HEADER));
+ SavingBuffer = (PVOID)((UINT64)g_MessageBufferInformation[Index].BufferStartAddressPriority + (g_MessageBufferInformation[Index].CurrentIndexToWritePriority * (PacketChunkSize + sizeof(BUFFER_HEADER))) + sizeof(BUFFER_HEADER));
}
else
{
- SavingBuffer = (PVOID)((UINT64)MessageBufferInformation[Index].BufferStartAddress + (MessageBufferInformation[Index].CurrentIndexToWrite * (PacketChunkSize + sizeof(BUFFER_HEADER))) + sizeof(BUFFER_HEADER));
+ SavingBuffer = (PVOID)((UINT64)g_MessageBufferInformation[Index].BufferStartAddress + (g_MessageBufferInformation[Index].CurrentIndexToWrite * (PacketChunkSize + sizeof(BUFFER_HEADER))) + sizeof(BUFFER_HEADER));
}
//
@@ -507,11 +507,11 @@ LogCallbackSendBuffer(UINT32 OperationCode, PVOID Buffer, UINT32 BufferLength, B
//
if (Priority)
{
- MessageBufferInformation[Index].CurrentIndexToWritePriority = MessageBufferInformation[Index].CurrentIndexToWritePriority + 1;
+ g_MessageBufferInformation[Index].CurrentIndexToWritePriority = g_MessageBufferInformation[Index].CurrentIndexToWritePriority + 1;
}
else
{
- MessageBufferInformation[Index].CurrentIndexToWrite = MessageBufferInformation[Index].CurrentIndexToWrite + 1;
+ g_MessageBufferInformation[Index].CurrentIndexToWrite = g_MessageBufferInformation[Index].CurrentIndexToWrite + 1;
}
//
@@ -545,14 +545,14 @@ LogCallbackSendBuffer(UINT32 OperationCode, PVOID Buffer, UINT32 BufferLength, B
//
if (IsVmxRoot)
{
- SpinlockUnlock(&VmxRootLoggingLock);
+ SpinlockUnlock(&g_VmxRootLoggingLock);
}
else
{
//
// Release the lock
//
- PlatformSpinlockRelease(&MessageBufferInformation[Index].BufferLock, OldIRQL);
+ PlatformSpinlockRelease(&g_MessageBufferInformation[Index].BufferLock, OldIRQL);
}
return TRUE;
@@ -586,7 +586,7 @@ LogMarkAllAsRead(BOOLEAN IsVmxRoot)
//
// Acquire the lock
//
- SpinlockLock(&VmxRootLoggingLock);
+ SpinlockLock(&g_VmxRootLoggingLock);
}
else
{
@@ -598,19 +598,19 @@ LogMarkAllAsRead(BOOLEAN IsVmxRoot)
//
// Acquire the lock
//
- PlatformSpinlockAcquire(&MessageBufferInformation[Index].BufferLock, &OldIRQL);
+ PlatformSpinlockAcquire(&g_MessageBufferInformation[Index].BufferLock, &OldIRQL);
}
//
// We have iterate through the all indexes
//
- for (size_t i = 0; i < MaximumPacketsCapacity; i++)
+ for (SIZE_T i = 0; i < MaximumPacketsCapacity; i++)
{
//
// Compute the current buffer to read
//
- BUFFER_HEADER * Header = (BUFFER_HEADER *)((UINT64)MessageBufferInformation[Index].BufferStartAddress +
- (MessageBufferInformation[Index].CurrentIndexToSend *
+ BUFFER_HEADER * Header = (BUFFER_HEADER *)((UINT64)g_MessageBufferInformation[Index].BufferStartAddress +
+ (g_MessageBufferInformation[Index].CurrentIndexToSend *
(PacketChunkSize + sizeof(BUFFER_HEADER))));
if (!Header->Valid)
@@ -625,14 +625,14 @@ LogMarkAllAsRead(BOOLEAN IsVmxRoot)
//
if (IsVmxRoot)
{
- SpinlockUnlock(&VmxRootLoggingLock);
+ SpinlockUnlock(&g_VmxRootLoggingLock);
}
else
{
//
// Release the lock
//
- PlatformSpinlockRelease(&MessageBufferInformation[Index].BufferLock, OldIRQL);
+ PlatformSpinlockRelease(&g_MessageBufferInformation[Index].BufferLock, OldIRQL);
}
return ResultsOfBuffersSetToRead;
@@ -646,7 +646,7 @@ LogMarkAllAsRead(BOOLEAN IsVmxRoot)
//
// Second, save the buffer contents
//
- PVOID SendingBuffer = (PVOID)((UINT64)MessageBufferInformation[Index].BufferStartAddress + (MessageBufferInformation[Index].CurrentIndexToSend * (PacketChunkSize + sizeof(BUFFER_HEADER))) + sizeof(BUFFER_HEADER));
+ PVOID SendingBuffer = (PVOID)((UINT64)g_MessageBufferInformation[Index].BufferStartAddress + (g_MessageBufferInformation[Index].CurrentIndexToSend * (PacketChunkSize + sizeof(BUFFER_HEADER))) + sizeof(BUFFER_HEADER));
//
// Finally, set the current index to invalid as we sent it
@@ -663,16 +663,16 @@ LogMarkAllAsRead(BOOLEAN IsVmxRoot)
//
// Check to see whether we passed the index or not
//
- if (MessageBufferInformation[Index].CurrentIndexToSend > MaximumPacketsCapacity - 2)
+ if (g_MessageBufferInformation[Index].CurrentIndexToSend > MaximumPacketsCapacity - 2)
{
- MessageBufferInformation[Index].CurrentIndexToSend = 0;
+ g_MessageBufferInformation[Index].CurrentIndexToSend = 0;
}
else
{
//
// Increment the next index to read
//
- MessageBufferInformation[Index].CurrentIndexToSend = MessageBufferInformation[Index].CurrentIndexToSend + 1;
+ g_MessageBufferInformation[Index].CurrentIndexToSend = g_MessageBufferInformation[Index].CurrentIndexToSend + 1;
}
}
@@ -682,14 +682,14 @@ LogMarkAllAsRead(BOOLEAN IsVmxRoot)
//
if (IsVmxRoot)
{
- SpinlockUnlock(&VmxRootLoggingLock);
+ SpinlockUnlock(&g_VmxRootLoggingLock);
}
else
{
//
// Release the lock
//
- PlatformSpinlockRelease(&MessageBufferInformation[Index].BufferLock, OldIRQL);
+ PlatformSpinlockRelease(&g_MessageBufferInformation[Index].BufferLock, OldIRQL);
}
return ResultsOfBuffersSetToRead;
@@ -725,7 +725,7 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
//
// Acquire the lock
//
- SpinlockLock(&VmxRootLoggingLock);
+ SpinlockLock(&g_VmxRootLoggingLock);
}
else
{
@@ -737,7 +737,7 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
//
// Acquire the lock
//
- PlatformSpinlockAcquire(&MessageBufferInformation[Index].BufferLock, &OldIRQL);
+ PlatformSpinlockAcquire(&g_MessageBufferInformation[Index].BufferLock, &OldIRQL);
}
//
@@ -748,14 +748,14 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
//
// Check for priority message
//
- Header = (BUFFER_HEADER *)((UINT64)MessageBufferInformation[Index].BufferStartAddressPriority + (MessageBufferInformation[Index].CurrentIndexToSendPriority * (PacketChunkSize + sizeof(BUFFER_HEADER))));
+ Header = (BUFFER_HEADER *)((UINT64)g_MessageBufferInformation[Index].BufferStartAddressPriority + (g_MessageBufferInformation[Index].CurrentIndexToSendPriority * (PacketChunkSize + sizeof(BUFFER_HEADER))));
if (!Header->Valid)
{
//
// Check for regular message
//
- Header = (BUFFER_HEADER *)((UINT64)MessageBufferInformation[Index].BufferStartAddress + (MessageBufferInformation[Index].CurrentIndexToSend * (PacketChunkSize + sizeof(BUFFER_HEADER))));
+ Header = (BUFFER_HEADER *)((UINT64)g_MessageBufferInformation[Index].BufferStartAddress + (g_MessageBufferInformation[Index].CurrentIndexToSend * (PacketChunkSize + sizeof(BUFFER_HEADER))));
if (!Header->Valid)
{
@@ -769,14 +769,14 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
//
if (IsVmxRoot)
{
- SpinlockUnlock(&VmxRootLoggingLock);
+ SpinlockUnlock(&g_VmxRootLoggingLock);
}
else
{
//
// Release the lock
//
- PlatformSpinlockRelease(&MessageBufferInformation[Index].BufferLock, OldIRQL);
+ PlatformSpinlockRelease(&g_MessageBufferInformation[Index].BufferLock, OldIRQL);
}
return FALSE;
@@ -803,11 +803,11 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
if (PriorityMessageIsAvailable)
{
- SendingBuffer = (PVOID)((UINT64)MessageBufferInformation[Index].BufferStartAddressPriority + (MessageBufferInformation[Index].CurrentIndexToSendPriority * (PacketChunkSize + sizeof(BUFFER_HEADER))) + sizeof(BUFFER_HEADER));
+ SendingBuffer = (PVOID)((UINT64)g_MessageBufferInformation[Index].BufferStartAddressPriority + (g_MessageBufferInformation[Index].CurrentIndexToSendPriority * (PacketChunkSize + sizeof(BUFFER_HEADER))) + sizeof(BUFFER_HEADER));
}
else
{
- SendingBuffer = (PVOID)((UINT64)MessageBufferInformation[Index].BufferStartAddress + (MessageBufferInformation[Index].CurrentIndexToSend * (PacketChunkSize + sizeof(BUFFER_HEADER))) + sizeof(BUFFER_HEADER));
+ SendingBuffer = (PVOID)((UINT64)g_MessageBufferInformation[Index].BufferStartAddress + (g_MessageBufferInformation[Index].CurrentIndexToSend * (PacketChunkSize + sizeof(BUFFER_HEADER))) + sizeof(BUFFER_HEADER));
}
//
@@ -830,21 +830,21 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
//
if (Header->BufferLength > DbgPrintLimitation)
{
- for (size_t i = 0; i <= Header->BufferLength / DbgPrintLimitation; i++)
+ for (SIZE_T i = 0; i <= Header->BufferLength / DbgPrintLimitation; i++)
{
if (i != 0)
{
- PlatformDbgPrint("%s", (char *)((UINT64)SendingBuffer + (DbgPrintLimitation * i) - 2));
+ PlatformDbgPrint("%s", (CHAR *)((UINT64)SendingBuffer + (DbgPrintLimitation * i) - 2));
}
else
{
- PlatformDbgPrint("%s", (char *)((UINT64)SendingBuffer + (DbgPrintLimitation * i)));
+ PlatformDbgPrint("%s", (CHAR *)((UINT64)SendingBuffer + (DbgPrintLimitation * i)));
}
}
}
else
{
- PlatformDbgPrint("%s", (char *)SendingBuffer);
+ PlatformDbgPrint("%s", (CHAR *)SendingBuffer);
}
}
#endif
@@ -871,16 +871,16 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
//
// Check to see whether we passed the index or not
//
- if (MessageBufferInformation[Index].CurrentIndexToSendPriority > MaximumPacketsCapacityPriority - 2)
+ if (g_MessageBufferInformation[Index].CurrentIndexToSendPriority > MaximumPacketsCapacityPriority - 2)
{
- MessageBufferInformation[Index].CurrentIndexToSendPriority = 0;
+ g_MessageBufferInformation[Index].CurrentIndexToSendPriority = 0;
}
else
{
//
// Increment the next index to read
//
- MessageBufferInformation[Index].CurrentIndexToSendPriority = MessageBufferInformation[Index].CurrentIndexToSendPriority + 1;
+ g_MessageBufferInformation[Index].CurrentIndexToSendPriority = g_MessageBufferInformation[Index].CurrentIndexToSendPriority + 1;
}
}
else
@@ -888,16 +888,16 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
//
// Check to see whether we passed the index or not
//
- if (MessageBufferInformation[Index].CurrentIndexToSend > MaximumPacketsCapacity - 2)
+ if (g_MessageBufferInformation[Index].CurrentIndexToSend > MaximumPacketsCapacity - 2)
{
- MessageBufferInformation[Index].CurrentIndexToSend = 0;
+ g_MessageBufferInformation[Index].CurrentIndexToSend = 0;
}
else
{
//
// Increment the next index to read
//
- MessageBufferInformation[Index].CurrentIndexToSend = MessageBufferInformation[Index].CurrentIndexToSend + 1;
+ g_MessageBufferInformation[Index].CurrentIndexToSend = g_MessageBufferInformation[Index].CurrentIndexToSend + 1;
}
}
@@ -907,14 +907,14 @@ LogReadBuffer(BOOLEAN IsVmxRoot, PVOID BufferToSaveMessage, UINT32 * ReturnedLen
//
if (IsVmxRoot)
{
- SpinlockUnlock(&VmxRootLoggingLock);
+ SpinlockUnlock(&g_VmxRootLoggingLock);
}
else
{
//
// Release the lock
//
- PlatformSpinlockRelease(&MessageBufferInformation[Index].BufferLock, OldIRQL);
+ PlatformSpinlockRelease(&g_MessageBufferInformation[Index].BufferLock, OldIRQL);
}
return TRUE;
@@ -950,11 +950,11 @@ LogCheckForNewMessage(BOOLEAN IsVmxRoot, BOOLEAN Priority)
if (Priority)
{
- Header = (BUFFER_HEADER *)((UINT64)MessageBufferInformation[Index].BufferStartAddressPriority + (MessageBufferInformation[Index].CurrentIndexToSendPriority * (PacketChunkSize + sizeof(BUFFER_HEADER))));
+ Header = (BUFFER_HEADER *)((UINT64)g_MessageBufferInformation[Index].BufferStartAddressPriority + (g_MessageBufferInformation[Index].CurrentIndexToSendPriority * (PacketChunkSize + sizeof(BUFFER_HEADER))));
}
else
{
- Header = (BUFFER_HEADER *)((UINT64)MessageBufferInformation[Index].BufferStartAddress + (MessageBufferInformation[Index].CurrentIndexToSend * (PacketChunkSize + sizeof(BUFFER_HEADER))));
+ Header = (BUFFER_HEADER *)((UINT64)g_MessageBufferInformation[Index].BufferStartAddress + (g_MessageBufferInformation[Index].CurrentIndexToSend * (PacketChunkSize + sizeof(BUFFER_HEADER))));
}
if (!Header->Valid)
@@ -988,16 +988,16 @@ LogCallbackPrepareAndSendMessageToQueueWrapper(UINT32 OperationCode,
BOOLEAN IsImmediateMessage,
BOOLEAN ShowCurrentSystemTime,
BOOLEAN Priority,
- const char * Fmt,
+ const CHAR * Fmt,
va_list ArgList)
{
- int SprintfResult;
- size_t WrittenSize;
+ INT32 SprintfResult;
+ SIZE_T WrittenSize;
BOOLEAN IsVmxRootMode;
BOOLEAN Result = FALSE; // by default, we assume error happens
- char * LogMessage = NULL;
- char * TempMessage = NULL;
- char TimeBuffer[20] = {0};
+ CHAR * LogMessage = NULL;
+ CHAR * TempMessage = NULL;
+ CHAR TimeBuffer[20] = {0};
ULONG CurrentCore = PlatformCpuGetCurrentProcessorNumber();
//
@@ -1011,8 +1011,8 @@ LogCallbackPrepareAndSendMessageToQueueWrapper(UINT32 OperationCode,
//
if (IsVmxRootMode)
{
- LogMessage = &VmxLogMessage[CurrentCore * PacketChunkSize];
- TempMessage = &VmxTempMessage[CurrentCore * PacketChunkSize];
+ LogMessage = &g_VmxLogMessage[CurrentCore * PacketChunkSize];
+ TempMessage = &g_VmxTempMessage[CurrentCore * PacketChunkSize];
}
else
{
@@ -1179,7 +1179,7 @@ LogCallbackPrepareAndSendMessageToQueue(UINT32 OperationCode,
BOOLEAN IsImmediateMessage,
BOOLEAN ShowCurrentSystemTime,
BOOLEAN Priority,
- const char * Fmt,
+ const CHAR * Fmt,
...)
{
va_list ArgList;
@@ -1275,7 +1275,7 @@ LogCallbackSendMessageToQueue(UINT32 OperationCode, BOOLEAN IsImmediateMessage,
// Set the index
//
Index = 1;
- SpinlockLock(&VmxRootLoggingLockForNonImmBuffers);
+ SpinlockLock(&g_VmxRootLoggingLockForNonImmBuffers);
}
else
{
@@ -1287,7 +1287,7 @@ LogCallbackSendMessageToQueue(UINT32 OperationCode, BOOLEAN IsImmediateMessage,
//
// Acquire the lock
//
- PlatformSpinlockAcquire(&MessageBufferInformation[Index].BufferLockForNonImmMessage, &OldIRQL);
+ PlatformSpinlockAcquire(&g_MessageBufferInformation[Index].BufferLockForNonImmMessage, &OldIRQL);
}
//
// Set the result to True
@@ -1297,50 +1297,50 @@ LogCallbackSendMessageToQueue(UINT32 OperationCode, BOOLEAN IsImmediateMessage,
//
// If log message WrittenSize is above the buffer then we have to send the previous buffer
//
- if ((MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer + BufferLen) > PacketChunkSize - 1 && MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer != 0)
+ if ((g_MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer + BufferLen) > PacketChunkSize - 1 && g_MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer != 0)
{
//
// Send the previous buffer (non-immediate message),
// accumulated messages don't have priority
//
Result = LogCallbackSendBuffer(OPERATION_LOG_NON_IMMEDIATE_MESSAGE,
- (PVOID)MessageBufferInformation[Index].BufferForMultipleNonImmediateMessage,
- MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer,
+ (PVOID)g_MessageBufferInformation[Index].BufferForMultipleNonImmediateMessage,
+ g_MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer,
FALSE);
//
// Free the immediate buffer
//
- MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer = 0;
- PlatformZeroMemory((PVOID)MessageBufferInformation[Index].BufferForMultipleNonImmediateMessage, PacketChunkSize);
+ g_MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer = 0;
+ PlatformZeroMemory((PVOID)g_MessageBufferInformation[Index].BufferForMultipleNonImmediateMessage, PacketChunkSize);
}
//
// We have to save the message
//
- PlatformWriteMemory((PVOID)(MessageBufferInformation[Index].BufferForMultipleNonImmediateMessage +
- MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer),
+ PlatformWriteMemory((PVOID)(g_MessageBufferInformation[Index].BufferForMultipleNonImmediateMessage +
+ g_MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer),
LogMessage,
BufferLen);
//
// add the length
//
- MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer += BufferLen;
+ g_MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer += BufferLen;
// Check if we're in Vmx-root, if it is then we use our customized HIGH_IRQL Spinlock,
// if not we use the windows spinlock
//
if (IsVmxRootMode)
{
- SpinlockUnlock(&VmxRootLoggingLockForNonImmBuffers);
+ SpinlockUnlock(&g_VmxRootLoggingLockForNonImmBuffers);
}
else
{
//
// Release the lock
//
- PlatformSpinlockRelease(&MessageBufferInformation[Index].BufferLockForNonImmMessage, OldIRQL);
+ PlatformSpinlockRelease(&g_MessageBufferInformation[Index].BufferLockForNonImmMessage, OldIRQL);
}
return Result;
diff --git a/hyperdbg/hyperlog/code/UnloadDll.c b/hyperdbg/hyperlog/code/UnloadDll.c
index be8c9ba6..0f82e50e 100644
--- a/hyperdbg/hyperlog/code/UnloadDll.c
+++ b/hyperdbg/hyperlog/code/UnloadDll.c
@@ -28,7 +28,7 @@ DllInitialize(
}
NTSTATUS
-DllUnload(void)
+DllUnload(VOID)
{
return STATUS_SUCCESS;
}
diff --git a/hyperdbg/hyperlog/header/Logging.h b/hyperdbg/hyperlog/header/Logging.h
index f94d96a8..c098d883 100644
--- a/hyperdbg/hyperlog/header/Logging.h
+++ b/hyperdbg/hyperlog/header/Logging.h
@@ -20,13 +20,13 @@
* @brief VMX buffer for logging messages
*
*/
-char * VmxLogMessage;
+CHAR * g_VmxLogMessage;
/**
* @brief VMX temporary buffer for logging messages
*
*/
-char * VmxTempMessage;
+CHAR * g_VmxTempMessage;
//////////////////////////////////////////////////
// Structures //
@@ -101,19 +101,19 @@ typedef struct _LOG_BUFFER_INFORMATION
* @brief Global Variable for buffer on all cores
*
*/
-LOG_BUFFER_INFORMATION * MessageBufferInformation;
+LOG_BUFFER_INFORMATION * g_MessageBufferInformation;
/**
* @brief Vmx-root lock for logging
*
*/
-volatile LONG VmxRootLoggingLock;
+volatile LONG g_VmxRootLoggingLock;
/**
* @brief Vmx-root lock for logging
*
*/
-volatile LONG VmxRootLoggingLockForNonImmBuffers;
+volatile LONG g_VmxRootLoggingLockForNonImmBuffers;
//////////////////////////////////////////////////
// Illustration //
diff --git a/hyperdbg/hyperlog/header/UnloadDll.h b/hyperdbg/hyperlog/header/UnloadDll.h
index c6388ac7..b4801b98 100644
--- a/hyperdbg/hyperlog/header/UnloadDll.h
+++ b/hyperdbg/hyperlog/header/UnloadDll.h
@@ -17,4 +17,4 @@
__declspec(dllexport) NTSTATUS DllInitialize(_In_ PUNICODE_STRING RegistryPath);
-__declspec(dllexport) NTSTATUS DllUnload(void);
+__declspec(dllexport) NTSTATUS DllUnload(VOID);
diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
index 414cb5d1..d144ef09 100644
--- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
+++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
@@ -362,7 +362,7 @@ HyperDbgUnloadVmm()
AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnOne);
- ShowMessages("start terminating...\n");
+ ShowMessages("start terminating vmm...\n");
//
// Uninitialize the user debugger if it's initialized
@@ -551,7 +551,7 @@ HyperDbgLoadVmmModule()
//
// Enable Debug privilege to the current token
//
- if ( !WindowsSetDebugPrivilege())
+ if (!WindowsSetDebugPrivilege())
{
ShowMessages("err, couldn't set debug privilege\n");
return 1;
@@ -635,7 +635,7 @@ HyperDbgLoadHyperTraceModule()
//
// Enable Debug privilege to the current token
//
- if ( !WindowsSetDebugPrivilege())
+ if (!WindowsSetDebugPrivilege())
{
ShowMessages("err, couldn't set debug privilege\n");
return 1;
diff --git a/hyperdbg/libhyperdbg/header/kd.h b/hyperdbg/libhyperdbg/header/kd.h
index 97f6670f..ca3586c6 100644
--- a/hyperdbg/libhyperdbg/header/kd.h
+++ b/hyperdbg/libhyperdbg/header/kd.h
@@ -216,6 +216,12 @@ KdReloadSymbolsInDebuggee(BOOLEAN PauseDebuggee, UINT32 UserProcessId);
BOOLEAN
KdSendResponseOfThePingPacket();
+BOOLEAN
+KdSendPcitreePacketToDebuggee(PDEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET PcitreePacket);
+
+BOOLEAN
+KdSendPcidevinfoPacketToDebuggee(PDEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET PcidevinfoPacket);
+
VOID
KdUninitializeConnection();
@@ -241,9 +247,3 @@ KdBreakControlCheckAndContinueDebugger();
VOID
KdSetStatusAndWaitForPause();
-
-BOOLEAN
-KdSendPcitreePacketToDebuggee(PDEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET PcitreePacket);
-
-BOOLEAN
-KdSendPcidevinfoPacketToDebuggee(PDEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET PcidevinfoPacket);
diff --git a/hyperdbg/libhyperdbg/header/libhyperdbg.h b/hyperdbg/libhyperdbg/header/libhyperdbg.h
index e6a881ed..2a112eed 100644
--- a/hyperdbg/libhyperdbg/header/libhyperdbg.h
+++ b/hyperdbg/libhyperdbg/header/libhyperdbg.h
@@ -15,9 +15,6 @@
// Functions //
//////////////////////////////////////////////////
-INT
-HyperDbgCreateHandleFromVmmModule();
-
INT
HyperDbgInitHyperTraceModule();
From ff1f499b9fb78f13228fba59649b2f9a91cc0501 Mon Sep 17 00:00:00 2001
From: sina
Date: Sat, 30 May 2026 20:58:09 +0200
Subject: [PATCH 198/323] refactor doxygen, variables, function names 1
---
CHANGELOG.md | 1 +
CONTRIBUTING.md | 6 +-
README.md | 2 +-
hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp | 12 +-
.../code/hardware/hwdbg-tests.cpp | 76 +++---
hyperdbg/hyperdbg-test/code/namedpipe.cpp | 158 ++++++------
.../hyperdbg-test/code/tests/test-parser.cpp | 234 +++++++++---------
.../code/tests/test-semantic-scripts.cpp | 24 +-
hyperdbg/hyperdbg-test/code/tools.cpp | 38 ++-
hyperdbg/hyperdbg-test/header/namedpipe.h | 12 +-
hyperdbg/hyperdbg-test/header/routines.h | 8 +-
hyperdbg/hyperlog/code/Logging.c | 26 +-
12 files changed, 315 insertions(+), 282 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0af5e50a..d8d75f22 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -33,6 +33,7 @@ New release of the HyperDbg Debugger.
- All CPU-related intrinsic instructions are ported to platform-independent files to support Linux
- HyperDbg SDK now compiles on Linux (GCC) for both user-mode and kernel-mode
- Fix the 'wrmsr' command IOCTL checks by receiving output the buffer ([link](https://docs.hyperdbg.org/commands/debugging-commands/wrmsr))
+- Extensive refactoring of codes (doxygen, variables, function names)
## [0.18.1.0] - 2026-04-09
New release of the HyperDbg Debugger.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 9ab2c389..9e2c3442 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -16,16 +16,15 @@ Please make sure to create a [discussion](https://github.com/orgs/HyperDbg/discu
- Enhancing HyperDbg's [Transparent Mode](https://docs.hyperdbg.org/using-hyperdbg/prerequisites/operation-modes#transparent-mode). These features should be added as an extension to the [HyperEvade](https://www.vusec.net/projects/hyperevade/) project (e.g., by bypassing [al-khaser](https://github.com/LordNoteworthy/al-khaser) and similar anti-debugging and anti-hypervisor projects).
- Enhancing and adding more features to the ['.pe'](https://docs.hyperdbg.org/commands/meta-commands/.pe) command.
- Adding HyperDbg to the system startup using UEFI.
-- Adding routines to activate and use Last Branch Record (LBR) and Branch Trace Store (BTS) | (In progress).
- Creating a QT-based GUI.
- Creating a SoftICE-style GUI.
- Supporting nested-virtualization on HyperDbg itself.
- Protecting HyperDbg code and memory from modification using VT-x capabilities.
-- Adding support for the Intel Processor Trace (PT) and event command for detecting coverage.
+- Adding support for the Intel Processor Trace (PT) and event command for detecting coverage | (In progress).
- Creating a wrapper that automatically interprets the [HyperDbg SDK](https://github.com/HyperDbg/HyperDbg/tree/master/hyperdbg/include/SDK) to GO, RUST, C#, Python, etc.
- Creating syntax highlighting for dslang for different IDEs (VSCode, VIM, etc.).
- Building HyperDbg using LLVM clang.
-- Helping us start supporting HyperDbg on Linux (discussion needed).
+- Helping us start supporting HyperDbg on Linux (discussion needed) | (In progress).
- Helping us start supporting HyperDbg on AMD processors (discussion needed).
- Adding digital (FPGA) modules to the hwdbg hardware debugger.
- Creating a [ret-sync](https://github.com/bootleg/ret-sync) module for HyperDbg.
@@ -44,6 +43,7 @@ Please make sure to create a [discussion](https://github.com/orgs/HyperDbg/discu
- Adding support for [Hardware Performance Counters (HPC)](https://en.wikipedia.org/wiki/Hardware_performance_counter).
- Any other interesting tasks you might find!
+-~~Adding routines to activate and use Last Branch Record (LBR) and Branch Trace Store (BTS).~~ Added: [link ][link ]
- ~~Creating commands to inspect and read details of PCIe devices.~~ Added: [link ][link ]
- ~~Mitigating the anti-hypervisor method described [here](https://howtohypervise.blogspot.com/2019/01/a-common-missight-in-most-hypervisors.html).~~ [[Fixed](https://github.com/HyperDbg/HyperDbg/pull/497)]
- ~~Fixing the problem with [XSETBV instruction freezing](https://github.com/HyperDbg/HyperDbg/issues/429).~~ [[Fixed](https://github.com/HyperDbg/HyperDbg/pull/491)]
diff --git a/README.md b/README.md
index aa6dac48..00171431 100644
--- a/README.md
+++ b/README.md
@@ -178,7 +178,7 @@ You can also read [this article](https://research.hyperdbg.org/debugger/kernel-d
* Attaching to the User-mode Process and Preventing Execution [link ]
* Intercepting Execution of XSETBV Instructions [link ]
* Writing Library Script Files [link ]
-* Tracing Branches using Last Branch Record [link ][link ][link ][link ]
+* Tracing Branches using Last Branch Record [link ][link ][link ][link ][link ][link ][link ]
## How does it work?
diff --git a/hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp b/hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp
index 3126863d..802a76e1 100644
--- a/hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp
+++ b/hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp
@@ -1,7 +1,7 @@
/**
* @file hyperdbg-cli.cpp
* @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Main HyperDbg Cli source coede
+ * @brief Main HyperDbg Cli source code
* @details
* @version 0.1
* @date 2020-04-11
@@ -24,9 +24,9 @@ using namespace std;
/**
* @brief CLI main function
*
- * @param argc
- * @param argv
- * @return int
+ * @param argc the number of arguments
+ * @param argv the arguments
+ * @return int zero on success, 1 on failure
*/
int
main(int argc, char * argv[])
@@ -74,7 +74,7 @@ main(int argc, char * argv[])
//
reset = TRUE;
- GetMultiLinecCommand:
+ GetMultiLineCommand:
string temp_command = "";
@@ -115,7 +115,7 @@ main(int argc, char * argv[])
//
// Get next command
//
- goto GetMultiLinecCommand;
+ goto GetMultiLineCommand;
}
else
{
diff --git a/hyperdbg/hyperdbg-test/code/hardware/hwdbg-tests.cpp b/hyperdbg/hyperdbg-test/code/hardware/hwdbg-tests.cpp
index 46647903..2ea4af5f 100644
--- a/hyperdbg/hyperdbg-test/code/hardware/hwdbg-tests.cpp
+++ b/hyperdbg/hyperdbg-test/code/hardware/hwdbg-tests.cpp
@@ -15,23 +15,23 @@ namespace fs = std::filesystem;
/**
* @brief function to comment each line by adding ';' at the start
- * @param content
+ * @param Content the content to comment out
*
* @return std::string
*/
std::string
-commentContent(const std::string & content)
+CommentContent(const std::string & Content)
{
- std::istringstream iss(content);
- std::string line;
- std::string commentedContent;
+ std::istringstream Iss(Content);
+ std::string Line;
+ std::string CommentedContent;
- while (std::getline(iss, line))
+ while (std::getline(Iss, Line))
{
- commentedContent += line + "\n; ";
+ CommentedContent += Line + "\n; ";
}
- return commentedContent;
+ return CommentedContent;
}
/**
@@ -42,9 +42,9 @@ commentContent(const std::string & content)
* @return BOOLEAN
*/
BOOLEAN
-ReadDirectoryAndCreateHwdbgTestCases(const char * HwdbgScriptTestCasesPath)
+ReadDirectoryAndCreateHwdbgTestCases(const CHAR * HwdbgScriptTestCasesPath)
{
- CHAR tempFilePath[MAX_PATH] = {0};
+ CHAR TempFilePath[MAX_PATH] = {0};
//
// Iterate through the directory
@@ -61,7 +61,7 @@ ReadDirectoryAndCreateHwdbgTestCases(const char * HwdbgScriptTestCasesPath)
//
// Get the file path
//
- std::string filePath = entry.path().string();
+ std::string FilePath = entry.path().string();
//
// Output the file name
@@ -71,10 +71,10 @@ ReadDirectoryAndCreateHwdbgTestCases(const char * HwdbgScriptTestCasesPath)
//
// Open the file and read its contents
//
- std::ifstream file(filePath);
- if (file.is_open())
+ std::ifstream File(FilePath);
+ if (File.is_open())
{
- std::string content((std::istreambuf_iterator(file)),
+ std::string Content((std::istreambuf_iterator(File)),
std::istreambuf_iterator());
//
@@ -84,19 +84,19 @@ ReadDirectoryAndCreateHwdbgTestCases(const char * HwdbgScriptTestCasesPath)
// std::cout << content << std::endl;
- std::string compiled_version_file_path = HWDBG_SCRIPT_TEST_CASE_COMPILED_SCRIPTS_DIRECTORY "\\" + entry.path().filename().string() + ".hex.txt";
+ std::string CompiledVersionFilePath = HWDBG_SCRIPT_TEST_CASE_COMPILED_SCRIPTS_DIRECTORY "\\" + entry.path().filename().string() + ".hex.txt";
//
// Run the test case command
//
- printf("File content: %s\n", content.c_str());
+ printf("File content: %s\n", Content.c_str());
- if (!hwdbg_script_run_script(content.c_str(),
+ if (!hwdbg_script_run_script(Content.c_str(),
HWDBG_TEST_READ_INSTANCE_INFO_PATH,
- compiled_version_file_path.c_str(),
+ CompiledVersionFilePath.c_str(),
DEFAULT_INITIAL_BRAM_BUFFER_SIZE))
{
- std::cout << "[-] Could not run the script: " << filePath << std::endl;
+ std::cout << "[-] Could not run the script: " << FilePath << std::endl;
return FALSE;
}
@@ -107,7 +107,7 @@ ReadDirectoryAndCreateHwdbgTestCases(const char * HwdbgScriptTestCasesPath)
//
// Parse the hwdbg compiled test cases from the file
//
- if (!hyperdbg_u_setup_path_for_filename(compiled_version_file_path.c_str(), tempFilePath, MAX_PATH, FALSE))
+ if (!hyperdbg_u_setup_path_for_filename(CompiledVersionFilePath.c_str(), TempFilePath, MAX_PATH, FALSE))
{
//
// Error could not find the test case files
@@ -116,48 +116,48 @@ ReadDirectoryAndCreateHwdbgTestCases(const char * HwdbgScriptTestCasesPath)
return FALSE;
}
- std::ifstream compiledFile(tempFilePath);
- if (compiledFile.is_open())
+ std::ifstream CompiledFile(TempFilePath);
+ if (CompiledFile.is_open())
{
//
// Read the existing content of the compiled file
//
- std::string compiledContent((std::istreambuf_iterator(compiledFile)),
+ std::string CompiledContent((std::istreambuf_iterator(CompiledFile)),
std::istreambuf_iterator());
- compiledFile.close(); // Close the file after reading
+ CompiledFile.close(); // Close the file after reading
//
// Comment the content
//
- std::string commentedContent = commentContent(content);
+ std::string CommentedContent = CommentContent(Content);
//
// Concatenate the new content (prepend the original content)
//
- std::string newContent = "; The raw script file is available at: " HWDBG_SCRIPT_TEST_CASE_COMPILED_SCRIPTS_DIRECTORY "\\" +
+ std::string NewContent = "; The raw script file is available at: " HWDBG_SCRIPT_TEST_CASE_COMPILED_SCRIPTS_DIRECTORY "\\" +
entry.path().filename().string() +
"\n;\n; !hw script " +
- commentedContent +
+ CommentedContent +
"\n" +
- compiledContent;
+ CompiledContent;
//
// Write the new content back to the file (overwriting it)
//
- std::ofstream compiledFileOut(tempFilePath);
- if (compiledFileOut.is_open())
+ std::ofstream CompiledFileOut(TempFilePath);
+ if (CompiledFileOut.is_open())
{
- compiledFileOut << newContent;
- compiledFileOut.close();
+ CompiledFileOut << NewContent;
+ CompiledFileOut.close();
}
else
{
- std::cerr << "Could not open file for writing: " << compiled_version_file_path << std::endl;
+ std::cerr << "Could not open file for writing: " << CompiledVersionFilePath << std::endl;
}
}
else
{
- std::cerr << "Could not open compiled file: " << compiled_version_file_path << std::endl;
+ std::cerr << "Could not open compiled file: " << CompiledVersionFilePath << std::endl;
}
std::cout << "--------------------------------------------" << std::endl;
@@ -165,11 +165,11 @@ ReadDirectoryAndCreateHwdbgTestCases(const char * HwdbgScriptTestCasesPath)
//
// Close the file
//
- file.close();
+ File.close();
}
else
{
- std::cerr << "Could not open file: " << filePath << std::endl;
+ std::cerr << "Could not open file: " << FilePath << std::endl;
}
}
}
@@ -194,8 +194,8 @@ ReadDirectoryAndCreateHwdbgTestCases(const char * HwdbgScriptTestCasesPath)
BOOLEAN
HwdbgTestCreateTestCases()
{
- int testNum = 0;
- CHAR dirPath[MAX_PATH] = {0};
+ INT32 TestNum = 0;
+ CHAR dirPath[MAX_PATH] = {0};
//
// Parse the hwdbg test cases from the file
diff --git a/hyperdbg/hyperdbg-test/code/namedpipe.cpp b/hyperdbg/hyperdbg-test/code/namedpipe.cpp
index fccdfade..d3cf2ad2 100644
--- a/hyperdbg/hyperdbg-test/code/namedpipe.cpp
+++ b/hyperdbg/hyperdbg-test/code/namedpipe.cpp
@@ -12,7 +12,7 @@
#include "pch.h"
/**
- * @brief Create a named pipe server
+ * @brief Connect and transfer buffers via named pipe
*
* @return UINT32
*/
@@ -204,14 +204,14 @@ NamedPipeServerCreatePipe(LPCSTR PipeName, UINT32 OutputBufferSize, UINT32 Input
* @return BOOLEAN
*/
BOOLEAN
-NamedPipeServerWaitForClientConntection(HANDLE PipeHandle)
+NamedPipeServerWaitForClientConnection(HANDLE PipeHandle)
{
//
// Wait for the client to connect
//
- BOOL bClientConnected = ConnectNamedPipe(PipeHandle, NULL);
+ BOOLEAN ClientConnected = ConnectNamedPipe(PipeHandle, NULL);
- if (FALSE == bClientConnected)
+ if (FALSE == ClientConnected)
{
printf("err, occurred while connecting to the client (%x)\n",
GetLastError());
@@ -234,9 +234,9 @@ NamedPipeServerWaitForClientConntection(HANDLE PipeHandle)
* @return UINT32
*/
UINT32
-NamedPipeServerReadClientMessage(HANDLE PipeHandle, char * BufferToSave, int MaximumReadBufferLength)
+NamedPipeServerReadClientMessage(HANDLE PipeHandle, CHAR * BufferToSave, INT32 MaximumReadBufferLength)
{
- DWORD cbBytes;
+ DWORD BytesTransferred;
//
// We are connected to the client.
@@ -248,13 +248,13 @@ NamedPipeServerReadClientMessage(HANDLE PipeHandle, char * BufferToSave, int Max
//
// Read client message
//
- BOOL bResult = ReadFile(PipeHandle, // handle to pipe
- BufferToSave, // buffer to receive data
- MaximumReadBufferLength, // size of buffer
- &cbBytes, // number of bytes read
- NULL); // not overlapped I/O
+ BOOLEAN Result = ReadFile(PipeHandle, // handle to pipe
+ BufferToSave, // buffer to receive data
+ MaximumReadBufferLength, // size of buffer
+ &BytesTransferred, // number of bytes read
+ NULL); // not overlapped I/O
- if ((!bResult) || (0 == cbBytes))
+ if ((!Result) || (0 == BytesTransferred))
{
printf("err, occurred while reading from the client (%x)\n",
GetLastError());
@@ -265,29 +265,37 @@ NamedPipeServerReadClientMessage(HANDLE PipeHandle, char * BufferToSave, int Max
//
// Number of bytes that the client sends to us
//
- return cbBytes;
+ return BytesTransferred;
}
+/**
+ * @brief Send a message to the client over named pipe
+ *
+ * @param PipeHandle Handle of the named pipe
+ * @param BufferToSend Buffer containing the message to send
+ * @param BufferSize Size of the buffer to send
+ * @return BOOLEAN TRUE if successful, FALSE otherwise
+ */
BOOLEAN
NamedPipeServerSendMessageToClient(HANDLE PipeHandle,
- char * BufferToSend,
- int BufferSize)
+ CHAR * BufferToSend,
+ INT32 BufferSize)
{
- DWORD cbBytes;
+ DWORD BytesTransferred;
//
// Reply to client
//
- BOOLEAN bResult =
- WriteFile(PipeHandle, // handle to pipe
- BufferToSend, // buffer to write from
- BufferSize, // number of bytes to write, include the NULL
- &cbBytes, // number of bytes written
- NULL); // not overlapped I/O
+ BOOLEAN Result =
+ WriteFile(PipeHandle, // handle to pipe
+ BufferToSend, // buffer to write from
+ BufferSize, // number of bytes to write, include the NULL
+ &BytesTransferred, // number of bytes written
+ NULL); // not overlapped I/O
- if ((!bResult) || (BufferSize != cbBytes))
+ if ((!Result) || (BufferSize != (INT32)BytesTransferred))
{
- printf("Error occurred while writing to the client (%x)\n",
+ printf("err, occurred while writing to the client (%x)\n",
GetLastError());
CloseHandle(PipeHandle);
return FALSE;
@@ -363,15 +371,15 @@ NamedPipeClientCreatePipe(LPCSTR PipeName)
}
/**
- * @brief send client message over named pipe
+ * @brief Send client message over named pipe
*
- * @param PipeHandle
- * @param BufferToSend
- * @param BufferSize
- * @return BOOLEAN
+ * @param PipeHandle Handle of the named pipe
+ * @param BufferToSend Buffer containing the message to send
+ * @param BufferSize Size of the buffer to send
+ * @return BOOLEAN TRUE if successful, FALSE otherwise
*/
BOOLEAN
-NamedPipeClientSendMessage(HANDLE PipeHandle, char * BufferToSend, int BufferSize)
+NamedPipeClientSendMessage(HANDLE PipeHandle, CHAR * BufferToSend, INT32 BufferSize)
{
//
// We are done connecting to the server pipe,
@@ -380,19 +388,19 @@ NamedPipeClientSendMessage(HANDLE PipeHandle, char * BufferToSend, int BufferSiz
// on handle - hPipe
//
- DWORD cbBytes;
+ DWORD BytesTransferred;
//
// Send the message to server
//
- BOOL bResult =
- WriteFile(PipeHandle, // handle to pipe
- BufferToSend, // buffer to write from
- BufferSize, // number of bytes to write, include the NULL
- &cbBytes, // number of bytes written
- NULL); // not overlapped I/O
+ BOOLEAN Result =
+ WriteFile(PipeHandle, // handle to pipe
+ BufferToSend, // buffer to write from
+ BufferSize, // number of bytes to write, include the NULL
+ &BytesTransferred, // number of bytes written
+ NULL); // not overlapped I/O
- if ((!bResult) || (BufferSize != cbBytes))
+ if ((!Result) || (BufferSize != (INT32)BytesTransferred))
{
printf("err, occurred while writing to the server (%x)\n",
GetLastError());
@@ -410,35 +418,40 @@ NamedPipeClientSendMessage(HANDLE PipeHandle, char * BufferToSend, int BufferSiz
}
}
-//
-// Read the count of read buffer
-//
+/**
+ * @brief Read a message from the server over named pipe
+ *
+ * @param PipeHandle Handle of the named pipe
+ * @param BufferToRead Buffer to store the received message
+ * @param MaximumSizeOfBuffer Maximum size of the receive buffer
+ * @return UINT32 number of bytes read, or 0 on failure
+ */
UINT32
-NamedPipeClientReadMessage(HANDLE PipeHandle, char * BufferToRead, int MaximumSizeOfBuffer)
+NamedPipeClientReadMessage(HANDLE PipeHandle, CHAR * BufferToRead, INT32 MaximumSizeOfBuffer)
{
- DWORD cbBytes;
+ DWORD BytesTransferred;
//
// Read server response
//
- BOOL bResult = ReadFile(PipeHandle, // handle to pipe
- BufferToRead, // buffer to receive data
- MaximumSizeOfBuffer, // size of buffer
- &cbBytes, // number of bytes read
- NULL); // not overlapped I/O
+ BOOLEAN Result = ReadFile(PipeHandle, // handle to pipe
+ BufferToRead, // buffer to receive data
+ MaximumSizeOfBuffer, // size of buffer
+ &BytesTransferred, // number of bytes read
+ NULL); // not overlapped I/O
- if ((!bResult) || (0 == cbBytes))
+ if ((!Result) || (0 == BytesTransferred))
{
printf("err, occurred while reading from the server (%x)\n",
GetLastError());
CloseHandle(PipeHandle);
- return NULL; // Error
+ return 0; // Error
}
//
// Success
//
- return cbBytes;
+ return BytesTransferred;
}
/**
@@ -460,19 +473,19 @@ NamedPipeClientClosePipe(HANDLE PipeHandle)
////////////////////////////////////////////////////////////////////////////
/**
- * @brief and example of how to use named pipe as a server
+ * @brief An example of how to use named pipe as a server
*
- * @return int
+ * @return INT32
*/
-int
+INT32
NamedPipeServerExample()
{
- HANDLE PipeHandle;
- BOOLEAN SentMessageResult;
- UINT32 ReadBytes;
- const int BufferSize = 1024;
- char BufferToRead[BufferSize] = {0};
- char BufferToSend[BufferSize] = "test message to send from server !!!";
+ HANDLE PipeHandle;
+ BOOLEAN SentMessageResult;
+ UINT32 ReadBytes;
+ const INT32 BufferSize = 1024;
+ CHAR BufferToRead[BufferSize] = {0};
+ CHAR BufferToSend[BufferSize] = "test message to send from server !!!";
printf("create name pipe\n");
PipeHandle = NamedPipeServerCreatePipe("\\\\.\\Pipe\\HyperDbgTests",
@@ -489,7 +502,7 @@ NamedPipeServerExample()
printf("success!\n");
printf("wait for the client connection\n");
- if (!NamedPipeServerWaitForClientConntection(PipeHandle))
+ if (!NamedPipeServerWaitForClientConnection(PipeHandle))
{
//
// Error in connection
@@ -516,7 +529,7 @@ NamedPipeServerExample()
SentMessageResult = NamedPipeServerSendMessageToClient(
PipeHandle,
BufferToSend,
- (int)strlen(BufferToSend) + 1);
+ (INT32)strlen(BufferToSend) + 1);
if (!SentMessageResult)
{
@@ -538,20 +551,19 @@ NamedPipeServerExample()
////////////////////////////////////////////////////////////////////////////
/**
- * @brief and example of how to use named pipe as a client
+ * @brief An example of how to use named pipe as a client
*
- * @return int
+ * @return INT32
*/
-int
+INT32
NamedPipeClientExample()
{
- HANDLE PipeHandle;
- BOOLEAN SentMessageResult;
- UINT32 ReadBytes;
- const int BufferSize = 1024;
- char Buffer[BufferSize] = "test message to send from client !!!";
-
- PipeHandle = NamedPipeClientCreatePipe("\\\\.\\Pipe\\HyperDbgTests");
+ HANDLE PipeHandle;
+ BOOLEAN SentMessageResult;
+ UINT32 ReadBytes;
+ const INT32 BufferSize = 1024;
+ CHAR Buffer[BufferSize] = "test message to send from client !!!";
+ PipeHandle = NamedPipeClientCreatePipe("\\\\.\\Pipe\\HyperDbgTests");
if (!PipeHandle)
{
@@ -562,7 +574,7 @@ NamedPipeClientExample()
}
SentMessageResult =
- NamedPipeClientSendMessage(PipeHandle, Buffer, (int)strlen(Buffer) + 1);
+ NamedPipeClientSendMessage(PipeHandle, Buffer, (INT32)strlen(Buffer) + 1);
if (!SentMessageResult)
{
diff --git a/hyperdbg/hyperdbg-test/code/tests/test-parser.cpp b/hyperdbg/hyperdbg-test/code/tests/test-parser.cpp
index a0d30950..355bfd45 100644
--- a/hyperdbg/hyperdbg-test/code/tests/test-parser.cpp
+++ b/hyperdbg/hyperdbg-test/code/tests/test-parser.cpp
@@ -11,132 +11,132 @@
*/
#include "pch.h"
-typedef char ** CHAR_PTR_PTR; // Define CHAR_PTR_PTR as a char**
+typedef CHAR ** CHAR_PTR_PTR; // Define CHAR_PTR_PTR as CHAR**
/**
* @brief Create an array of strings from a vector of strings
- * @param testCases The vector of strings to copy
+ * @param TestCases The vector of strings to copy
*
* @return A pointer to the array of strings
*/
CHAR_PTR_PTR
-createTestCaseArray(const std::vector & testCases)
+CreateTestCaseArray(const std::vector & TestCases)
{
//
// Allocate memory for the array of pointers (size: number of test cases)
//
- CHAR_PTR_PTR testCaseArray = (CHAR_PTR_PTR)malloc(testCases.size() * sizeof(UINT64));
+ CHAR_PTR_PTR TestCaseArray = (CHAR_PTR_PTR)malloc(TestCases.size() * sizeof(UINT64));
//
// Allocate memory for each string and copy the content
//
- for (size_t i = 0; i < testCases.size(); ++i)
+ for (SIZE_T i = 0; i < TestCases.size(); ++i)
{
- testCaseArray[i] = (char *)malloc(testCases[i].length() + 1); // +1 for the null terminator
+ TestCaseArray[i] = (CHAR *)malloc(TestCases[i].length() + 1); // +1 for the null terminator
- if (testCaseArray[i] == NULL)
+ if (TestCaseArray[i] == NULL)
{
return NULL;
}
- std::strcpy(testCaseArray[i], testCases[i].c_str());
+ std::strcpy(TestCaseArray[i], TestCases[i].c_str());
}
- return testCaseArray;
+ return TestCaseArray;
}
/**
* @brief Free the memory allocated for the test case array
- * @param testCaseArray The array of pointers to free
- * @param size The size of the array
+ * @param TestCaseArray The array of pointers to free
+ * @param Size The size of the array
*
* @return VOID
*/
VOID
-freeTestCaseArray(CHAR_PTR_PTR testCaseArray, size_t size)
+FreeTestCaseArray(CHAR_PTR_PTR TestCaseArray, SIZE_T Size)
{
//
// Free each string
//
- for (size_t i = 0; i < size; ++i)
+ for (SIZE_T i = 0; i < Size; ++i)
{
- free(testCaseArray[i]);
+ free(TestCaseArray[i]);
}
//
// Free the array of pointers
//
- free(testCaseArray);
+ free(TestCaseArray);
}
/**
* @brief Parse the test cases from the file
- * @param filename The name of the file to parse
+ * @param Filename The name of the file to parse
*
* @return A vector of pairs, where each pair contains a command and a vector of tokens
*/
std::vector>>
-parseTestCases(const std::string & filename)
+ParseTestCases(const std::string & Filename)
{
- std::ifstream file(filename);
- std::string line;
- std::string command;
- std::string currentToken;
- std::vector tokens;
- std::vector>> testCases;
- bool isCommand = false;
- bool addNewline = false;
+ std::ifstream file(Filename);
+ std::string Line;
+ std::string Command;
+ std::string CurrentToken;
+ std::vector Tokens;
+ std::vector>> TestCases;
+ BOOLEAN IsCommand = FALSE;
+ BOOLEAN AddNewline = FALSE;
- const std::string tokenDelimiter = "----------------------------------";
- const std::string commandDelimiter = "_____________________________________________________________";
+ const std::string TokenDelimiter = "----------------------------------";
+ const std::string CommandDelimiter = "_____________________________________________________________";
- while (std::getline(file, line))
+ while (std::getline(file, Line))
{
- if (line == commandDelimiter)
+ if (Line == CommandDelimiter)
{
//
// No new line is needed after this token
//
- addNewline = false;
+ AddNewline = FALSE;
//
// Save the previous command and its tokens if any
//
- if (!command.empty())
+ if (!Command.empty())
{
- if (!currentToken.empty())
+ if (!CurrentToken.empty())
{
- tokens.push_back(currentToken);
- currentToken.clear();
+ Tokens.push_back(CurrentToken);
+ CurrentToken.clear();
}
- testCases.push_back({command, tokens});
- command.clear();
- tokens.clear();
+ TestCases.push_back({Command, Tokens});
+ Command.clear();
+ Tokens.clear();
}
//
// is command is true since a command is started
//
- isCommand = true;
+ IsCommand = TRUE;
}
- else if (line == tokenDelimiter)
+ else if (Line == TokenDelimiter)
{
//
// No new line is needed after this token
//
- addNewline = false;
+ AddNewline = FALSE;
//
// not in command anymore
//
- isCommand = false;
+ IsCommand = FALSE;
//
// If we're in the middle of collecting a token, save it
//
- if (!currentToken.empty())
+ if (!CurrentToken.empty())
{
- tokens.push_back(currentToken);
- currentToken.clear();
+ Tokens.push_back(CurrentToken);
+ CurrentToken.clear();
}
}
else
@@ -144,110 +144,110 @@ parseTestCases(const std::string & filename)
//
// Accumulate lines for the command or token
//
- if (isCommand)
+ if (IsCommand)
{
- if (addNewline)
- command += "\n";
- command += line;
+ if (AddNewline)
+ Command += "\n";
+ Command += Line;
}
else
{
- if (addNewline)
- currentToken += "\n";
- currentToken += line;
+ if (AddNewline)
+ CurrentToken += "\n";
+ CurrentToken += Line;
}
- addNewline = true;
+ AddNewline = TRUE;
}
}
//
// Store the last command and tokens if any
//
- if (!command.empty())
+ if (!Command.empty())
{
- if (!currentToken.empty())
+ if (!CurrentToken.empty())
{
- tokens.push_back(currentToken);
+ Tokens.push_back(CurrentToken);
}
- testCases.push_back({command, tokens});
+ TestCases.push_back({Command, Tokens});
}
- return testCases;
+ return TestCases;
}
/**
* @brief Count the number of occurrences of the substring "\\n" up to a specified position
- * @param str The string to search
- * @param limit The position to search up to
+ * @param Str The string to search
+ * @param Limit The position to search up to
*
- * @return The number of occurrences of the substring "\\n"
+ * @return INT32 The number of occurrences of the substring "\\n"
*/
-int
-countBackslashNUpToPosition(const std::string & str, std::size_t limit)
+INT32
+CountBackslashNUpToPosition(const std::string & Str, std::size_t Limit)
{
- int count = 0;
- std::string::size_type pos = 0;
- std::string target = "\\n";
+ INT32 Count = 0;
+ std::string::size_type Pos = 0;
+ std::string Target = "\\n";
//
// Limit the string to search within the specified range
//
- while ((pos = str.find(target, pos)) != std::string::npos && pos < limit)
+ while ((Pos = Str.find(Target, Pos)) != std::string::npos && Pos < Limit)
{
- ++count;
- pos += target.length(); // Move past the current occurrence
+ ++Count;
+ Pos += Target.length(); // Move past the current occurrence
}
- return count;
+ return Count;
}
/**
* @brief Show parsed command and tokens
- * @param testCases A vector of pairs, where each pair contains a command and a vector of tokens
- * @param failedTokenNum The number of the failed token
- * @param failedTokenPosition The position of the failed token
+ * @param TestCase A pair containing a command and a vector of tokens
+ * @param FailedTokenNum The number of the failed token
+ * @param FailedTokenPosition The position of the failed token
*
* @return VOID
*/
VOID
ShowParsedCommandAndTokens(const std::pair> & testCase,
- UINT32 failedTokenNum,
- UINT32 failedTokenPosition)
+ std::vector> & TestCase,
+ UINT32 FailedTokenNum,
+ UINT32 FailedTokenPosition)
{
- UINT32 tokenNum = 0;
+ UINT32 TokenNum = 0;
//
// Output the parsed test case
//
- string showingCommand = testCase.first;
+ string ShowingCommand = TestCase.first;
- std::string::size_type pos = 0;
- while ((pos = showingCommand.find("\n", pos)) != std::string::npos)
+ std::string::size_type Pos = 0;
+ while ((Pos = ShowingCommand.find("\n", Pos)) != std::string::npos)
{
- showingCommand.replace(pos, 1, "\\n");
- pos += 2; // Move past the newly added characters
+ ShowingCommand.replace(Pos, 1, "\\n");
+ Pos += 2; // Move past the newly added characters
}
- std::cout << "Command: \"" << showingCommand << "\"" << std::endl;
+ std::cout << "Command: \"" << ShowingCommand << "\"" << std::endl;
std::cout << "____________________________________\n";
std::cout << "Expected Tokens: " << std::endl;
- for (const auto & token : testCase.second)
+ for (const auto & Token : TestCase.second)
{
- string showingToken = token;
+ string ShowingToken = Token;
- pos = 0;
- while ((pos = showingToken.find("\n", pos)) != std::string::npos)
+ Pos = 0;
+ while ((Pos = ShowingToken.find("\n", Pos)) != std::string::npos)
{
- showingToken.replace(pos, 1, "\\n");
- pos += 2; // Move past the newly added characters
+ ShowingToken.replace(Pos, 1, "\\n");
+ Pos += 2; // Move past the newly added characters
}
- if (tokenNum == failedTokenNum)
+ if (TokenNum == FailedTokenNum)
{
std::cout << " x ";
}
@@ -256,23 +256,23 @@ ShowParsedCommandAndTokens(const std::pair(file)),
+ std::string Content((std::istreambuf_iterator(File)),
std::istreambuf_iterator());
//
@@ -64,18 +64,18 @@ ReadDirectoryAndTestSemanticTestcases(const char * ScriptSemanticPath)
//
// Run the test case command
//
- hyperdbg_u_run_command((CHAR *)content.c_str());
+ hyperdbg_u_run_command((CHAR *)Content.c_str());
std::cout << "--------------------------------------------" << std::endl;
//
// Close the file
//
- file.close();
+ File.close();
}
else
{
- std::cerr << "Could not open file: " << filePath << std::endl;
+ std::cerr << "Could not open file: " << FilePath << std::endl;
}
}
}
@@ -94,8 +94,8 @@ ReadDirectoryAndTestSemanticTestcases(const char * ScriptSemanticPath)
BOOLEAN
TestSemanticScripts()
{
- int testNum = 0;
- CHAR dirPath[MAX_PATH] = {0};
+ INT32 TestNum = 0;
+ CHAR dirPath[MAX_PATH] = {0};
//
// Parse the semantic script test cases from the file
@@ -122,7 +122,7 @@ TestSemanticScripts()
//
// Run test cases
//
- ReadDirectoryAndTestSemanticTestcases(dirPath);
+ ReadDirectoryAndTestSemanticTestCases(dirPath);
//
// Close the connection
diff --git a/hyperdbg/hyperdbg-test/code/tools.cpp b/hyperdbg/hyperdbg-test/code/tools.cpp
index 125b1e44..4a69f73c 100644
--- a/hyperdbg/hyperdbg-test/code/tools.cpp
+++ b/hyperdbg/hyperdbg-test/code/tools.cpp
@@ -11,28 +11,48 @@
*/
#include "pch.h"
+/**
+ * @brief Convert a UINT64 value to a hex string
+ *
+ * @param Value the value to convert
+ * @return std::string the hex string representation
+ */
std::string
-Uint64ToString(UINT64 value)
+Uint64ToString(UINT64 Value)
{
ostringstream Os;
- Os << setw(16) << setfill('0') << hex << value;
+ Os << setw(16) << setfill('0') << hex << Value;
return Os.str();
}
+/**
+ * @brief Replace the first occurrence of a substring in a string
+ *
+ * @param Str the string to modify
+ * @param From the substring to search for
+ * @param To the replacement substring
+ * @return BOOLEAN TRUE if the replacement was made, FALSE otherwise
+ */
BOOLEAN
-StringReplace(std::string & str, const std::string & from, const std::string & to)
+StringReplace(std::string & Str, const std::string & From, const std::string & To)
{
- size_t start_pos = str.find(from);
- if (start_pos == string::npos)
+ SIZE_T StartPos = Str.find(From);
+ if (StartPos == string::npos)
return FALSE;
- str.replace(start_pos, from.length(), to);
+ Str.replace(StartPos, From.length(), To);
return TRUE;
}
+/**
+ * @brief Convert a C-string to a std::string
+ *
+ * @param Str the C-string to convert
+ * @return std::string the resulting string object
+ */
std::string
-ConvertToString(char * Str)
+ConvertToString(CHAR * Str)
{
- string s(Str);
+ string Result(Str);
- return s;
+ return Result;
}
diff --git a/hyperdbg/hyperdbg-test/header/namedpipe.h b/hyperdbg/hyperdbg-test/header/namedpipe.h
index 8541560a..adc69468 100644
--- a/hyperdbg/hyperdbg-test/header/namedpipe.h
+++ b/hyperdbg/hyperdbg-test/header/namedpipe.h
@@ -19,15 +19,15 @@ HANDLE
NamedPipeServerCreatePipe(LPCSTR PipeName, UINT32 OutputBufferSize, UINT32 InputBufferSize);
BOOLEAN
-NamedPipeServerWaitForClientConntection(HANDLE PipeHandle);
+NamedPipeServerWaitForClientConnection(HANDLE PipeHandle);
UINT32
-NamedPipeServerReadClientMessage(HANDLE PipeHandle, char * BufferToSave, int MaximumReadBufferLength);
+NamedPipeServerReadClientMessage(HANDLE PipeHandle, CHAR * BufferToSave, INT32 MaximumReadBufferLength);
BOOLEAN
NamedPipeServerSendMessageToClient(HANDLE PipeHandle,
- char * BufferToSend,
- int BufferSize);
+ CHAR * BufferToSend,
+ INT32 BufferSize);
VOID
NamedPipeServerCloseHandle(HANDLE PipeHandle);
@@ -40,10 +40,10 @@ HANDLE
NamedPipeClientCreatePipe(LPCSTR PipeName);
BOOLEAN
-NamedPipeClientSendMessage(HANDLE PipeHandle, char * BufferToSend, int BufferSize);
+NamedPipeClientSendMessage(HANDLE PipeHandle, CHAR * BufferToSend, INT32 BufferSize);
UINT32
-NamedPipeClientReadMessage(HANDLE PipeHandle, char * BufferToRead, int MaximumSizeOfBuffer);
+NamedPipeClientReadMessage(HANDLE PipeHandle, CHAR * BufferToRead, INT32 MaximumSizeOfBuffer);
VOID
NamedPipeClientClosePipe(HANDLE PipeHandle);
diff --git a/hyperdbg/hyperdbg-test/header/routines.h b/hyperdbg/hyperdbg-test/header/routines.h
index 44c47cdf..ed7abc8c 100644
--- a/hyperdbg/hyperdbg-test/header/routines.h
+++ b/hyperdbg/hyperdbg-test/header/routines.h
@@ -22,7 +22,7 @@ TestCase(std::vector & TestCase);
//////////////////////////////////////////////////
extern "C" {
-extern void inline AsmTest();
+extern VOID inline AsmTest();
}
//////////////////////////////////////////////////
@@ -37,10 +37,10 @@ TestCreateLookupTable(HANDLE PipeHandle, PVOID KernelInformation, UINT32 KernelI
//////////////////////////////////////////////////
std::string
-Uint64ToString(UINT64 value);
+Uint64ToString(UINT64 Value);
BOOLEAN
-StringReplace(std::string & str, const std::string & from, const std::string & to);
+StringReplace(std::string & Str, const std::string & From, const std::string & To);
std::string
-ConvertToString(char * Str);
+ConvertToString(CHAR * Str);
diff --git a/hyperdbg/hyperlog/code/Logging.c b/hyperdbg/hyperlog/code/Logging.c
index a699335d..1cc3111f 100644
--- a/hyperdbg/hyperlog/code/Logging.c
+++ b/hyperdbg/hyperlog/code/Logging.c
@@ -213,7 +213,7 @@ LogUnInitialize()
//
// de-allocate buffer for messages and initialize the core buffer information (for vmx-root core)
//
- for (UINT32 i = 0; i < 2; i++)
+ for (int i = 0; i < 2; i++)
{
//
// Check if the buffer is allocated or not
@@ -1319,9 +1319,9 @@ LogCallbackSendMessageToQueue(UINT32 OperationCode, BOOLEAN IsImmediateMessage,
// We have to save the message
//
PlatformWriteMemory((PVOID)(g_MessageBufferInformation[Index].BufferForMultipleNonImmediateMessage +
- g_MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer),
- LogMessage,
- BufferLen);
+ g_MessageBufferInformation[Index].CurrentLengthOfNonImmBuffer),
+ LogMessage,
+ BufferLen);
//
// add the length
@@ -1506,8 +1506,8 @@ LogRegisterIrpBasedNotification(PVOID TargetIrp, LONG * Status)
NotifyRecord->Message.PendingIrp = Irp;
PlatformDpcInitialize(&NotifyRecord->Dpc, // Dpc
- LogNotifyUsermodeCallback, // DeferredRoutine
- NotifyRecord // DeferredContext
+ LogNotifyUsermodeCallback, // DeferredRoutine
+ NotifyRecord // DeferredContext
);
PlatformIoMarkIrpPending(Irp);
@@ -1616,8 +1616,8 @@ LogRegisterEventBasedNotification(PVOID TargetIrp)
NotifyRecord->Type = EVENT_BASED;
PlatformDpcInitialize(&NotifyRecord->Dpc, // Dpc
- LogNotifyUsermodeCallback, // DeferredRoutine
- NotifyRecord // DeferredContext
+ LogNotifyUsermodeCallback, // DeferredRoutine
+ NotifyRecord // DeferredContext
);
//
@@ -1625,11 +1625,11 @@ LogRegisterEventBasedNotification(PVOID TargetIrp)
// Note we must be in the context of the process that created the handle
//
Status = PlatformObjectReferenceByHandle(RegisterEvent->hEvent,
- SYNCHRONIZE | EVENT_MODIFY_STATE,
- *ExEventObjectType,
- Irp->RequestorMode,
- &NotifyRecord->Message.Event,
- NULL);
+ SYNCHRONIZE | EVENT_MODIFY_STATE,
+ *ExEventObjectType,
+ Irp->RequestorMode,
+ &NotifyRecord->Message.Event,
+ NULL);
if (!NT_SUCCESS(Status))
{
From 5fb4c24fe4294baa343f233f4a90f187ab666b1b Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 31 May 2026 02:21:47 +0200
Subject: [PATCH 199/323] refactor doxygen, variables, function names 2
---
CONTRIBUTING.md | 2 +-
hyperdbg/script-engine/code/common.c | 175 ++++++++++--------
hyperdbg/script-engine/code/scanner.c | 86 ++++-----
hyperdbg/script-engine/code/script-engine.c | 40 ++--
hyperdbg/script-engine/code/type.c | 24 ++-
hyperdbg/script-engine/header/common.h | 26 +--
hyperdbg/script-engine/header/globals.h | 2 +-
hyperdbg/script-engine/header/type.h | 30 ++-
hyperdbg/script-engine/script_include.c | 170 +++++++++++------
hyperdbg/script-engine/script_include.h | 22 ++-
.../script-eval/header/ScriptEngineHeader.h | 6 -
hyperdbg/symbol-parser/code/common-utils.cpp | 49 ++---
hyperdbg/symbol-parser/code/symbol-parser.cpp | 79 ++++----
hyperdbg/symbol-parser/pch.cpp | 2 +-
14 files changed, 416 insertions(+), 297 deletions(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 9e2c3442..3b67c60f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -43,7 +43,7 @@ Please make sure to create a [discussion](https://github.com/orgs/HyperDbg/discu
- Adding support for [Hardware Performance Counters (HPC)](https://en.wikipedia.org/wiki/Hardware_performance_counter).
- Any other interesting tasks you might find!
--~~Adding routines to activate and use Last Branch Record (LBR) and Branch Trace Store (BTS).~~ Added: [link ][link ]
+- ~~Adding routines to activate and use Last Branch Record (LBR) and Branch Trace Store (BTS).~~ Added: [link ][link ]
- ~~Creating commands to inspect and read details of PCIe devices.~~ Added: [link ][link ]
- ~~Mitigating the anti-hypervisor method described [here](https://howtohypervise.blogspot.com/2019/01/a-common-missight-in-most-hypervisors.html).~~ [[Fixed](https://github.com/HyperDbg/HyperDbg/pull/497)]
- ~~Fixing the problem with [XSETBV instruction freezing](https://github.com/HyperDbg/HyperDbg/issues/429).~~ [[Fixed](https://github.com/HyperDbg/HyperDbg/pull/491)]
diff --git a/hyperdbg/script-engine/code/common.c b/hyperdbg/script-engine/code/common.c
index 69969b25..7bb9440c 100644
--- a/hyperdbg/script-engine/code/common.c
+++ b/hyperdbg/script-engine/code/common.c
@@ -14,7 +14,7 @@
/**
* @brief Allocates a new token
*
- * @return Token
+ * @return PSCRIPT_ENGINE_TOKEN the allocated new unknown token
*/
PSCRIPT_ENGINE_TOKEN
NewUnknownToken()
@@ -61,9 +61,9 @@ NewUnknownToken()
/**
* @brief Allocates a new token with given type and value
*
- * @param Type
- * @param Value
- * @return Token
+ * @param Type the type of the token
+ * @param Value the value string of the token
+ * @return PSCRIPT_ENGINE_TOKEN the allocated new token
*/
PSCRIPT_ENGINE_TOKEN
NewToken(SCRIPT_ENGINE_TOKEN_TYPE Type, char * Value)
@@ -110,6 +110,7 @@ NewToken(SCRIPT_ENGINE_TOKEN_TYPE Type, char * Value)
* @brief Removes allocated memory of a token
*
* @param Token
+ * @return void
*/
void
RemoveToken(PSCRIPT_ENGINE_TOKEN * Token)
@@ -122,9 +123,10 @@ RemoveToken(PSCRIPT_ENGINE_TOKEN * Token)
/**
* @brief Prints token
- * @detail prints value and type of token
+ * @details prints value and type of token
*
- * @param Token
+ * @param Token the token to print
+ * @return void
*/
void
PrintToken(PSCRIPT_ENGINE_TOKEN Token)
@@ -234,7 +236,8 @@ PrintToken(PSCRIPT_ENGINE_TOKEN Token)
* @brief Appends char to the token value
*
* @param Token
- * @param char
+ * @param c the character to append
+ * @return void
*/
void
AppendByte(PSCRIPT_ENGINE_TOKEN Token, char c)
@@ -275,7 +278,8 @@ AppendByte(PSCRIPT_ENGINE_TOKEN Token, char c)
* @brief Appends wchar_t to the token value
*
* @param Token
- * @param char
+ * @param c the wide character to append
+ * @return void
*/
void
AppendWchar(PSCRIPT_ENGINE_TOKEN Token, wchar_t c)
@@ -315,7 +319,8 @@ AppendWchar(PSCRIPT_ENGINE_TOKEN Token, wchar_t c)
/**
* @brief Copies a PTOKEN
*
- * @return PTOKEN
+ * @param Token the token to copy
+ * @return PSCRIPT_ENGINE_TOKEN the copied token
*/
PSCRIPT_ENGINE_TOKEN
CopyToken(PSCRIPT_ENGINE_TOKEN Token)
@@ -351,9 +356,9 @@ CopyToken(PSCRIPT_ENGINE_TOKEN Token)
}
/**
- * allocates a new SCRIPT_ENGINE_TOKEN_LIST
+ * @brief Allocates a new SCRIPT_ENGINE_TOKEN_LIST
*
- * @return SCRIPT_ENGINE_TOKEN_LIST
+ * @return PSCRIPT_ENGINE_TOKEN_LIST the allocated token list
*/
PSCRIPT_ENGINE_TOKEN_LIST
NewTokenList(void)
@@ -391,6 +396,7 @@ NewTokenList(void)
* @brief Removes allocated memory of a SCRIPT_ENGINE_TOKEN_LIST
*
* @param TokenList
+ * @return void
*/
void
RemoveTokenList(PSCRIPT_ENGINE_TOKEN_LIST TokenList)
@@ -411,6 +417,7 @@ RemoveTokenList(PSCRIPT_ENGINE_TOKEN_LIST TokenList)
* @brief Prints each Token inside a TokenList
*
* @param TokenList
+ * @return void
*/
void
PrintTokenList(PSCRIPT_ENGINE_TOKEN_LIST TokenList)
@@ -426,9 +433,9 @@ PrintTokenList(PSCRIPT_ENGINE_TOKEN_LIST TokenList)
/**
* @brief Adds Token to the last empty position of TokenList
*
- * @param Token
- * @param TokenList
- * @return TokenList
+ * @param TokenList the token list to push into
+ * @param Token the token to add
+ * @return PSCRIPT_ENGINE_TOKEN_LIST
*/
PSCRIPT_ENGINE_TOKEN_LIST
Push(PSCRIPT_ENGINE_TOKEN_LIST TokenList, PSCRIPT_ENGINE_TOKEN Token)
@@ -489,7 +496,7 @@ Push(PSCRIPT_ENGINE_TOKEN_LIST TokenList, PSCRIPT_ENGINE_TOKEN Token)
* @brief Removes last Token of a TokenList and returns it
*
* @param TokenList
- @ @return Token
+ * @return PSCRIPT_ENGINE_TOKEN
*/
PSCRIPT_ENGINE_TOKEN
Pop(PSCRIPT_ENGINE_TOKEN_LIST TokenList)
@@ -510,7 +517,7 @@ Pop(PSCRIPT_ENGINE_TOKEN_LIST TokenList)
* @brief Returns last Token of a TokenList
*
* @param TokenList
- * @return Token
+ * @return PSCRIPT_ENGINE_TOKEN
*/
PSCRIPT_ENGINE_TOKEN
Top(PSCRIPT_ENGINE_TOKEN_LIST TokenList)
@@ -526,10 +533,11 @@ Top(PSCRIPT_ENGINE_TOKEN_LIST TokenList)
}
/**
- * @brief
+ * @brief Returns the token at a specific index from the top of the token list
*
- * @param TokenList Index
- * @return Token
+ * @param TokenList the token list to index into
+ * @param Index the zero-based index from the top
+ * @return PSCRIPT_ENGINE_TOKEN
*/
PSCRIPT_ENGINE_TOKEN
TopIndexed(PSCRIPT_ENGINE_TOKEN_LIST TokenList, int Index)
@@ -544,7 +552,7 @@ TopIndexed(PSCRIPT_ENGINE_TOKEN_LIST TokenList, int Index)
/**
* @brief Checks whether input char belongs to hexadecimal digit-set or not
*
- * @param char
+ * @param c the character to check
* @return char
*/
char
@@ -559,7 +567,7 @@ IsHex(char c)
/**
* @brief Checks whether input char belongs to decimal digit-set or not
*
- * @param char
+ * @param c the character to check
* @return char
*/
char
@@ -574,7 +582,7 @@ IsDecimal(char c)
/**
* @brief Checks whether input char belongs to alphabet set or not
*
- * @param char
+ * @param c the character to check
* @return char
*/
char
@@ -591,7 +599,7 @@ IsLetter(char c)
/**
* @brief Checks whether input char is underscore (_) or not
*
- * @param char
+ * @param c the character to check
* @return char
*/
char
@@ -608,8 +616,8 @@ IsUnderscore(char c)
/**
* @brief Checks whether input char belongs to binary digit-set or not
*
- * @param char
- * @return bool
+ * @param c the character to check
+ * @return char
*/
char
IsBinary(char c)
@@ -625,7 +633,7 @@ IsBinary(char c)
/**
* @brief Checks whether input char belongs to octal digit-set or not
*
- * @param char
+ * @param c the character to check
* @return char
*/
char
@@ -640,8 +648,8 @@ IsOctal(char c)
/**
* @brief Allocates a new temporary variable and returns it
*
- * @param Error
- * @return PTOKEN
+ * @param Error the error type pointer
+ * @return PSCRIPT_ENGINE_TOKEN
*/
PSCRIPT_ENGINE_TOKEN
NewTemp(PSCRIPT_ENGINE_ERROR_TYPE Error)
@@ -678,22 +686,23 @@ NewTemp(PSCRIPT_ENGINE_ERROR_TYPE Error)
/**
* @brief Frees the memory allocated by Temp
*
- * @param Temp
+ * @param Temp the token representing the temporary variable
+ * @return void
*/
void
FreeTemp(PSCRIPT_ENGINE_TOKEN Temp)
{
- int id = (int)DecimalToInt(Temp->Value);
+ INT Id = (INT)DecimalToInt(Temp->Value);
if (Temp->Type == TEMP || Temp->Type == DEFERENCE_TEMP)
{
- CurrentUserDefinedFunction->TempMap[id] = 0;
+ CurrentUserDefinedFunction->TempMap[Id] = 0;
}
}
/**
* @brief Checks whether this Token type is OneOpFunc1
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -713,7 +722,7 @@ IsType1Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is OneOpFunc2
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -733,7 +742,7 @@ IsType2Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is OperatorsTwoOperandList
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -753,7 +762,7 @@ IsTwoOperandOperator(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is OperatorsOneOperandList
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -773,7 +782,7 @@ IsOneOperandOperator(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is VarArgFunc1
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -793,7 +802,7 @@ IsType4Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is ZeroOpFunc1
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -813,7 +822,7 @@ IsType5Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is TwoOpFunc1
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -833,7 +842,7 @@ IsType6Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is TwoOpFunc2
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -853,7 +862,7 @@ IsType7Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is ThreeOpFunc1
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -873,7 +882,7 @@ IsType8Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is OneOpFunc3
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -893,7 +902,7 @@ IsType9Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is TwoOpFunc3
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -913,7 +922,7 @@ IsType10Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is ThreeOpFunc3
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -933,7 +942,7 @@ IsType11Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is OneOpFunc4
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -953,7 +962,7 @@ IsType12Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is TwoOpFunc4
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -973,7 +982,7 @@ IsType13Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is ThreeOpFunc2
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -993,7 +1002,7 @@ IsType14Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is ThreeOpFunc4
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -1013,7 +1022,7 @@ IsType15Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is ZeroOpFunc2
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -1033,7 +1042,7 @@ IsType16Func(PSCRIPT_ENGINE_TOKEN Operator)
/**
* @brief Checks whether this Token type is assignment operator
*
- * @param Operator
+ * @param Operator the token to check
* @return char
*/
char
@@ -1054,7 +1063,7 @@ IsAssignmentOperator(PSCRIPT_ENGINE_TOKEN Operator)
* @brief Checks whether this Token is noneterminal
* NoneTerminal token starts with capital letter
*
- * @param Token
+ * @param Token the token to check
* @return char
*/
char
@@ -1070,7 +1079,7 @@ IsNoneTerminal(PSCRIPT_ENGINE_TOKEN Token)
* @brief Checks whether this Token is semantic rule
* SemanticRule token starts with '@'
*
- * @param Token
+ * @param Token the token to check
* @return char
*/
char
@@ -1085,8 +1094,8 @@ IsSemanticRule(PSCRIPT_ENGINE_TOKEN Token)
/**
* @brief Gets the Non Terminal Id object
*
- * @param Token
- * @return int
+ * @param Token the token to get the non-terminal ID of
+ * @return int the non-terminal ID or INVALID
*/
int
GetNonTerminalId(PSCRIPT_ENGINE_TOKEN Token)
@@ -1102,8 +1111,8 @@ GetNonTerminalId(PSCRIPT_ENGINE_TOKEN Token)
/**
* @brief Gets the Terminal Id object
*
- * @param Token
- * @return int
+ * @param Token the token to get the terminal ID of
+ * @return int the terminal ID or INVALID
*/
int
GetTerminalId(PSCRIPT_ENGINE_TOKEN Token)
@@ -1211,8 +1220,8 @@ GetTerminalId(PSCRIPT_ENGINE_TOKEN Token)
/**
* @brief Gets the Non Terminal Id object
*
- * @param Token
- * @return int
+ * @param Token the token to get the non-terminal ID of
+ * @return int the non-terminal ID or INVALID
*/
int
LalrGetNonTerminalId(PSCRIPT_ENGINE_TOKEN Token)
@@ -1228,8 +1237,8 @@ LalrGetNonTerminalId(PSCRIPT_ENGINE_TOKEN Token)
/**
* @brief Gets the Terminal Id object
*
- * @param Token
- * @return int
+ * @param Token the token to get the terminal ID of
+ * @return int the terminal ID or INVALID
*/
int
LalrGetTerminalId(PSCRIPT_ENGINE_TOKEN Token)
@@ -1330,8 +1339,8 @@ LalrGetTerminalId(PSCRIPT_ENGINE_TOKEN Token)
/**
* @brief Checks whether the value and type of Token1 and Token2 are the same
*
- * @param Token1
- * @param Token2
+ * @param Token1 the first token to compare
+ * @param Token2 the second token to compare
* @return char
*/
char
@@ -1377,6 +1386,7 @@ IsEqual(const PSCRIPT_ENGINE_TOKEN Token1, const PSCRIPT_ENGINE_TOKEN Token2)
*
* @param Val
* @param Type
+ * @return void
*/
void
SetType(unsigned long long * Val, unsigned char Type)
@@ -1387,14 +1397,14 @@ SetType(unsigned long long * Val, unsigned char Type)
/**
* @brief Converts an decimal string to a integer
*
- * @param str
+ * @param str the decimal string to convert
* @return unsigned long long int
*/
unsigned long long
DecimalToInt(char * str)
{
unsigned long long Acc = 0;
- size_t Len;
+ SIZE_T Len;
Len = strlen(str);
for (int i = 0; i < Len; i++)
@@ -1408,14 +1418,14 @@ DecimalToInt(char * str)
/**
* @brief Converts an decimal string to a signed integer
*
- * @param str
+ * @param str the decimal string to convert
* @return unsigned long long
*/
unsigned long long
DecimalToSignedInt(char * str)
{
long long Acc = 0;
- size_t Len;
+ SIZE_T Len;
if (str[0] == '-')
{
@@ -1442,31 +1452,31 @@ DecimalToSignedInt(char * str)
/**
* @brief Converts an hexadecimal string to integer
*
- * @param str
+ * @param str the hexadecimal string to convert
* @return unsigned long long
*/
unsigned long long
HexToInt(char * str)
{
- char temp;
- size_t len = strlen(str);
+ CHAR Temp;
+ SIZE_T Len = strlen(str);
unsigned long long Acc = 0;
- for (int i = 0; i < len; i++)
+ for (int i = 0; i < Len; i++)
{
Acc <<= 4;
if (str[i] >= '0' && str[i] <= '9')
{
- temp = str[i] - '0';
+ Temp = str[i] - '0';
}
else if (str[i] >= 'a' && str[i] <= 'f')
{
- temp = str[i] - 'a' + 10;
+ Temp = str[i] - 'a' + 10;
}
else
{
- temp = str[i] - 'A' + 10;
+ Temp = str[i] - 'A' + 10;
}
- Acc += temp;
+ Acc += Temp;
}
return Acc;
@@ -1475,13 +1485,13 @@ HexToInt(char * str)
/**
* @brief Converts an octal string to integer
*
- * @param str
+ * @param str the octal string to convert
* @return unsigned long long
*/
unsigned long long
OctalToInt(char * str)
{
- size_t Len;
+ SIZE_T Len;
unsigned long long Acc = 0;
Len = strlen(str);
@@ -1497,13 +1507,13 @@ OctalToInt(char * str)
/**
* @brief Converts a binary string to integer
*
- * @param str
+ * @param str the binary string to convert
* @return unsigned long long
*/
unsigned long long
BinaryToInt(char * str)
{
- size_t Len;
+ SIZE_T Len;
unsigned long long Acc = 0;
Len = strlen(str);
@@ -1519,16 +1529,17 @@ BinaryToInt(char * str)
/**
* @brief Rotate a character array to the left by one time
*
- * @param str
+ * @param str the string to rotate
+ * @return void
*/
void
RotateLeftStringOnce(char * str)
{
- int length = (int)strlen(str);
- char temp = str[0];
- for (int i = 0; i < (length - 1); i++)
+ INT Length = (INT)strlen(str);
+ CHAR Temp = str[0];
+ for (int i = 0; i < (Length - 1); i++)
{
str[i] = str[i + 1];
}
- str[length - 1] = temp;
+ str[Length - 1] = Temp;
}
diff --git a/hyperdbg/script-engine/code/scanner.c b/hyperdbg/script-engine/code/scanner.c
index e600e112..4e3ea139 100644
--- a/hyperdbg/script-engine/code/scanner.c
+++ b/hyperdbg/script-engine/code/scanner.c
@@ -16,7 +16,7 @@
*
* @param c
* @param str
- * @return PTOKEN
+ * @return PSCRIPT_ENGINE_TOKEN
*/
PSCRIPT_ENGINE_TOKEN
GetToken(char * c, char * str)
@@ -51,16 +51,16 @@ GetToken(char * c, char * str)
else if (*c == 'x')
{
char ByteString[] = "000";
- int len = (int)strlen(ByteString);
+ INT Len = (INT)strlen(ByteString);
int i = 0;
- for (; i < len; i++)
+ for (; i < Len; i++)
{
*c = sgetc(str);
if (!IsHex(*c))
break;
RotateLeftStringOnce(ByteString);
- ByteString[len - 1] = *c;
+ ByteString[Len - 1] = *c;
}
if (i == 0 || i == 3)
@@ -72,8 +72,8 @@ GetToken(char * c, char * str)
else
{
InputIdx--;
- char num = (char)strtol(ByteString, NULL, 16);
- AppendByte(Token, num);
+ CHAR Num = (CHAR)strtol(ByteString, NULL, 16);
+ AppendByte(Token, Num);
}
}
else if (*c == '"')
@@ -501,32 +501,32 @@ GetToken(char * c, char * str)
}
if (WasFound)
- {
- RemoveToken(&Token);
- char str[20] = {0};
- sprintf(str, "%llx", Address);
- Token = NewToken(HEX, str);
- }
- else
- {
- if (HasBang)
- {
- Token->Type = UNKNOWN;
- return Token;
- }
- else
- {
- if (GetGlobalIdentifierVal(Token) != -1)
{
- Token->Type = GLOBAL_ID;
- Token->VariableType = GetGlobalIdentifierVariableType(Token);
+ RemoveToken(&Token);
+ char HexStr[20] = {0};
+ sprintf(HexStr, "%llx", Address);
+ Token = NewToken(HEX, HexStr);
}
else
{
- Token->Type = GLOBAL_UNRESOLVED_ID;
+ if (HasBang)
+ {
+ Token->Type = UNKNOWN;
+ return Token;
+ }
+ else
+ {
+ if (GetGlobalIdentifierVal(Token) != -1)
+ {
+ Token->Type = GLOBAL_ID;
+ Token->VariableType = GetGlobalIdentifierVariableType(Token);
+ }
+ else
+ {
+ Token->Type = GLOBAL_UNRESOLVED_ID;
+ }
+ }
}
- }
- }
}
else
{
@@ -662,16 +662,16 @@ GetToken(char * c, char * str)
else if (*c == 'x')
{
char ByteString[] = "00000";
- int len = (int)strlen(ByteString);
+ INT Len = (INT)strlen(ByteString);
int i = 0;
- for (; i < len; i++)
+ for (; i < Len; i++)
{
*c = sgetc(str);
if (!IsHex(*c))
break;
RotateLeftStringOnce(ByteString);
- ByteString[len - 1] = *c;
+ ByteString[Len - 1] = *c;
}
if (i == 0 || i == 5)
@@ -683,8 +683,8 @@ GetToken(char * c, char * str)
else
{
InputIdx--;
- wchar_t num = (wchar_t)strtol(ByteString, NULL, 16);
- AppendWchar(Token, num);
+ WCHAR Num = (WCHAR)strtol(ByteString, NULL, 16);
+ AppendWchar(Token, Num);
}
}
else if (*c == '"')
@@ -729,7 +729,7 @@ GetToken(char * c, char * str)
}
else if ((*c >= 'a' && *c <= 'f') || (*c >= 'A' && *c <= 'F') || (*c == '_') || (*c == '!'))
{
- uint8_t NotHex = 0;
+ UINT8 NotHex = 0;
do
{
if (*c != '`')
@@ -847,9 +847,9 @@ GetToken(char * c, char * str)
if (WasFound)
{
RemoveToken(&Token);
- char str[20] = {0};
- sprintf(str, "%llx", Address);
- Token = NewToken(HEX, str);
+ char HexStr[20] = {0};
+ sprintf(HexStr, "%llx", Address);
+ Token = NewToken(HEX, HexStr);
}
else
{
@@ -922,9 +922,9 @@ GetToken(char * c, char * str)
if (WasFound)
{
RemoveToken(&Token);
- char str[20] = {0};
- sprintf(str, "%llx", Address);
- Token = NewToken(HEX, str);
+ char HexStr[20] = {0};
+ sprintf(HexStr, "%llx", Address);
+ Token = NewToken(HEX, HexStr);
}
else
{
@@ -970,7 +970,7 @@ GetToken(char * c, char * str)
*
* @param str
* @param c
- * @return PTOKEN
+ * @return PSCRIPT_ENGINE_TOKEN
*/
PSCRIPT_ENGINE_TOKEN
Scan(char * str, char * c)
@@ -1033,10 +1033,10 @@ Scan(char * str, char * c)
}
/**
- * @brief returns last character of string
+ * @brief Returns the next character in the input string
*
* @param str
- * @return last character
+ * @return CHAR the next character at the current position in the string
*/
char
sgetc(char * str)
@@ -1118,7 +1118,7 @@ IsVariableType(char * str)
}
/**
- * @brief eck if string is Id or not
+ * @brief Check if string is Id or not
*
* @param str
* @return char
diff --git a/hyperdbg/script-engine/code/script-engine.c b/hyperdbg/script-engine/code/script-engine.c
index 71dd9840..cb461888 100644
--- a/hyperdbg/script-engine/code/script-engine.c
+++ b/hyperdbg/script-engine/code/script-engine.c
@@ -44,10 +44,10 @@ ShowMessages(const char * Fmt, ...)
{
char TempMessage[COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT] = {0};
va_start(ArgList, Fmt);
- int sprintfresult = vsprintf_s(TempMessage, COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT, Fmt, ArgList);
+ INT SprintfResult = vsprintf_s(TempMessage, COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT, Fmt, ArgList);
va_end(ArgList);
- if (sprintfresult != -1)
+ if (SprintfResult != -1)
{
//
// There is another handler
@@ -213,7 +213,7 @@ ScriptEngineCreateSymbolTableForDisassembler(void * CallbackFunction)
* @return BOOLEAN
*/
BOOLEAN
-ScriptEngineConvertFileToPdbPath(const char * LocalFilePath, char * ResultPath, size_t ResultPathSize)
+ScriptEngineConvertFileToPdbPath(const char * LocalFilePath, char * ResultPath, SIZE_T ResultPathSize)
{
//
// A wrapper for pdb to path converter
@@ -328,7 +328,7 @@ ScriptEngineParse(char * str)
SCRIPT_ENGINE_ERROR_TYPE Error = SCRIPT_ENGINE_ERROR_FREE;
char * ErrorMessage = NULL;
- static FirstCall = 1;
+ static INT FirstCall = 1;
if (FirstCall)
{
GlobalIdTable = NewTokenList();
@@ -340,7 +340,7 @@ ScriptEngineParse(char * str)
int NonTerminalId;
int TerminalId;
int RuleId;
- char c;
+ CHAR C;
BOOL WaitForWaitStatementBooleanExpression = FALSE;
//
@@ -363,9 +363,9 @@ ScriptEngineParse(char * str)
Push(Stack, EndToken);
Push(Stack, StartToken);
- c = sgetc(ScriptSource);
+ C = sgetc(ScriptSource);
- PSCRIPT_ENGINE_TOKEN CurrentIn = Scan(ScriptSource, &c);
+ PSCRIPT_ENGINE_TOKEN CurrentIn = Scan(ScriptSource, &C);
if (CurrentIn->Type == UNKNOWN)
{
Error = SCRIPT_ENGINE_ERROR_SYNTAX;
@@ -424,14 +424,14 @@ ScriptEngineParse(char * str)
{
UINT64 BooleanExpressionSize = BooleanExpressionExtractEnd(ScriptSource, &WaitForWaitStatementBooleanExpression, CurrentIn);
- ScriptEngineBooleanExpresssionParse(BooleanExpressionSize, CurrentIn, MatchedStack, CodeBuffer, ScriptSource, &c, &Error);
+ ScriptEngineBooleanExpresssionParse(BooleanExpressionSize, CurrentIn, MatchedStack, CodeBuffer, ScriptSource, &C, &Error);
if (Error != SCRIPT_ENGINE_ERROR_FREE)
{
break;
}
RemoveToken(&CurrentIn);
- CurrentIn = Scan(ScriptSource, &c);
+ CurrentIn = Scan(ScriptSource, &C);
if (CurrentIn->Type == UNKNOWN)
{
Error = SCRIPT_ENGINE_ERROR_UNKNOWN_TOKEN;
@@ -439,7 +439,7 @@ ScriptEngineParse(char * str)
}
RemoveToken(&CurrentIn);
- CurrentIn = Scan(ScriptSource, &c);
+ CurrentIn = Scan(ScriptSource, &C);
if (CurrentIn->Type == UNKNOWN)
{
Error = SCRIPT_ENGINE_ERROR_UNKNOWN_TOKEN;
@@ -495,7 +495,7 @@ ScriptEngineParse(char * str)
Push(MatchedStack, CurrentIn);
- CurrentIn = Scan(ScriptSource, &c);
+ CurrentIn = Scan(ScriptSource, &C);
if (CurrentIn->Type == UNKNOWN)
{
Error = SCRIPT_ENGINE_ERROR_SYNTAX;
@@ -526,7 +526,7 @@ ScriptEngineParse(char * str)
else
{
RemoveToken(&CurrentIn);
- CurrentIn = Scan(ScriptSource, &c);
+ CurrentIn = Scan(ScriptSource, &C);
if (CurrentIn->Type == UNKNOWN)
{
@@ -669,6 +669,8 @@ ScriptEngineParse(char * str)
* @param CodeBuffer
* @param Operator
* @param Error
+ * @param ScriptSource the script source string
+ * @return VOID
*/
void
CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRIPT_ENGINE_TOKEN Operator, PSCRIPT_ENGINE_ERROR_TYPE Error, char ** ScriptSource)
@@ -1630,7 +1632,7 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
TokenArray[TokenCount++] = Temp;
}
- for (size_t i = 0; i < TokenCount / 2; i++)
+ for (SIZE_T i = 0; i < TokenCount / 2; i++)
{
PSCRIPT_ENGINE_TOKEN tmp = TokenArray[i];
TokenArray[i] = TokenArray[TokenCount - i - 1];
@@ -3495,7 +3497,7 @@ ScriptEngineBooleanExpresssionParse(
int InputPointer = 0;
int RhsSize = 0;
unsigned int InputIdxTemp;
- char Ctemp;
+ CHAR CTemp;
while (1)
{
@@ -3540,13 +3542,13 @@ ScriptEngineBooleanExpresssionParse(
Push(Stack, State);
InputIdxTemp = InputIdx;
- Ctemp = *c;
+ CTemp = *c;
CurrentIn = Scan(str, c);
if (InputIdx - 1 > BooleanExpressionSize)
{
InputIdx = InputIdxTemp;
- *c = Ctemp;
+ *c = CTemp;
RemoveToken(&CurrentIn);
@@ -4057,8 +4059,8 @@ PrintSymbolBuffer(const PVOID SymbolBuffer)
PrintSymbol((PVOID)Symbol);
if (Symbol->Type == SYMBOL_STRING_TYPE || Symbol->Type == SYMBOL_WSTRING_TYPE)
{
- int temp = GetSymbolHeapSize(Symbol);
- i += temp;
+ INT Temp = GetSymbolHeapSize(Symbol);
+ i += Temp;
}
else
{
@@ -4508,7 +4510,7 @@ GetFunctionParameterIdentifier(PSCRIPT_ENGINE_TOKEN Token)
* @brief
*
* @param Token
- * @return bool
+ * @return PUSER_DEFINED_FUNCTION_NODE
*/
PUSER_DEFINED_FUNCTION_NODE
GetUserDefinedFunctionNode(PSCRIPT_ENGINE_TOKEN Token)
diff --git a/hyperdbg/script-engine/code/type.c b/hyperdbg/script-engine/code/type.c
index 52378b37..787ee229 100644
--- a/hyperdbg/script-engine/code/type.c
+++ b/hyperdbg/script-engine/code/type.c
@@ -1,3 +1,15 @@
+/**
+ * @file type.c
+ * @author M.H. Gholamrezaei (mh@hyperdbg.org)
+ *
+ * @brief Routines for handling variable types
+ * @details
+ * @version 0.1
+ * @date 2020-10-22
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
#include "pch.h"
VARIABLE_TYPE * VARIABLE_TYPE_UNKNOWN = &(VARIABLE_TYPE) {TY_UNKNOWN};
@@ -20,9 +32,10 @@ VARIABLE_TYPE * VARIABLE_TYPE_DOUBLE = &(VARIABLE_TYPE) {TY_DOUBLE, 8, 8};
VARIABLE_TYPE * VARIABLE_TYPE_LDOUBLE = &(VARIABLE_TYPE) {TY_LDOUBLE, 16, 16};
/**
- * @brief Return a variable type
+ * @brief Return a variable type based on the token stack
*
- * @param str
+ * @param PtokenStack the token stack containing type tokens
+ * @return VARIABLE_TYPE * pointer to the resolved variable type
*/
VARIABLE_TYPE *
HandleType(PSCRIPT_ENGINE_TOKEN_LIST PtokenStack)
@@ -164,6 +177,13 @@ HandleType(PSCRIPT_ENGINE_TOKEN_LIST PtokenStack)
return Result;
}
+/**
+ * @brief Returns the common variable type between two types
+ *
+ * @param Ty1 the first variable type
+ * @param Ty2 the second variable type
+ * @return VARIABLE_TYPE * pointer to the common variable type
+ */
VARIABLE_TYPE *
GetCommonVariableType(VARIABLE_TYPE * Ty1, VARIABLE_TYPE * Ty2)
{
diff --git a/hyperdbg/script-engine/header/common.h b/hyperdbg/script-engine/header/common.h
index e69de981..03d254e6 100644
--- a/hyperdbg/script-engine/header/common.h
+++ b/hyperdbg/script-engine/header/common.h
@@ -96,16 +96,16 @@ NewUnknownToken(void);
PSCRIPT_ENGINE_TOKEN
NewToken(SCRIPT_ENGINE_TOKEN_TYPE Type, char * Value);
-void
+VOID
RemoveToken(PSCRIPT_ENGINE_TOKEN * Token);
-void
+VOID
PrintToken(PSCRIPT_ENGINE_TOKEN Token);
-void
-AppendByte(PSCRIPT_ENGINE_TOKEN Token, char c);
+VOID
+AppendByte(PSCRIPT_ENGINE_TOKEN Token, CHAR c);
-void
+VOID
AppendWchar(PSCRIPT_ENGINE_TOKEN Token, wchar_t c);
PSCRIPT_ENGINE_TOKEN
@@ -114,8 +114,8 @@ CopyToken(PSCRIPT_ENGINE_TOKEN Token);
PSCRIPT_ENGINE_TOKEN
NewTemp(PSCRIPT_ENGINE_ERROR_TYPE);
-void
- FreeTemp(PSCRIPT_ENGINE_ERROR_TYPE);
+VOID
+ FreeTemp(PSCRIPT_ENGINE_TOKEN Temp);
VARIABLE_TYPE *
HandleType(PSCRIPT_ENGINE_TOKEN_LIST PtokenStack);
@@ -130,10 +130,10 @@ GetCommonVariableType(VARIABLE_TYPE * Ty1, VARIABLE_TYPE * Ty2);
PSCRIPT_ENGINE_TOKEN_LIST
NewTokenList(void);
-void
+VOID
RemoveTokenList(PSCRIPT_ENGINE_TOKEN_LIST TokenList);
-void
+VOID
PrintTokenList(PSCRIPT_ENGINE_TOKEN_LIST TokenList);
PSCRIPT_ENGINE_TOKEN_LIST
@@ -191,7 +191,7 @@ IsBinary(char c);
char
IsOctal(char c);
-void
+VOID
SetType(unsigned long long * Val, unsigned char Type);
unsigned long long
@@ -209,7 +209,7 @@ OctalToInt(char * str);
unsigned long long
BinaryToInt(char * str);
-void
+VOID
RotateLeftStringOnce(char * str);
////////////////////////////////////////////////////
@@ -271,7 +271,7 @@ char
IsOneOperandOperator(PSCRIPT_ENGINE_TOKEN Operator);
/**
- *
+ * @brief User-defined function linked list node
*/
typedef struct _USER_DEFINED_FUNCTION_NODE
{
@@ -288,7 +288,7 @@ typedef struct _USER_DEFINED_FUNCTION_NODE
} USER_DEFINED_FUNCTION_NODE, *PUSER_DEFINED_FUNCTION_NODE;
/**
- *
+ * @brief Include file linked list node
*/
typedef struct _INCLUDE_NODE
{
diff --git a/hyperdbg/script-engine/header/globals.h b/hyperdbg/script-engine/header/globals.h
index 7de42324..846ced28 100644
--- a/hyperdbg/script-engine/header/globals.h
+++ b/hyperdbg/script-engine/header/globals.h
@@ -12,7 +12,7 @@
#pragma once
#ifndef GLOBALS_H
-# define GLOABLS_H
+# define GLOBALS_H
# define MAX_TEMP_COUNT 128
#endif // !GLOBALS_H
diff --git a/hyperdbg/script-engine/header/type.h b/hyperdbg/script-engine/header/type.h
index 2e7c1f8b..fa2ac3e6 100644
--- a/hyperdbg/script-engine/header/type.h
+++ b/hyperdbg/script-engine/header/type.h
@@ -1,9 +1,21 @@
+/**
+ * @file type.h
+ * @author M.H. Gholamrezaei (mh@hyperdbg.org)
+ *
+ * @brief Variable type definitions for the script engine
+ * @details
+ * @version 0.1
+ * @date 2020-10-22
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
#pragma once
#ifndef TYPE_H
# define TYPE_H
-typedef enum
+typedef enum _VARIABLE_TYPE_KIND
{
TY_UNKNOWN,
TY_VOID,
@@ -24,15 +36,15 @@ typedef enum
TY_UNION,
} VARIABLE_TYPE_KIND;
-typedef struct VARIABLE_TYPE
+typedef struct _VARIABLE_TYPE
{
- VARIABLE_TYPE_KIND Kind;
- int Size; // sizeof() value
- int Align; // alignment
- BOOLEAN IsUnsigned;
- struct VARIABLE_TYPE * Base;
- int ArrayLen;
-} VARIABLE_TYPE;
+ VARIABLE_TYPE_KIND Kind;
+ int Size; // sizeof() value
+ int Align; // alignment
+ BOOLEAN IsUnsigned;
+ struct _VARIABLE_TYPE * Base;
+ int ArrayLen;
+} VARIABLE_TYPE, *PVARIABLE_TYPE;
extern VARIABLE_TYPE * VARIABLE_TYPE_UNKNOWN;
diff --git a/hyperdbg/script-engine/script_include.c b/hyperdbg/script-engine/script_include.c
index 150aab1b..f24d57ef 100644
--- a/hyperdbg/script-engine/script_include.c
+++ b/hyperdbg/script-engine/script_include.c
@@ -1,72 +1,123 @@
+/**
+ * @file script_include.c
+ * @author M.H. Gholamrezaei (mh@hyperdbg.org)
+ *
+ * @brief Include file path resolution and parsing routines
+ * @details
+ * @version 0.1
+ * @date 2020-10-22
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
#include "pch.h"
#include "script_include.h"
-static void
-Ltrim(char * s)
+/**
+ * @brief Trims leading whitespace from a string in-place
+ *
+ * @param Str the string to left-trim
+ * @return VOID
+ */
+static VOID
+Ltrim(char * Str)
{
- char * p = s;
+ char * P = Str;
- while (*p && isspace((unsigned char)*p))
- p++;
+ while (*P && isspace((unsigned char)*P))
+ P++;
- if (p != s)
- memmove(s, p, strlen(p) + 1);
+ if (P != Str)
+ memmove(Str, P, strlen(P) + 1);
}
-static void
-Rtrim(char * s)
+/**
+ * @brief Trims trailing whitespace from a string in-place
+ *
+ * @param Str the string to right-trim
+ * @return VOID
+ */
+static VOID
+Rtrim(char * Str)
{
- char * end = s + strlen(s);
+ char * End = Str + strlen(Str);
- while (end > s && isspace((unsigned char)end[-1]))
- end--;
+ while (End > Str && isspace((unsigned char)End[-1]))
+ End--;
- *end = '\0';
+ *End = '\0';
}
-static void
-Trim(char * s)
+/**
+ * @brief Trims leading and trailing whitespace from a string in-place
+ *
+ * @param Str the string to trim
+ * @return VOID
+ */
+static VOID
+Trim(char * Str)
{
- Ltrim(s);
- Rtrim(s);
+ Ltrim(Str);
+ Rtrim(Str);
}
+/**
+ * @brief Inserts a string into another string at a given index
+ *
+ * @param Str the original string (will be reallocated)
+ * @param InputIdx the index at which to insert
+ * @param Buf the string to insert
+ * @return char * the new string, or the original on allocation failure
+ */
char *
-InsertStrNew(char * str, int InputIdx, const char * buf)
+InsertStrNew(char * Str, int InputIdx, const char * Buf)
{
- size_t len_str = strlen(str);
- size_t len_buf = strlen(buf);
+ SIZE_T LenStr = strlen(Str);
+ SIZE_T LenBuf = strlen(Buf);
- if (InputIdx < 0 || InputIdx > len_str)
- return str;
+ if (InputIdx < 0 || (SIZE_T)InputIdx > LenStr)
+ return Str;
- char * newstr = realloc(str, len_str + len_buf + 1);
- if (!newstr)
- return str;
+ char * NewStr = (char *)realloc(Str, LenStr + LenBuf + 1);
+ if (!NewStr)
+ return Str;
- memmove(newstr + InputIdx + len_buf,
- newstr + InputIdx,
- len_str - InputIdx + 1);
+ memmove(NewStr + InputIdx + LenBuf,
+ NewStr + InputIdx,
+ LenStr - InputIdx + 1);
- memcpy(newstr + InputIdx, buf, len_buf);
+ memcpy(NewStr + InputIdx, Buf, LenBuf);
- return newstr;
+ return NewStr;
}
+/**
+ * @brief Checks whether a file path is absolute
+ *
+ * @param Path the file path to check
+ * @return BOOLEAN TRUE if the path is absolute, FALSE otherwise
+ */
BOOLEAN
-IsAbsolutePath(const char * path)
+IsAbsolutePath(const char * Path)
{
- if (!path || !path[0])
+ if (!Path || !Path[0])
return FALSE;
- if (strlen(path) >= 3 &&
- ((path[1] == ':' && (path[2] == '\\' || path[2] == '/'))))
+ if (strlen(Path) >= 3 &&
+ ((Path[1] == ':' && (Path[2] == '\\' || Path[2] == '/'))))
return TRUE;
return FALSE;
}
-void
+/**
+ * @brief Resolves an include file path to a full absolute path
+ *
+ * @param IncludeFilePath the include file path (relative or absolute)
+ * @param OutPath the buffer to receive the resolved path
+ * @return VOID
+ */
+VOID
ResolveIncludePath(const char * IncludeFilePath, char * OutPath)
{
if (IsAbsolutePath(IncludeFilePath))
@@ -76,12 +127,12 @@ ResolveIncludePath(const char * IncludeFilePath, char * OutPath)
return;
}
- char ExeDir[MAX_PATH_LEN];
+ CHAR ExeDir[MAX_PATH_LEN];
GetModuleFileNameA(NULL, ExeDir, MAX_PATH_LEN);
- char * p = strrchr(ExeDir, '\\');
- if (p)
- *p = '\0';
+ char * P = strrchr(ExeDir, '\\');
+ if (P)
+ *P = '\0';
snprintf(
OutPath,
@@ -91,41 +142,54 @@ ResolveIncludePath(const char * IncludeFilePath, char * OutPath)
IncludeFilePath);
}
+/**
+ * @brief Checks whether a file exists at the given path
+ *
+ * @param Path the file path to check
+ * @return BOOLEAN TRUE if the file exists, FALSE otherwise
+ */
BOOLEAN
-FileExists(const char * path)
+FileExists(const char * Path)
{
- DWORD attr = GetFileAttributesA(path);
+ DWORD Attr = GetFileAttributesA(Path);
- if (attr == INVALID_FILE_ATTRIBUTES)
+ if (Attr == INVALID_FILE_ATTRIBUTES)
return FALSE;
- if (attr & FILE_ATTRIBUTE_DIRECTORY)
+ if (Attr & FILE_ATTRIBUTE_DIRECTORY)
return FALSE;
return TRUE;
}
+/**
+ * @brief Reads and parses an include file into a buffer
+ *
+ * @param IncludeFile the path to the include file
+ * @param Buffer pointer to receive the allocated file content buffer
+ * @return BOOLEAN TRUE if the file was parsed successfully, FALSE otherwise
+ */
BOOLEAN
ParseIncludeFile(char * IncludeFile, char ** Buffer)
{
- FILE * fp = fopen(IncludeFile, "r");
- fseek(fp, 0, SEEK_END);
- long size = ftell(fp);
- rewind(fp);
- *Buffer = calloc(size + 1, 1);
- fread(*Buffer, 1, size, fp);
- (*Buffer)[size] = '\0';
+ FILE * Fp = fopen(IncludeFile, "r");
+ fseek(Fp, 0, SEEK_END);
+ LONG Size = ftell(Fp);
+ rewind(Fp);
+ *Buffer = calloc(Size + 1, 1);
+ fread(*Buffer, 1, Size, Fp);
+ (*Buffer)[Size] = '\0';
Trim(*Buffer);
- size_t len = strlen(*Buffer);
+ SIZE_T Len = strlen(*Buffer);
if ((*Buffer)[0] == '?' &&
(*Buffer)[1] == ' ' &&
(*Buffer)[2] == '{' &&
- (*Buffer)[len - 1] == '}')
+ (*Buffer)[Len - 1] == '}')
{
memmove(
*Buffer,
*Buffer + 3,
- len - 3 + 1);
+ Len - 3 + 1);
(*Buffer)[strlen(*Buffer) - 1] = '\0';
diff --git a/hyperdbg/script-engine/script_include.h b/hyperdbg/script-engine/script_include.h
index 887cf3ee..771fec8f 100644
--- a/hyperdbg/script-engine/script_include.h
+++ b/hyperdbg/script-engine/script_include.h
@@ -1,13 +1,27 @@
+/**
+ * @file script_include.h
+ * @author M.H. Gholamrezaei (mh@hyperdbg.org)
+ *
+ * @brief Include file resolver declarations
+ * @details
+ * @version 0.1
+ * @date 2020-10-22
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
#define MAX_PATH_LEN 1024
-void
+VOID
ResolveIncludePath(const char * IncludeFilePath, char * OutPath);
BOOLEAN
-FileExists(const char * path);
+FileExists(const char * Path);
BOOLEAN
ParseIncludeFile(char * IncludeFile, char ** Buffer);
-char*
-InsertStrNew(char* str, int InputIdx, const char* buf);
\ No newline at end of file
+char *
+InsertStrNew(char * Str, int InputIdx, const char * Buf);
\ No newline at end of file
diff --git a/hyperdbg/script-eval/header/ScriptEngineHeader.h b/hyperdbg/script-eval/header/ScriptEngineHeader.h
index f5bcf7e6..9f6ad5cb 100644
--- a/hyperdbg/script-eval/header/ScriptEngineHeader.h
+++ b/hyperdbg/script-eval/header/ScriptEngineHeader.h
@@ -39,11 +39,5 @@ ScriptEngineExecute(PGUEST_REGS GuestRegs,
UINT64 * Indx,
SYMBOL * ErrorOperator);
-UINT64
-GetRegValue(PGUEST_REGS GuestRegs, REGS_ENUM RegId);
-
-VOID
-ScriptEngineGetOperatorName(PSYMBOL OperatorSymbol, CHAR * BufferForName);
-
VOID
ScriptEngineGetOperatorName(PSYMBOL OperatorSymbol, CHAR * BufferForName);
diff --git a/hyperdbg/symbol-parser/code/common-utils.cpp b/hyperdbg/symbol-parser/code/common-utils.cpp
index 815fe124..f9a20ac1 100644
--- a/hyperdbg/symbol-parser/code/common-utils.cpp
+++ b/hyperdbg/symbol-parser/code/common-utils.cpp
@@ -53,7 +53,7 @@ IsDirExists(const std::string & DirPath)
BOOLEAN
CreateDirectoryRecursive(const std::string & Path)
{
- size_t Pos = 0;
+ SIZE_T Pos = 0;
do
{
Pos = Path.find_first_of("\\/", Pos + 1);
@@ -70,36 +70,37 @@ CreateDirectoryRecursive(const std::string & Path)
/**
* @brief Split path and arguments and handle strings between quotes
*
- * @param Qargs
- * @param Command
+ * @param Qargs the vector to store the result of split
+ * @param Command the command string to split
* @return VOID
*/
VOID
SplitPathAndArgs(std::vector & Qargs, const std::string & Command)
{
- int Len = (int)Command.length();
- bool Qot = false, Sqot = false;
+ int Len = (int)Command.length();
+ BOOLEAN Qot = FALSE;
+ BOOLEAN Sqot = FALSE;
int ArgLen;
for (int i = 0; i < Len; i++)
{
- int start = i;
+ INT Start = i;
if (Command[i] == '\"')
{
- Qot = true;
+ Qot = TRUE;
}
else if (Command[i] == '\'')
- Sqot = true;
+ Sqot = TRUE;
if (Qot)
{
i++;
- start++;
+ Start++;
while (i < Len && Command[i] != '\"')
i++;
if (i < Len)
- Qot = false;
- ArgLen = i - start;
+ Qot = FALSE;
+ ArgLen = i - Start;
i++;
}
else if (Sqot)
@@ -108,18 +109,18 @@ SplitPathAndArgs(std::vector & Qargs, const std::string & Command)
while (i < Len && Command[i] != '\'')
i++;
if (i < Len)
- Sqot = false;
- ArgLen = i - start;
+ Sqot = FALSE;
+ ArgLen = i - Start;
i++;
}
else
{
while (i < Len && Command[i] != ' ')
i++;
- ArgLen = i - start;
+ ArgLen = i - Start;
}
- string Temp = Command.substr(start, ArgLen);
+ string Temp = Command.substr(Start, ArgLen);
if (!Temp.empty() && Temp != " ")
{
Qargs.push_back(Temp);
@@ -149,21 +150,21 @@ SplitPathAndArgs(std::vector & Qargs, const std::string & Command)
const std::vector
Split(const std::string & s, const char & c)
{
- string buff {""};
- vector v;
+ string Buff {""};
+ vector V;
for (auto n : s)
{
if (n != c)
- buff += n;
- else if (n == c && !buff.empty())
+ Buff += n;
+ else if (n == c && !Buff.empty())
{
- v.push_back(buff);
- buff.clear();
+ V.push_back(Buff);
+ Buff.clear();
}
}
- if (!buff.empty())
- v.push_back(buff);
+ if (!Buff.empty())
+ V.push_back(Buff);
- return v;
+ return V;
}
diff --git a/hyperdbg/symbol-parser/code/symbol-parser.cpp b/hyperdbg/symbol-parser/code/symbol-parser.cpp
index 4cf0421d..bf5c12e5 100644
--- a/hyperdbg/symbol-parser/code/symbol-parser.cpp
+++ b/hyperdbg/symbol-parser/code/symbol-parser.cpp
@@ -60,10 +60,10 @@ ShowMessages(const char * Fmt, ...)
{
char TempMessage[COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT] = {0};
va_start(ArgList, Fmt);
- int sprintfresult = vsprintf_s(TempMessage, Fmt, ArgList);
+ INT SprintfResult = vsprintf_s(TempMessage, Fmt, ArgList);
va_end(ArgList);
- if (sprintfresult != -1)
+ if (SprintfResult != -1)
{
//
// There is another handler
@@ -75,7 +75,8 @@ ShowMessages(const char * Fmt, ...)
/**
* @brief Interpret and find module base, based on module name
- * @param SearchMask
+ * @param SearchMask the search mask to find module
+ * @param SetModuleNameGlobally whether to set module name globally
*
* @return PSYMBOL_LOADED_MODULE_DETAILS NULL means error or not found,
* otherwise it returns the instance of loaded module based on search mask
@@ -85,8 +86,8 @@ SymGetModuleBaseFromSearchMask(const char * SearchMask, BOOLEAN SetModuleNameGlo
{
string Token;
char ModuleName[_MAX_FNAME] = {0};
- int Index = 0;
- char Ch = NULL;
+ int Index = 0;
+ char Ch = '\0';
if (!g_IsLoadedModulesInitialized || SearchMask == NULL)
{
@@ -208,7 +209,7 @@ SymGetFieldOffsetFromModule(UINT64 Base, WCHAR * TypeName, WCHAR * FieldName, UI
//
const DWORD SizeOfStruct =
sizeof(SYMBOL_INFOW) + ((MAX_SYM_NAME - 1) * sizeof(wchar_t));
- uint8_t SymbolInfoBuffer[SizeOfStruct];
+ UINT8 SymbolInfoBuffer[SizeOfStruct];
auto SymbolInfo = PSYMBOL_INFOW(SymbolInfoBuffer);
//
@@ -243,7 +244,7 @@ SymGetFieldOffsetFromModule(UINT64 Base, WCHAR * TypeName, WCHAR * FieldName, UI
//
// Allocate enough memory to receive the children ids
//
- auto FindChildrenParamsBacking = std::make_unique(
+ auto FindChildrenParamsBacking = std::make_unique(
sizeof(_TI_FINDCHILDREN_PARAMS) + ((ChildrenCount - 1) * sizeof(ULONG)));
auto FindChildrenParams =
(_TI_FINDCHILDREN_PARAMS *)FindChildrenParamsBacking.get();
@@ -335,7 +336,7 @@ SymGetDataTypeSizeFromModule(UINT64 Base, WCHAR * TypeName, UINT64 * TypeSize)
//
const DWORD SizeOfStruct =
sizeof(SYMBOL_INFOW) + ((MAX_SYM_NAME - 1) * sizeof(wchar_t));
- uint8_t SymbolInfoBuffer[SizeOfStruct];
+ UINT8 SymbolInfoBuffer[SizeOfStruct];
auto SymbolInfo = PSYMBOL_INFOW(SymbolInfoBuffer);
//
@@ -532,9 +533,9 @@ UINT32
SymLoadFileSymbol(UINT64 BaseAddress, const char * PdbFileName, const char * CustomModuleName)
{
DWORD FileSize = 0;
- int Index = 0;
- char Ch = NULL;
- char ModuleName[_MAX_FNAME] = {0};
+ int Index = 0;
+ char Ch = '\0';
+ char ModuleName[_MAX_FNAME] = {0};
char AlternateModuleName[_MAX_FNAME] = {0};
PSYMBOL_LOADED_MODULE_DETAILS ModuleDetails = NULL;
@@ -795,7 +796,7 @@ SymUnloadAllSymbols()
/**
* @brief Convert function name to address
*
- * @param FunctionName
+ * @param FunctionOrVariableName the name of the function or variable to convert
* @param WasFound
*
* @return UINT64
@@ -831,7 +832,7 @@ SymConvertNameToAddress(const char * FunctionOrVariableName, PBOOLEAN WasFound)
//
// Check if '!' is present in the function or variable name
//
- size_t FoundIndex = TempName.find('!');
+ SIZE_T FoundIndex = TempName.find('!');
if (FoundIndex != std::string::npos)
{
ExtractedModuleName = TempName.substr(0, FoundIndex);
@@ -981,7 +982,7 @@ SymGetFieldOffset(CHAR * TypeName, CHAR * FieldName, UINT32 * FieldOffset)
// Convert TypeName to wide-char, it's because SymGetTypeInfo supports
// wide-char
//
- const size_t TypeNameSize = strlen(TypeName) + 1;
+ const SIZE_T TypeNameSize = strlen(TypeName) + 1;
WCHAR * TypeNameW = (WCHAR *)malloc(sizeof(wchar_t) * TypeNameSize);
if (TypeNameW == NULL)
@@ -997,7 +998,7 @@ SymGetFieldOffset(CHAR * TypeName, CHAR * FieldName, UINT32 * FieldOffset)
// Convert FieldName to wide-char, it's because SymGetTypeInfo supports
// wide-char
//
- const size_t FieldNameSize = strlen(FieldName) + 1;
+ const SIZE_T FieldNameSize = strlen(FieldName) + 1;
WCHAR * FieldNameW = (WCHAR *)malloc(sizeof(wchar_t) * FieldNameSize);
if (FieldNameW == NULL)
@@ -1021,9 +1022,8 @@ SymGetFieldOffset(CHAR * TypeName, CHAR * FieldName, UINT32 * FieldOffset)
/**
* @brief Get the size of structures from the symbols
*
- * @param TypeName
- * @param FieldName
- * @param FieldOffset
+ * @param TypeName the type (structure) name to query
+ * @param TypeSize pointer to receive the size of the data type
*
* @return BOOLEAN Whether the module is found successfully or not
*/
@@ -1070,7 +1070,7 @@ SymGetDataTypeSize(CHAR * TypeName, UINT64 * TypeSize)
// Convert FieldName to wide-char, it's because SymGetTypeInfo supports
// wide-char
//
- const size_t TypeNameSize = strlen(TypeName) + 1;
+ const SIZE_T TypeNameSize = strlen(TypeName) + 1;
WCHAR * TypeNameW = (WCHAR *)malloc(sizeof(wchar_t) * TypeNameSize);
if (TypeNameW == NULL)
@@ -1284,9 +1284,9 @@ SymGetFileSize(const char * FileName, DWORD & FileSize)
//
// Open the file
//
- HANDLE hFile = CreateFileA(FileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
+ HANDLE HFile = CreateFileA(FileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
- if (hFile == INVALID_HANDLE_VALUE)
+ if (HFile == INVALID_HANDLE_VALUE)
{
ShowMessages("err, unable to open symbol file (%x)\n", GetLastError());
return FALSE;
@@ -1295,7 +1295,7 @@ SymGetFileSize(const char * FileName, DWORD & FileSize)
//
// Obtain the size of the file
//
- FileSize = GetFileSize(hFile, NULL);
+ FileSize = GetFileSize(HFile, NULL);
if (FileSize == INVALID_FILE_SIZE)
{
@@ -1309,7 +1309,7 @@ SymGetFileSize(const char * FileName, DWORD & FileSize)
//
// Close the file
//
- if (!CloseHandle(hFile))
+ if (!CloseHandle(HFile))
{
ShowMessages("err, unable to close symbol file (%x)\n", GetLastError());
@@ -1680,11 +1680,12 @@ SymTagStr(ULONG Tag)
*
* @param LocalFilePath
* @param ResultPath
+ * @param ResultPathSize the size of the result path buffer
*
* @return BOOLEAN
*/
BOOLEAN
-SymConvertFileToPdbPath(const char * LocalFilePath, char * ResultPath, size_t ResultPathSize)
+SymConvertFileToPdbPath(const char * LocalFilePath, char * ResultPath, SIZE_T ResultPathSize)
{
HRESULT Result;
BOOL Ret;
@@ -1745,6 +1746,7 @@ SymConvertFileToPdbPath(const char * LocalFilePath, char * ResultPath, size_t Re
* @brief Convert redirection of 32-bit compatibility path
*
* @param LocalFilePath
+ * @param Wow64ConvertedPath the converted path for Wow64 compatibility
*
* @return VOID
*/
@@ -1757,17 +1759,17 @@ SymConvertWow64CompatibilityPaths(const char * LocalFilePath, std::string & Wow6
std::transform(FilePath.begin(), FilePath.end(), FilePath.begin(), ::tolower);
// Replace "\windows\system32" with "\windows\syswow64"
- size_t pos = FilePath.find(":\\windows\\system32");
- if (pos != std::string::npos)
+ SIZE_T Pos = FilePath.find(":\\windows\\system32");
+ if (Pos != std::string::npos)
{
- FilePath.replace(pos, 18, ":\\windows\\syswow64");
+ FilePath.replace(Pos, 18, ":\\windows\\syswow64");
}
// Replace "\program files" with "\program files (x86)"
- pos = FilePath.find(":\\program files");
- if (pos != std::string::npos)
+ Pos = FilePath.find(":\\program files");
+ if (Pos != std::string::npos)
{
- FilePath.replace(pos, 15, ":\\program files (x86)");
+ FilePath.replace(Pos, 15, ":\\program files (x86)");
}
//
@@ -1883,7 +1885,7 @@ SymbolInitLoad(PVOID BufferToStoreDetails,
//
// Split each module and details
//
- for (size_t i = 0; i < StoredLength / sizeof(MODULE_SYMBOL_DETAIL); i++)
+ for (SIZE_T i = 0; i < StoredLength / sizeof(MODULE_SYMBOL_DETAIL); i++)
{
//
// Check for abort
@@ -2064,13 +2066,12 @@ SymbolInitLoad(PVOID BufferToStoreDetails,
/**
* @brief download pdb file
*
- * @param BufferToStoreDetails Pointer to a buffer to store the symbols details
- * this buffer will be allocated by this function and needs to be freed by caller
- * @param StoredLength The length that stored on the BufferToStoreDetails
- * @param SymPath The path of symbols
- * @param IsSilentLoad Download without any message
+ * @param SymName the name of the symbol (pdb file name)
+ * @param GUID the GUID and age string identifying the symbol version
+ * @param SymPath the symbol search path
+ * @param IsSilentLoad download without any message
*
- * return BOOLEAN
+ * @return BOOLEAN
*/
BOOLEAN
SymbolPdbDownload(std::string SymName, const std::string & GUID, const std::string & SymPath, BOOLEAN IsSilentLoad)
@@ -2126,7 +2127,7 @@ SymbolPdbDownload(std::string SymName, const std::string & GUID, const std::stri
* @brief In the case of pressing CTRL+C, it sets a flag
* to abort the execution of the 'reload'ing and the 'download'ing
*
- * return VOID
+ * @return VOID
*/
VOID
SymbolAbortLoading()
@@ -2237,7 +2238,7 @@ SymShowDataBasedOnSymbolTypes(const char * TypeName,
//
// Fill the parameter with char array
//
- for (size_t i = 3; i < SizeOfArgv; i++)
+ for (SIZE_T i = 3; i < SizeOfArgv; i++)
{
ArgvArray[i] = (char *)SplitedSymPath.at(i - 3).c_str();
}
diff --git a/hyperdbg/symbol-parser/pch.cpp b/hyperdbg/symbol-parser/pch.cpp
index 4af69dae..43408d27 100644
--- a/hyperdbg/symbol-parser/pch.cpp
+++ b/hyperdbg/symbol-parser/pch.cpp
@@ -1,5 +1,5 @@
/**
- * @file pch.c
+ * @file pch.cpp
* @author Sina Karvandi (sina@hyperdbg.org)
*
* @details Pre-compiled headers
From 3bb181fb7d1a1c680568d14b3ec3643750783147 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 31 May 2026 03:17:53 +0200
Subject: [PATCH 200/323] refactor doxygen, variables, function names 2
---
hyperdbg/hyperevade/code/SyscallFootprints.c | 59 ++++++++++++-------
hyperdbg/hyperevade/code/Transparency.c | 14 ++---
hyperdbg/hyperevade/code/UnloadDll.c | 15 ++++-
.../hyperevade/header/SyscallFootprints.h | 27 +++++----
hyperdbg/hyperevade/header/VmxFootprints.h | 4 +-
hyperdbg/hypertrace/code/api/LbrApi.c | 18 +++---
hyperdbg/hypertrace/code/api/PtApi.c | 6 +-
hyperdbg/hypertrace/code/api/TraceApi.c | 8 +--
.../hypertrace/code/broadcast/Broadcast.c | 4 +-
.../hypertrace/code/broadcast/DpcRoutines.c | 34 +++++------
hyperdbg/hypertrace/code/common/UnloadDll.c | 15 ++++-
hyperdbg/hypertrace/code/lbr/Lbr.c | 32 +++++-----
hyperdbg/hypertrace/header/common/UnloadDll.h | 2 +-
.../SDK/imports/kernel/HyperDbgHyperTrace.h | 2 +-
hyperdbg/script-engine/code/scanner.c | 42 ++++++-------
.../script-engine/{ => code}/script_include.c | 0
hyperdbg/script-engine/code/type.c | 14 ++---
hyperdbg/script-engine/header/common.h | 2 +-
.../{ => header}/script_include.h | 2 +-
hyperdbg/script-engine/script-engine.vcxproj | 4 +-
.../script-engine.vcxproj.filters | 4 +-
hyperdbg/symbol-parser/code/common-utils.cpp | 2 +-
hyperdbg/symbol-parser/code/symbol-parser.cpp | 18 +++---
23 files changed, 186 insertions(+), 142 deletions(-)
rename hyperdbg/script-engine/{ => code}/script_include.c (100%)
rename hyperdbg/script-engine/{ => header}/script_include.h (89%)
diff --git a/hyperdbg/hyperevade/code/SyscallFootprints.c b/hyperdbg/hyperevade/code/SyscallFootprints.c
index e9d5e34b..68147df4 100644
--- a/hyperdbg/hyperevade/code/SyscallFootprints.c
+++ b/hyperdbg/hyperevade/code/SyscallFootprints.c
@@ -11,12 +11,31 @@
*/
#include "pch.h"
+/**
+ * @brief Handle The triggered hook on KiSystemCall64 system call handler
+ * when the Transparency mode is disabled
+ *
+ * @param Regs The virtual processor's state of registers
+ * @return VOID
+ */
VOID
TransparentHandleSystemCallHook(GUEST_REGS * Regs)
{
UNREFERENCED_PARAMETER(Regs);
}
+/**
+ * @brief Callback function to handle returns from the syscall
+ * when the Transparency mode is disabled
+ *
+ * @param Regs The virtual processor's state of registers
+ * @param ProcessId The process id of the thread
+ * @param ThreadId The thread id of the thread
+ * @param Context The context of the caller
+ * @param Params The (optional) parameters of the caller
+ *
+ * @return VOID
+ */
VOID
TransparentCallbackHandleAfterSyscall(GUEST_REGS * Regs,
UINT32 ProcessId,
@@ -805,7 +824,7 @@ TransparentHandleNtEnumerateKeySyscall(GUEST_REGS * Regs)
* it is possible to still detect that some tampering was done from the user space
*
* @param Ptr The pointer to a valid read/writable SYSTEM_MODULE_INFORMATION memory buffer
- * @param VirualAddress A pointer to a user-mode virtual address
+ * @param VirtualAddress A pointer to a user-mode virtual address
* @param BufferSize Size of the user-mode buffer
*
* @return BOOLEAN
@@ -822,11 +841,11 @@ TransparentHandleModuleInformationQuery(PVOID Ptr, UINT64 VirtualAddress, UINT32
//
for (UINT16 i = 0; i < StructBuf->Count; i++)
{
- PCHAR path = (PCHAR)ModuleList[i].FullPathName;
+ PCHAR Path = (PCHAR)ModuleList[i].FullPathName;
for (UINT16 j = 0; j < (sizeof(HV_DRIVER) / sizeof(HV_DRIVER[0])); j++)
{
- if (strstr(path, HV_DRIVER[j]))
+ if (strstr(Path, HV_DRIVER[j]))
{
//
// If a module file name matches, remove the entry from the list by shifting it forward by one entry
@@ -934,9 +953,9 @@ TransparentHandleProcessInformationQuery(SYSCALL_CALLBACK_CONTEXT_PARAMS * Param
//
// Loop through the known list of identifiable hypervisor related processes
//
- for (UINT16 i = 0; i < (sizeof(HV_Processes) / sizeof(HV_Processes[0])); i++)
+ for (UINT16 i = 0; i < (sizeof(HV_PROCESSES) / sizeof(HV_PROCESSES[0])); i++)
{
- if (!_wcsnicmp(ImageName, HV_Processes[i], (CurStructBuf.ImageName.Length) / sizeof(WCHAR)))
+ if (!_wcsnicmp(ImageName, HV_PROCESSES[i], (CurStructBuf.ImageName.Length) / sizeof(WCHAR)))
{
//
// If the name matches, bypass it by increasing the previous entries .nextEntryOffset value
@@ -1037,7 +1056,7 @@ TransparentHandleProcessInformationQuery(SYSCALL_CALLBACK_CONTEXT_PARAMS * Param
/**
* @brief Handle the request for SystemFirmwareTableInformation
*
- * @param ptr The pointer to a valid read/writable SYSTEM_FIRMWARE_TABLE_INFORMATION memory buffer
+ * @param Ptr The pointer to a valid read/writable SYSTEM_FIRMWARE_TABLE_INFORMATION memory buffer
* @param BufMaxSize The size of the allocated user-mode buffer
* @param BufSizePtr A pointer to a ULONG field containing the size of the written data
*
@@ -1146,9 +1165,9 @@ TransparentHandleFirmwareInformationQuery(UINT64 Ptr, UINT32 BufMaxSize, UINT64
//
ULONG MatchedStringLen = (ULONG)strlen(HV_FIRM_NAMES[i]);
- ULONG oldLength = StructBuf->TableBufferLength;
+ ULONG OldLength = StructBuf->TableBufferLength;
- ULONG NewStringSize = oldLength - MatchedStringLen + NewSubstringSize;
+ ULONG NewStringSize = OldLength - MatchedStringLen + NewSubstringSize;
//
// Check if the buffer size allows the modification, in case of expansion
@@ -1165,7 +1184,7 @@ TransparentHandleFirmwareInformationQuery(UINT64 Ptr, UINT32 BufMaxSize, UINT64
//
// Update the required buffer size for the next call
//
- BufSize = (BufSize - oldLength) + NewStringSize;
+ BufSize = (BufSize - OldLength) + NewStringSize;
g_Callbacks.MemoryMapperWriteMemorySafeOnTargetProcess(BufSizePtr, &BufSize, sizeof(ULONG));
//
@@ -1186,7 +1205,7 @@ TransparentHandleFirmwareInformationQuery(UINT64 Ptr, UINT32 BufMaxSize, UINT64
// Move the data after the matched string forward
// and replace the identified hypervisor string with the genuine one
//
- memmove((PVOID)(StringBuf + MatchOffset + NewSubstringSize), (PVOID)MatchEnd, oldLength - MatchedStringLen - MatchOffset);
+ memmove((PVOID)(StringBuf + MatchOffset + NewSubstringSize), (PVOID)MatchEnd, OldLength - MatchedStringLen - MatchOffset);
memcpy((PVOID)MatchStart, (PVOID)NewVendorString, NewSubstringSize);
StructBuf->TableBufferLength = NewStringSize;
@@ -1230,8 +1249,8 @@ TransparentHandleFirmwareInformationQuery(UINT64 Ptr, UINT32 BufMaxSize, UINT64
UINT64
TransparentReplaceVendorStringFromBufferWChar(SYSCALL_CALLBACK_CONTEXT_PARAMS * Params, ULONG DataOffset, ULONG DataLenOffset)
{
- PVOID Buf = NULL;
- BOOL PoolAlloc = FALSE;
+ PVOID Buf = NULL;
+ BOOLEAN PoolAlloc = FALSE;
//
// Check that the user provided pointers are safe to read from
@@ -1313,7 +1332,7 @@ TransparentReplaceVendorStringFromBufferWChar(SYSCALL_CALLBACK_CONTEXT_PARAMS *
//
// SPOOFS PCI device ID's(in the registry), This might be implemented in other ways that are not part of this implementation
//
- WORD Idx = TRANSPARENT_GENUINE_VENDOR_STRING_INDEX % (sizeof(TRANSPARENT_LEGIT_DEVICE_ID_VENDOR_STRINGS_WCHAR) / sizeof(TRANSPARENT_LEGIT_DEVICE_ID_VENDOR_STRINGS_WCHAR[0]));
+ WORD Idx = g_TransparentGenuineVendorStringIndex % (sizeof(TRANSPARENT_LEGIT_DEVICE_ID_VENDOR_STRINGS_WCHAR) / sizeof(TRANSPARENT_LEGIT_DEVICE_ID_VENDOR_STRINGS_WCHAR[0]));
NewVendorString = TRANSPARENT_LEGIT_DEVICE_ID_VENDOR_STRINGS_WCHAR[Idx];
}
@@ -1329,7 +1348,7 @@ TransparentReplaceVendorStringFromBufferWChar(SYSCALL_CALLBACK_CONTEXT_PARAMS *
//
// Obtain the replacement vendor name string, randomized when the transparency mode was enabled
//
- NewVendorString = TRANSPARENT_LEGIT_VENDOR_STRINGS_WCHAR[TRANSPARENT_GENUINE_VENDOR_STRING_INDEX];
+ NewVendorString = TRANSPARENT_LEGIT_VENDOR_STRINGS_WCHAR[g_TransparentGenuineVendorStringIndex];
}
//
@@ -1345,7 +1364,7 @@ TransparentReplaceVendorStringFromBufferWChar(SYSCALL_CALLBACK_CONTEXT_PARAMS *
//
// Check if the buffer size allows the modification, in case of expansion
//
- if (BufSize - MatchedStringLen + tempSize > Params->OptionalParam3)
+ if (BufSize - MatchedStringLen + TempSize > Params->OptionalParam3)
{
//
// If adding the new string exceeds the user allocated size,
@@ -1357,7 +1376,7 @@ TransparentReplaceVendorStringFromBufferWChar(SYSCALL_CALLBACK_CONTEXT_PARAMS *
//
// Update the required buffer size for the next call
//
- BufSize = (tempSize - MatchedStringLen) + oldLength;
+ BufSize = (TempSize - MatchedStringLen) + OldLength;
g_Callbacks.MemoryMapperWriteMemorySafeOnTargetProcess(Params->OptionalParam4, &BufSize, sizeof(ULONG));
//
@@ -1378,15 +1397,15 @@ TransparentReplaceVendorStringFromBufferWChar(SYSCALL_CALLBACK_CONTEXT_PARAMS *
//
// Move the data after the matched string forward
//
- memmove((PVOID)(StringBuf + MatchOffset + (tempSize / sizeof(WCHAR))), (PVOID)MatchEnd, oldLength - MatchedStringLen - (MatchOffset * sizeof(WCHAR)));
+ memmove((PVOID)(StringBuf + MatchOffset + (TempSize / sizeof(WCHAR))), (PVOID)MatchEnd, OldLength - MatchedStringLen - (MatchOffset * sizeof(WCHAR)));
//
// Replace the identified hypervisor string with the genuine one, if needed
//
- memcpy((PVOID)MatchStart, (PVOID)NewVendorString, tempSize);
+ memcpy((PVOID)MatchStart, (PVOID)NewVendorString, TempSize);
*(PULONG)((PBYTE)Buf + DataLenOffset) = NewStringSize;
- BufSize = BufSize - MatchedStringLen + tempSize;
+ BufSize = BufSize - MatchedStringLen + TempSize;
//
// Write the changes back to the user buffers
@@ -1519,7 +1538,7 @@ TransparentCallbackHandleAfterNtQueryValueKeySyscall(SYSCALL_CALLBACK_CONTEXT_PA
}
/**
- * @brief Callback function to handle the returns from the NtQueryValueKey syscall
+ * @brief Callback function to handle the returns from the NtEnumerateKey syscall
*
* @param Params The set transparent callback params that contain:
in OptionalParam1 the KEY_VALUE_INFORMATION_CLASS enum value
diff --git a/hyperdbg/hyperevade/code/Transparency.c b/hyperdbg/hyperevade/code/Transparency.c
index d3eb3eb2..62b40b10 100644
--- a/hyperdbg/hyperevade/code/Transparency.c
+++ b/hyperdbg/hyperevade/code/Transparency.c
@@ -14,8 +14,8 @@
/**
* @brief Hide debugger on transparent-mode (activate transparent-mode)
*
- * @param HyperevadeCallbacks
- * @param TransparentModeRequest
+ * @param HyperevadeCallbacks Pointer to the HyperEvade callbacks structure
+ * @param TransparentModeRequest Pointer to the transparent debugger mode request
*
* @return BOOLEAN
*/
@@ -58,8 +58,8 @@ TransparentHideDebugger(HYPEREVADE_CALLBACKS * Hyperevade
//
// Choose a random genuine vendor string to replace hypervisor vendor data
//
- TRANSPARENT_GENUINE_VENDOR_STRING_INDEX = TransparentGetRand() %
- (sizeof(TRANSPARENT_LEGIT_VENDOR_STRINGS_WCHAR) / sizeof(TRANSPARENT_LEGIT_VENDOR_STRINGS_WCHAR[0]));
+ g_TransparentGenuineVendorStringIndex = TransparentGetRand() %
+ (sizeof(TRANSPARENT_LEGIT_VENDOR_STRINGS_WCHAR) / sizeof(TRANSPARENT_LEGIT_VENDOR_STRINGS_WCHAR[0]));
#endif
//
@@ -125,7 +125,7 @@ TransparentGetRand()
* @brief Add name or process id of the target process to the list
* of processes that HyperDbg should apply transparent-mode on them
*
- * @param Measurements
+ * @param Measurements Pointer to the debugger hide and transparent mode request structure
* @return BOOLEAN
*/
BOOLEAN
@@ -189,8 +189,8 @@ TransparentAddNameOrProcessIdToTheList(PDEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_M
//
// Move the process name string to the end of the buffer
//
- RtlCopyBytes((void *)((UINT64)PidAndNameBuffer + sizeof(TRANSPARENCY_PROCESS)),
- (const void *)((UINT64)Measurements + sizeof(DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE)),
+ RtlCopyBytes((VOID *)((UINT64)PidAndNameBuffer + sizeof(TRANSPARENCY_PROCESS)),
+ (CONST VOID *)((UINT64)Measurements + sizeof(DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE)),
Measurements->LengthOfProcessName);
//
diff --git a/hyperdbg/hyperevade/code/UnloadDll.c b/hyperdbg/hyperevade/code/UnloadDll.c
index be8c9ba6..17321dbf 100644
--- a/hyperdbg/hyperevade/code/UnloadDll.c
+++ b/hyperdbg/hyperevade/code/UnloadDll.c
@@ -2,7 +2,7 @@
* @file UnloadDll.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Unloading DLL in the target Windows
- *
+ * @details
* @version 0.4
* @date 2023-07-06
*
@@ -18,6 +18,12 @@
// other module remains loaded in the memory.
//
+/**
+ * @brief Routine called on DLL initialization
+ *
+ * @param RegistryPath The registry path of the driver
+ * @return NTSTATUS
+ */
NTSTATUS
DllInitialize(
_In_ PUNICODE_STRING RegistryPath)
@@ -27,8 +33,13 @@ DllInitialize(
return STATUS_SUCCESS;
}
+/**
+ * @brief Routine called on DLL unload
+ *
+ * @return NTSTATUS
+ */
NTSTATUS
-DllUnload(void)
+DllUnload(VOID)
{
return STATUS_SUCCESS;
}
diff --git a/hyperdbg/hyperevade/header/SyscallFootprints.h b/hyperdbg/hyperevade/header/SyscallFootprints.h
index 86a25ffc..25acd6b5 100644
--- a/hyperdbg/hyperevade/header/SyscallFootprints.h
+++ b/hyperdbg/hyperevade/header/SyscallFootprints.h
@@ -81,17 +81,17 @@ typedef struct _SYSTEM_PROCESS_INFORMATION
* @brief SSDT structure
*
*/
-typedef struct _SSDTStruct
+typedef struct _SSDT_STRUCT
{
- LONG * pServiceTable;
- PVOID pCounterTable;
+ LONG * ServiceTable;
+ PVOID CounterTable;
#ifdef _WIN64
UINT64 NumberOfServices;
#else
ULONG NumberOfServices;
#endif
- PCHAR pArgumentTable;
-} SSDTStruct, *PSSDTStruct;
+ PCHAR ArgumentTable;
+} SSDT_STRUCT, *PSSDT_STRUCT;
/**
* @brief Module entry
@@ -128,7 +128,7 @@ typedef NTSTATUS(NTAPI * ZWQUERYSYSTEMINFORMATION)(
IN ULONG SystemInformationLength,
OUT PULONG ReturnLength OPTIONAL);
-NTSTATUS(*NtCreateFileOrig)
+NTSTATUS(*g_NtCreateFileOrig)
(
PHANDLE FileHandle,
ACCESS_MASK DesiredAccess,
@@ -150,7 +150,7 @@ NTSTATUS(*NtCreateFileOrig)
* @brief A variable holding the randomly chosen index for the genuine vendor list.
* This is used for transparent vendor spoofing
*/
-static WORD TRANSPARENT_GENUINE_VENDOR_STRING_INDEX = 0;
+static WORD g_TransparentGenuineVendorStringIndex = 0;
/**
* @brief System call numbers information
@@ -241,7 +241,7 @@ static const PWCHAR TRANSPARENT_LEGIT_VENDOR_STRINGS_WCHAR[] = {
* @brief A list of common Hypervisor specific process executables
*
*/
-static const PWCH HV_Processes[] = {
+static const PWCH HV_PROCESSES[] = {
L"hyperdbg-cli.exe",
L"vboxservice.exe",
L"vmsrvc.exe",
@@ -559,11 +559,12 @@ static const PWCH HV_REGKEYS[] = {
};
-//
-// @brief A list of registry keys which might contain hypervisor vendor information in their data
-//
-// NOTE: This is not a complete list, there are a lot of generic keys that also can have the identifiable data
-//
+/**
+ * @brief A list of registry keys which might contain hypervisor vendor information in their data
+ *
+ * @details NOTE: This is not a complete list, there are a lot of generic keys that also can have the identifiable data
+ *
+ */
static const PWCH TRANSPARENT_DETECTABLE_REGISTRY_KEYS[] = {
L"AcpiData",
L"SMBiosData",
diff --git a/hyperdbg/hyperevade/header/VmxFootprints.h b/hyperdbg/hyperevade/header/VmxFootprints.h
index cb168493..39560e8c 100644
--- a/hyperdbg/hyperevade/header/VmxFootprints.h
+++ b/hyperdbg/hyperevade/header/VmxFootprints.h
@@ -1,7 +1,7 @@
/**
- * @file VmxFootprint.h
+ * @file VmxFootprints.h
* @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Hide the debugger from VMX-footrpints of anti-debugging and anti-hypervisor methods (headers)
+ * @brief Hide the debugger from VMX-footprints of anti-debugging and anti-hypervisor methods (headers)
* @details
* @version 0.14
* @date 2024-08-06
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index 82ee4a10..eb250b83 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -14,19 +14,19 @@
/**
* @brief Example of performing LBR trace
*
- * @return BOOLEAN
+ * @return VOID
*/
VOID
HyperTraceLbrExamplePerformTrace()
{
if (LbrStart(LBR_SELECT_WITHOUT_FILTER))
{
- for (volatile int i = 0; i < 50; i++)
+ for (volatile INT i = 0; i < 50; i++)
{
if (i % 2)
{
- int a = i * 2;
- a += 5;
+ INT A = i * 2;
+ A += 5;
}
else
{
@@ -45,7 +45,7 @@ HyperTraceLbrExamplePerformTrace()
/**
* @brief Query the state of LBR save and load VM exit and entry controls
*
- * @param CoreId
+ * @param CoreId The index of the processor core to query
*
* @return BOOLEAN
*/
@@ -60,8 +60,8 @@ HyperTraceLbrQueryStateOfLbrSaveAndLoadVmExitAndEntryControls(UINT32 CoreId)
/**
* @brief Set the kernel status in the HyperTrace LBR operation request structure
*
- * @param HyperTraceLbrOperationRequest
- * @param Status
+ * @param HyperTraceLbrOperationRequest Pointer to the HyperTrace LBR operation request packet
+ * @param Status The kernel status code to write into the request
*
* @return VOID
*/
@@ -79,8 +79,8 @@ HyperTraceLbrSetKernelStatus(
/**
* @brief Set the kernel status in the HyperTrace LBR dump operation request structure
*
- * @param HyperTraceLbrDumpOperationRequest
- * @param Status
+ * @param HyperTraceLbrDumpOperationRequest Pointer to the HyperTrace LBR dump operation request packet
+ * @param Status The kernel status code to write into the request
*
* @return VOID
*/
diff --git a/hyperdbg/hypertrace/code/api/PtApi.c b/hyperdbg/hypertrace/code/api/PtApi.c
index 3daf409e..73cd8a70 100644
--- a/hyperdbg/hypertrace/code/api/PtApi.c
+++ b/hyperdbg/hypertrace/code/api/PtApi.c
@@ -13,7 +13,7 @@
/**
* @brief Example of performing PT trace
*
- * @return BOOLEAN
+ * @return VOID
*/
VOID
HyperTracePtExample()
@@ -23,7 +23,7 @@ HyperTracePtExample()
/**
* @brief Enable PT tracing for HyperTrace
*
- * @param PtOperationRequest
+ * @param PtOperationRequest Pointer to the HyperTrace PT operation request packet
*
* @return BOOLEAN
*/
@@ -64,7 +64,7 @@ HyperTracePtEnable(HYPERTRACE_PT_OPERATION_PACKETS * PtOperationRequest)
/**
* @brief Disable PT tracing for HyperTrace
*
- * @param PtOperationRequest
+ * @param PtOperationRequest Pointer to the HyperTrace PT operation request packet
*
* @return BOOLEAN
*/
diff --git a/hyperdbg/hypertrace/code/api/TraceApi.c b/hyperdbg/hypertrace/code/api/TraceApi.c
index 0f2d951b..52ffc524 100644
--- a/hyperdbg/hypertrace/code/api/TraceApi.c
+++ b/hyperdbg/hypertrace/code/api/TraceApi.c
@@ -14,14 +14,14 @@
* @brief Initialize the hyper trace module callbacks
* @details This only for callback initialization, not for LBR, PT, etc. initialization
*
- * @param HypertraceCallbacks
+ * @param HyperTraceCallbacks Pointer to the HyperTrace callbacks structure to be registered
* @param RunningOnHypervisorEnvironment Whether the initialization is being done for hypervisor environment or not,
* it can be used to skip some of the initialization steps if it is not for hypervisor environment and behave differently based on that
*
* @return BOOLEAN
*/
BOOLEAN
-HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
+HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HyperTraceCallbacks,
BOOLEAN RunningOnHypervisorEnvironment)
{
UINT32 ProcessorsCount = 0;
@@ -31,7 +31,7 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
//
for (UINT32 i = 0; i < sizeof(HYPERTRACE_CALLBACKS) / sizeof(UINT64); i++)
{
- if (((PVOID *)HypertraceCallbacks)[i] == NULL)
+ if (((PVOID *)HyperTraceCallbacks)[i] == NULL)
{
//
// The callback has null entry, so we cannot proceed
@@ -43,7 +43,7 @@ HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks,
//
// Save the callbacks
//
- PlatformWriteMemory(&g_Callbacks, HypertraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
+ PlatformWriteMemory(&g_Callbacks, HyperTraceCallbacks, sizeof(HYPERTRACE_CALLBACKS));
//
// Query the number of processors in the system to initialize the global LBR state list accordingly
diff --git a/hyperdbg/hypertrace/code/broadcast/Broadcast.c b/hyperdbg/hypertrace/code/broadcast/Broadcast.c
index 12dc62cd..98f082a4 100644
--- a/hyperdbg/hypertrace/code/broadcast/Broadcast.c
+++ b/hyperdbg/hypertrace/code/broadcast/Broadcast.c
@@ -2,7 +2,7 @@
* @file Broadcast.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Broadcasting functions
- *
+ * @details
* @version 0.19
* @date 2026-04-19
*
@@ -56,6 +56,8 @@ BroadcastFlushLbrOnAllCores()
/**
* @brief Routines to filter LBR option on all cores
*
+ * @param LbrFilterOptions A bitmask of filter options to apply to the LBR branches
+ *
* @return VOID
*/
VOID
diff --git a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
index 40d666bf..c405c4ae 100644
--- a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
@@ -2,7 +2,7 @@
* @file DpcRoutines.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief DPC routines
- *
+ * @details
* @version 0.19
* @date 2026-04-19
*
@@ -14,10 +14,10 @@
/**
* @brief Broadcast enabling LBR
*
- * @param Dpc
- * @param DeferredContext
- * @param SystemArgument1
- * @param SystemArgument2
+ * @param Dpc The DPC object (unused)
+ * @param DeferredContext Context data passed to the DPC (unused)
+ * @param SystemArgument1 First system argument used for DPC synchronization
+ * @param SystemArgument2 Second system argument used for DPC synchronization
* @return BOOLEAN
*/
BOOLEAN
@@ -69,10 +69,10 @@ DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
/**
* @brief Broadcast disabling LBR
*
- * @param Dpc
- * @param DeferredContext
- * @param SystemArgument1
- * @param SystemArgument2
+ * @param Dpc The DPC object (unused)
+ * @param DeferredContext Context data passed to the DPC (unused)
+ * @param SystemArgument1 First system argument used for DPC synchronization
+ * @param SystemArgument2 Second system argument used for DPC synchronization
* @return BOOLEAN
*/
BOOLEAN
@@ -123,10 +123,10 @@ DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, P
/**
* @brief Broadcast flushing LBR
*
- * @param Dpc
- * @param DeferredContext
- * @param SystemArgument1
- * @param SystemArgument2
+ * @param Dpc The DPC object (unused)
+ * @param DeferredContext Context data passed to the DPC (unused)
+ * @param SystemArgument1 First system argument used for DPC synchronization
+ * @param SystemArgument2 Second system argument used for DPC synchronization
* @return BOOLEAN
*/
BOOLEAN
@@ -151,10 +151,10 @@ DpcRoutineFlushLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVO
/**
* @brief Broadcast updating LBR filter options
*
- * @param Dpc
- * @param DeferredContext
- * @param SystemArgument1
- * @param SystemArgument2
+ * @param Dpc The DPC object (unused)
+ * @param DeferredContext Context data passed to the DPC, used as the LBR filter options bitmask
+ * @param SystemArgument1 First system argument used for DPC synchronization
+ * @param SystemArgument2 Second system argument used for DPC synchronization
* @return BOOLEAN
*/
BOOLEAN
diff --git a/hyperdbg/hypertrace/code/common/UnloadDll.c b/hyperdbg/hypertrace/code/common/UnloadDll.c
index be8c9ba6..17321dbf 100644
--- a/hyperdbg/hypertrace/code/common/UnloadDll.c
+++ b/hyperdbg/hypertrace/code/common/UnloadDll.c
@@ -2,7 +2,7 @@
* @file UnloadDll.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Unloading DLL in the target Windows
- *
+ * @details
* @version 0.4
* @date 2023-07-06
*
@@ -18,6 +18,12 @@
// other module remains loaded in the memory.
//
+/**
+ * @brief Routine called on DLL initialization
+ *
+ * @param RegistryPath The registry path of the driver
+ * @return NTSTATUS
+ */
NTSTATUS
DllInitialize(
_In_ PUNICODE_STRING RegistryPath)
@@ -27,8 +33,13 @@ DllInitialize(
return STATUS_SUCCESS;
}
+/**
+ * @brief Routine called on DLL unload
+ *
+ * @return NTSTATUS
+ */
NTSTATUS
-DllUnload(void)
+DllUnload(VOID)
{
return STATUS_SUCCESS;
}
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 87c61a75..1be093d0 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -85,7 +85,7 @@ CPU_LBR_MAP CPU_LBR_MAPS[] = {
BOOLEAN
LbrCheckAndReadArchitecturalLbrDetails()
{
- ULONG a, b, c, d;
+ ULONG A, B, C, D;
CPUID_EAX_07 Edx07 = {0};
@@ -97,9 +97,9 @@ LbrCheckAndReadArchitecturalLbrDetails()
// Check for Architectural LBR support
//
//
- xcpuidex(CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS, 0x00, &a, &b, &c, &d);
+ xcpuidex(CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS, 0x00, &A, &B, &C, &D);
- Edx07.Edx.AsUInt = d;
+ Edx07.Edx.AsUInt = D;
//
// CPUID.07H.00H:EDX[19] == 1 means arch LBR is supported
@@ -121,14 +121,14 @@ LbrCheckAndReadArchitecturalLbrDetails()
//
// Being here means the CPU supports architectural LBR, we can read the LBR capabilities from CPUID 0x1c leaf
//
- xcpuidex(CPUID_ARCH_LAST_BRANCH_RECORD_INFORMATION, 0x00, &a, &b, &c, &d);
+ xcpuidex(CPUID_ARCH_LAST_BRANCH_RECORD_INFORMATION, 0x00, &A, &B, &C, &D);
//
- // Assign LBR leafs to sturcture for easier access
+ // Assign LBR leafs to structure for easier access
//
- Eax1c.AsUInt = a;
- Ebx1c.AsUInt = b;
- Ecx1c.AsUInt = c;
+ Eax1c.AsUInt = A;
+ Ebx1c.AsUInt = B;
+ Ecx1c.AsUInt = C;
//
// Store the CPUID.1CH leaf information in a global structure for later use
@@ -136,7 +136,7 @@ LbrCheckAndReadArchitecturalLbrDetails()
g_Cpuid28Leafs.Eax = Eax1c;
g_Cpuid28Leafs.Ebx = Ebx1c;
g_Cpuid28Leafs.Ecx = Ecx1c;
- g_Cpuid28Leafs.Edx = d;
+ g_Cpuid28Leafs.Edx = D;
//
// Read LBR capacity from CPUID.1CH.00H:EAX[7:0]
@@ -176,14 +176,14 @@ LbrCheckAndReadArchitecturalLbrDetails()
BOOLEAN
LbrCheckAndReadLegacyLbrDetails()
{
- ULONG a, b, c, d;
+ ULONG A, B, C, D;
ULONG Family, Model;
ULONGLONG i;
- xcpuid(1, &a, &b, &c, &d);
+ xcpuid(1, &A, &B, &C, &D);
- Family = ((a >> 8) & 0xF) + ((a >> 20) & 0xFF);
- Model = ((a >> 4) & 0xF) | ((a >> 12) & 0xF0);
+ Family = ((A >> 8) & 0xF) + ((A >> 20) & 0xFF);
+ Model = ((A >> 4) & 0xF) | ((A >> 12) & 0xF0);
for (i = 0; i < sizeof(CPU_LBR_MAPS) / sizeof(CPU_LBR_MAPS[0]); ++i)
{
@@ -908,7 +908,7 @@ LbrStart(UINT64 FilterOptions)
if (g_LbrCapacity == 0)
{
- LogInfo("Err, LBR aborting, CPU model not supported\n");
+ LogError("Err, LBR aborting, CPU model not supported\n");
return FALSE;
}
@@ -1145,7 +1145,7 @@ LbrSave()
* @return VOID
*/
VOID
-LbrGetArchBranchTypet(UINT32 BrType, CHAR * BrTypeName)
+LbrGetArchBranchType(UINT32 BrType, CHAR * BrTypeName)
{
if (BrType == LBR_BR_TYPE_COND)
{
@@ -1236,7 +1236,7 @@ LbrPrint()
//
// Get the branch type name for better readability when printing
//
- LbrGetArchBranchTypet(BrType, BrTypeName);
+ LbrGetArchBranchType(BrType, BrTypeName);
//
// Architectural LBR
diff --git a/hyperdbg/hypertrace/header/common/UnloadDll.h b/hyperdbg/hypertrace/header/common/UnloadDll.h
index 66d925a8..9bb252d2 100644
--- a/hyperdbg/hypertrace/header/common/UnloadDll.h
+++ b/hyperdbg/hypertrace/header/common/UnloadDll.h
@@ -19,4 +19,4 @@ __declspec(dllexport) NTSTATUS
DllInitialize(_In_ PUNICODE_STRING RegistryPath);
__declspec(dllexport) NTSTATUS
-DllUnload(void);
+ DllUnload(VOID);
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
index 7f549537..20bd0adb 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperTrace.h
@@ -24,7 +24,7 @@
// Initialize the hypertrace module with the provided callbacks
//
IMPORT_EXPORT_HYPERTRACE BOOLEAN
-HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HypertraceCallbacks, BOOLEAN RunningOnHypervisorEnvironment);
+HyperTraceInitCallback(HYPERTRACE_CALLBACKS * HyperTraceCallbacks, BOOLEAN RunningOnHypervisorEnvironment);
//
// Uninitialize the HyperTrace module
diff --git a/hyperdbg/script-engine/code/scanner.c b/hyperdbg/script-engine/code/scanner.c
index 4e3ea139..b61bf994 100644
--- a/hyperdbg/script-engine/code/scanner.c
+++ b/hyperdbg/script-engine/code/scanner.c
@@ -501,32 +501,32 @@ GetToken(char * c, char * str)
}
if (WasFound)
+ {
+ RemoveToken(&Token);
+ char HexStr[20] = {0};
+ sprintf(HexStr, "%llx", Address);
+ Token = NewToken(HEX, HexStr);
+ }
+ else
+ {
+ if (HasBang)
+ {
+ Token->Type = UNKNOWN;
+ return Token;
+ }
+ else
+ {
+ if (GetGlobalIdentifierVal(Token) != -1)
{
- RemoveToken(&Token);
- char HexStr[20] = {0};
- sprintf(HexStr, "%llx", Address);
- Token = NewToken(HEX, HexStr);
+ Token->Type = GLOBAL_ID;
+ Token->VariableType = GetGlobalIdentifierVariableType(Token);
}
else
{
- if (HasBang)
- {
- Token->Type = UNKNOWN;
- return Token;
- }
- else
- {
- if (GetGlobalIdentifierVal(Token) != -1)
- {
- Token->Type = GLOBAL_ID;
- Token->VariableType = GetGlobalIdentifierVariableType(Token);
- }
- else
- {
- Token->Type = GLOBAL_UNRESOLVED_ID;
- }
- }
+ Token->Type = GLOBAL_UNRESOLVED_ID;
}
+ }
+ }
}
else
{
diff --git a/hyperdbg/script-engine/script_include.c b/hyperdbg/script-engine/code/script_include.c
similarity index 100%
rename from hyperdbg/script-engine/script_include.c
rename to hyperdbg/script-engine/code/script_include.c
diff --git a/hyperdbg/script-engine/code/type.c b/hyperdbg/script-engine/code/type.c
index 787ee229..b0719061 100644
--- a/hyperdbg/script-engine/code/type.c
+++ b/hyperdbg/script-engine/code/type.c
@@ -187,15 +187,15 @@ HandleType(PSCRIPT_ENGINE_TOKEN_LIST PtokenStack)
VARIABLE_TYPE *
GetCommonVariableType(VARIABLE_TYPE * Ty1, VARIABLE_TYPE * Ty2)
{
- //if (Ty1->Kind == TY_ARRAY)
+ // if (Ty1->Kind == TY_ARRAY)
//{
- // return Ty1;
- //}
+ // return Ty1;
+ // }
- //if (Ty2->Kind == TY_ARRAY)
+ // if (Ty2->Kind == TY_ARRAY)
//{
- // return Ty2;
- //}
+ // return Ty2;
+ // }
return VARIABLE_TYPE_LONG;
-}
\ No newline at end of file
+}
diff --git a/hyperdbg/script-engine/header/common.h b/hyperdbg/script-engine/header/common.h
index 03d254e6..c3431088 100644
--- a/hyperdbg/script-engine/header/common.h
+++ b/hyperdbg/script-engine/header/common.h
@@ -115,7 +115,7 @@ PSCRIPT_ENGINE_TOKEN
NewTemp(PSCRIPT_ENGINE_ERROR_TYPE);
VOID
- FreeTemp(PSCRIPT_ENGINE_TOKEN Temp);
+FreeTemp(PSCRIPT_ENGINE_TOKEN Temp);
VARIABLE_TYPE *
HandleType(PSCRIPT_ENGINE_TOKEN_LIST PtokenStack);
diff --git a/hyperdbg/script-engine/script_include.h b/hyperdbg/script-engine/header/script_include.h
similarity index 89%
rename from hyperdbg/script-engine/script_include.h
rename to hyperdbg/script-engine/header/script_include.h
index 771fec8f..be451166 100644
--- a/hyperdbg/script-engine/script_include.h
+++ b/hyperdbg/script-engine/header/script_include.h
@@ -24,4 +24,4 @@ BOOLEAN
ParseIncludeFile(char * IncludeFile, char ** Buffer);
char *
-InsertStrNew(char * Str, int InputIdx, const char * Buf);
\ No newline at end of file
+InsertStrNew(char * Str, int InputIdx, const char * Buf);
diff --git a/hyperdbg/script-engine/script-engine.vcxproj b/hyperdbg/script-engine/script-engine.vcxproj
index ea3840ce..3d3b8b73 100644
--- a/hyperdbg/script-engine/script-engine.vcxproj
+++ b/hyperdbg/script-engine/script-engine.vcxproj
@@ -135,8 +135,8 @@ exit /b 0
+
-
@@ -149,8 +149,8 @@ exit /b 0
+
-
diff --git a/hyperdbg/script-engine/script-engine.vcxproj.filters b/hyperdbg/script-engine/script-engine.vcxproj.filters
index b88fd0b9..597ae621 100644
--- a/hyperdbg/script-engine/script-engine.vcxproj.filters
+++ b/hyperdbg/script-engine/script-engine.vcxproj.filters
@@ -38,7 +38,7 @@
header
-
+
header
@@ -67,7 +67,7 @@
code
-
+
code
diff --git a/hyperdbg/symbol-parser/code/common-utils.cpp b/hyperdbg/symbol-parser/code/common-utils.cpp
index f9a20ac1..3b0c2e2e 100644
--- a/hyperdbg/symbol-parser/code/common-utils.cpp
+++ b/hyperdbg/symbol-parser/code/common-utils.cpp
@@ -80,7 +80,7 @@ SplitPathAndArgs(std::vector & Qargs, const std::string & Command)
int Len = (int)Command.length();
BOOLEAN Qot = FALSE;
BOOLEAN Sqot = FALSE;
- int ArgLen;
+ int ArgLen;
for (int i = 0; i < Len; i++)
{
diff --git a/hyperdbg/symbol-parser/code/symbol-parser.cpp b/hyperdbg/symbol-parser/code/symbol-parser.cpp
index bf5c12e5..2128c441 100644
--- a/hyperdbg/symbol-parser/code/symbol-parser.cpp
+++ b/hyperdbg/symbol-parser/code/symbol-parser.cpp
@@ -86,8 +86,8 @@ SymGetModuleBaseFromSearchMask(const char * SearchMask, BOOLEAN SetModuleNameGlo
{
string Token;
char ModuleName[_MAX_FNAME] = {0};
- int Index = 0;
- char Ch = '\0';
+ int Index = 0;
+ char Ch = '\0';
if (!g_IsLoadedModulesInitialized || SearchMask == NULL)
{
@@ -209,8 +209,8 @@ SymGetFieldOffsetFromModule(UINT64 Base, WCHAR * TypeName, WCHAR * FieldName, UI
//
const DWORD SizeOfStruct =
sizeof(SYMBOL_INFOW) + ((MAX_SYM_NAME - 1) * sizeof(wchar_t));
- UINT8 SymbolInfoBuffer[SizeOfStruct];
- auto SymbolInfo = PSYMBOL_INFOW(SymbolInfoBuffer);
+ UINT8 SymbolInfoBuffer[SizeOfStruct];
+ auto SymbolInfo = PSYMBOL_INFOW(SymbolInfoBuffer);
//
// Initialize the fields that need initialization
@@ -336,8 +336,8 @@ SymGetDataTypeSizeFromModule(UINT64 Base, WCHAR * TypeName, UINT64 * TypeSize)
//
const DWORD SizeOfStruct =
sizeof(SYMBOL_INFOW) + ((MAX_SYM_NAME - 1) * sizeof(wchar_t));
- UINT8 SymbolInfoBuffer[SizeOfStruct];
- auto SymbolInfo = PSYMBOL_INFOW(SymbolInfoBuffer);
+ UINT8 SymbolInfoBuffer[SizeOfStruct];
+ auto SymbolInfo = PSYMBOL_INFOW(SymbolInfoBuffer);
//
// Initialize the fields that need initialization
@@ -533,9 +533,9 @@ UINT32
SymLoadFileSymbol(UINT64 BaseAddress, const char * PdbFileName, const char * CustomModuleName)
{
DWORD FileSize = 0;
- int Index = 0;
- char Ch = '\0';
- char ModuleName[_MAX_FNAME] = {0};
+ int Index = 0;
+ char Ch = '\0';
+ char ModuleName[_MAX_FNAME] = {0};
char AlternateModuleName[_MAX_FNAME] = {0};
PSYMBOL_LOADED_MODULE_DETAILS ModuleDetails = NULL;
From 6bcd4a3b102e8b101db5b3f0c713fb455a1bcb85 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 31 May 2026 03:21:19 +0200
Subject: [PATCH 201/323] refactor doxygen, variables, function names 4
---
hyperdbg/hypertrace/code/api/LbrApi.c | 2 +-
.../hypertrace/code/broadcast/DpcRoutines.c | 32 +++++++++----------
hyperdbg/hypertrace/code/lbr/Lbr.c | 18 +++++------
3 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/hyperdbg/hypertrace/code/api/LbrApi.c b/hyperdbg/hypertrace/code/api/LbrApi.c
index eb250b83..593fc050 100644
--- a/hyperdbg/hypertrace/code/api/LbrApi.c
+++ b/hyperdbg/hypertrace/code/api/LbrApi.c
@@ -21,7 +21,7 @@ HyperTraceLbrExamplePerformTrace()
{
if (LbrStart(LBR_SELECT_WITHOUT_FILTER))
{
- for (volatile INT i = 0; i < 50; i++)
+ for (volatile int i = 0; i < 50; i++)
{
if (i % 2)
{
diff --git a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
index c405c4ae..c1a1c124 100644
--- a/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
+++ b/hyperdbg/hypertrace/code/broadcast/DpcRoutines.c
@@ -14,10 +14,10 @@
/**
* @brief Broadcast enabling LBR
*
- * @param Dpc The DPC object (unused)
- * @param DeferredContext Context data passed to the DPC (unused)
- * @param SystemArgument1 First system argument used for DPC synchronization
- * @param SystemArgument2 Second system argument used for DPC synchronization
+ * @param Dpc
+ * @param DeferredContext
+ * @param SystemArgument1
+ * @param SystemArgument2
* @return BOOLEAN
*/
BOOLEAN
@@ -69,10 +69,10 @@ DpcRoutineEnableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PV
/**
* @brief Broadcast disabling LBR
*
- * @param Dpc The DPC object (unused)
- * @param DeferredContext Context data passed to the DPC (unused)
- * @param SystemArgument1 First system argument used for DPC synchronization
- * @param SystemArgument2 Second system argument used for DPC synchronization
+ * @param Dpc
+ * @param DeferredContext
+ * @param SystemArgument1
+ * @param SystemArgument2
* @return BOOLEAN
*/
BOOLEAN
@@ -123,10 +123,10 @@ DpcRoutineDisableLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, P
/**
* @brief Broadcast flushing LBR
*
- * @param Dpc The DPC object (unused)
- * @param DeferredContext Context data passed to the DPC (unused)
- * @param SystemArgument1 First system argument used for DPC synchronization
- * @param SystemArgument2 Second system argument used for DPC synchronization
+ * @param Dpc
+ * @param DeferredContext
+ * @param SystemArgument1
+ * @param SystemArgument2
* @return BOOLEAN
*/
BOOLEAN
@@ -151,10 +151,10 @@ DpcRoutineFlushLbr(KDPC * Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVO
/**
* @brief Broadcast updating LBR filter options
*
- * @param Dpc The DPC object (unused)
- * @param DeferredContext Context data passed to the DPC, used as the LBR filter options bitmask
- * @param SystemArgument1 First system argument used for DPC synchronization
- * @param SystemArgument2 Second system argument used for DPC synchronization
+ * @param Dpc
+ * @param DeferredContext
+ * @param SystemArgument1
+ * @param SystemArgument2
* @return BOOLEAN
*/
BOOLEAN
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 1be093d0..471654d4 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -126,9 +126,9 @@ LbrCheckAndReadArchitecturalLbrDetails()
//
// Assign LBR leafs to structure for easier access
//
- Eax1c.AsUInt = A;
- Ebx1c.AsUInt = B;
- Ecx1c.AsUInt = C;
+ Eax1c.AsUInt = a;
+ Ebx1c.AsUInt = b;
+ Ecx1c.AsUInt = c;
//
// Store the CPUID.1CH leaf information in a global structure for later use
@@ -136,7 +136,7 @@ LbrCheckAndReadArchitecturalLbrDetails()
g_Cpuid28Leafs.Eax = Eax1c;
g_Cpuid28Leafs.Ebx = Ebx1c;
g_Cpuid28Leafs.Ecx = Ecx1c;
- g_Cpuid28Leafs.Edx = D;
+ g_Cpuid28Leafs.Edx = d;
//
// Read LBR capacity from CPUID.1CH.00H:EAX[7:0]
@@ -176,14 +176,14 @@ LbrCheckAndReadArchitecturalLbrDetails()
BOOLEAN
LbrCheckAndReadLegacyLbrDetails()
{
- ULONG A, B, C, D;
+ ULONG a, b, c, d;
ULONG Family, Model;
ULONGLONG i;
- xcpuid(1, &A, &B, &C, &D);
+ xcpuid(1, &a, &b, &c, &d);
- Family = ((A >> 8) & 0xF) + ((A >> 20) & 0xFF);
- Model = ((A >> 4) & 0xF) | ((A >> 12) & 0xF0);
+ Family = ((a >> 8) & 0xF) + ((a >> 20) & 0xFF);
+ Model = ((a >> 4) & 0xF) | ((a >> 12) & 0xF0);
for (i = 0; i < sizeof(CPU_LBR_MAPS) / sizeof(CPU_LBR_MAPS[0]); ++i)
{
@@ -908,7 +908,7 @@ LbrStart(UINT64 FilterOptions)
if (g_LbrCapacity == 0)
{
- LogError("Err, LBR aborting, CPU model not supported\n");
+ LogInfo("Err, LBR aborting, CPU model not supported\n");
return FALSE;
}
From eeeff45f70a09e6d060e297ecbdfca93222e47c7 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 31 May 2026 16:38:21 +0200
Subject: [PATCH 202/323] fix refactoring issues
---
hyperdbg/hyperevade/code/SyscallFootprints.c | 6 +++---
hyperdbg/hypertrace/code/lbr/Lbr.c | 8 ++++----
hyperdbg/script-engine/code/common.c | 4 ++--
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/hyperdbg/hyperevade/code/SyscallFootprints.c b/hyperdbg/hyperevade/code/SyscallFootprints.c
index 68147df4..75305a82 100644
--- a/hyperdbg/hyperevade/code/SyscallFootprints.c
+++ b/hyperdbg/hyperevade/code/SyscallFootprints.c
@@ -1354,12 +1354,12 @@ TransparentReplaceVendorStringFromBufferWChar(SYSCALL_CALLBACK_CONTEXT_PARAMS *
//
// Obtain the lengths of all the strings and substring
//
- ULONG tempSize = (ULONG)wcslen(NewVendorString) * sizeof(WCHAR);
+ ULONG TempSize = (ULONG)wcslen(NewVendorString) * sizeof(WCHAR);
ULONG MatchedStringLen = (ULONG)wcslen(HV_REGKEYS[i]) * sizeof(WCHAR);
- ULONG oldLength = *((PBYTE)Buf + DataLenOffset);
+ ULONG OldLength = *((PBYTE)Buf + DataLenOffset);
- ULONG NewStringSize = oldLength - MatchedStringLen + tempSize;
+ ULONG NewStringSize = OldLength - MatchedStringLen + TempSize;
//
// Check if the buffer size allows the modification, in case of expansion
diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c
index 471654d4..de3d8c99 100644
--- a/hyperdbg/hypertrace/code/lbr/Lbr.c
+++ b/hyperdbg/hypertrace/code/lbr/Lbr.c
@@ -85,7 +85,7 @@ CPU_LBR_MAP CPU_LBR_MAPS[] = {
BOOLEAN
LbrCheckAndReadArchitecturalLbrDetails()
{
- ULONG A, B, C, D;
+ ULONG a, b, c, d;
CPUID_EAX_07 Edx07 = {0};
@@ -97,9 +97,9 @@ LbrCheckAndReadArchitecturalLbrDetails()
// Check for Architectural LBR support
//
//
- xcpuidex(CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS, 0x00, &A, &B, &C, &D);
+ xcpuidex(CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS, 0x00, &a, &b, &c, &d);
- Edx07.Edx.AsUInt = D;
+ Edx07.Edx.AsUInt = d;
//
// CPUID.07H.00H:EDX[19] == 1 means arch LBR is supported
@@ -121,7 +121,7 @@ LbrCheckAndReadArchitecturalLbrDetails()
//
// Being here means the CPU supports architectural LBR, we can read the LBR capabilities from CPUID 0x1c leaf
//
- xcpuidex(CPUID_ARCH_LAST_BRANCH_RECORD_INFORMATION, 0x00, &A, &B, &C, &D);
+ xcpuidex(CPUID_ARCH_LAST_BRANCH_RECORD_INFORMATION, 0x00, &a, &b, &c, &d);
//
// Assign LBR leafs to structure for easier access
diff --git a/hyperdbg/script-engine/code/common.c b/hyperdbg/script-engine/code/common.c
index 7bb9440c..33118985 100644
--- a/hyperdbg/script-engine/code/common.c
+++ b/hyperdbg/script-engine/code/common.c
@@ -687,9 +687,9 @@ NewTemp(PSCRIPT_ENGINE_ERROR_TYPE Error)
* @brief Frees the memory allocated by Temp
*
* @param Temp the token representing the temporary variable
- * @return void
+ * @return VOID
*/
-void
+VOID
FreeTemp(PSCRIPT_ENGINE_TOKEN Temp)
{
INT Id = (INT)DecimalToInt(Temp->Value);
From 1e49d3f05c6a40e4ba660cc9ec8e68709a182bbd Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 31 May 2026 18:34:03 +0200
Subject: [PATCH 203/323] refactor doxygen, variables, function names 5
---
hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 2 +-
hyperdbg/libhyperdbg/code/app/messaging.cpp | 6 +-
hyperdbg/libhyperdbg/code/app/packets.cpp | 4 +-
hyperdbg/libhyperdbg/code/common/common.cpp | 112 ++++++++--------
hyperdbg/libhyperdbg/code/common/spinlock.cpp | 40 +++---
.../commands/debugging-commands/cpu.cpp | 2 +-
.../commands/debugging-commands/dt-struct.cpp | 4 +-
.../commands/debugging-commands/e.cpp | 2 +-
.../commands/debugging-commands/gu.cpp | 2 +-
.../commands/debugging-commands/i.cpp | 2 +-
.../commands/debugging-commands/lm.cpp | 26 ++--
.../commands/debugging-commands/p.cpp | 2 +-
.../commands/debugging-commands/s.cpp | 2 +-
.../commands/debugging-commands/t.cpp | 2 +-
.../commands/extension-commands/hide.cpp | 2 +-
.../commands/extension-commands/lbr.cpp | 2 +-
.../commands/extension-commands/pcicam.cpp | 8 +-
.../commands/extension-commands/track.cpp | Bin 17826 -> 8550 bytes
.../debugger/commands/meta-commands/dump.cpp | 2 +-
.../commands/meta-commands/formats.cpp | 14 +-
.../commands/meta-commands/logopen.cpp | 2 +-
.../commands/meta-commands/pagein.cpp | 10 +-
.../commands/meta-commands/script.cpp | 18 +--
.../commands/meta-commands/sympath.cpp | 2 +-
.../debugger/communication/forwarding.cpp | 14 +-
.../code/debugger/communication/namedpipe.cpp | 28 ++--
.../communication/remote-connection.cpp | 32 ++---
.../code/debugger/communication/tcpclient.cpp | 54 ++++----
.../code/debugger/communication/tcpserver.cpp | 64 ++++-----
.../code/debugger/core/debugger.cpp | 32 ++---
.../code/debugger/core/interpreter.cpp | 60 ++++-----
.../code/debugger/driver-loader/install.cpp | 2 +-
.../code/debugger/kernel-level/kd.cpp | 16 +--
.../kernel-level/kernel-listening.cpp | 8 +-
.../code/debugger/misc/assembler.cpp | 8 +-
.../code/debugger/misc/callstack.cpp | 6 +-
.../code/debugger/misc/disassembler.cpp | 126 +++++++++---------
.../libhyperdbg/code/debugger/misc/pci-id.cpp | 68 +++++-----
.../code/debugger/misc/readmem.cpp | 42 +++---
.../script-engine/script-engine-wrapper.cpp | 38 +++---
.../code/debugger/script-engine/symbol.cpp | 22 +--
.../libhyperdbg/code/debugger/tests/tests.cpp | 14 +-
.../debugger/transparency/gaussian-rng.cpp | 14 +-
.../debugger/transparency/transparency.cpp | 48 +++----
.../code/debugger/user-level/pe-parser.cpp | 28 ++--
.../code/debugger/user-level/ud.cpp | 12 +-
.../code/hwdbg/hwdbg-interpreter.cpp | 14 +-
.../libhyperdbg/code/hwdbg/hwdbg-scripts.cpp | 26 ++--
hyperdbg/libhyperdbg/code/objects/objects.cpp | 2 +-
hyperdbg/libhyperdbg/header/assembler.h | 14 +-
hyperdbg/libhyperdbg/header/commands.h | 92 ++++++-------
hyperdbg/libhyperdbg/header/common.h | 38 +++---
hyperdbg/libhyperdbg/header/communication.h | 32 ++---
hyperdbg/libhyperdbg/header/debugger.h | 12 +-
hyperdbg/libhyperdbg/header/forwarding.h | 2 +-
.../libhyperdbg/header/hwdbg-interpreter.h | 6 +-
hyperdbg/libhyperdbg/header/kd.h | 2 +-
hyperdbg/libhyperdbg/header/namedpipe.h | 10 +-
hyperdbg/libhyperdbg/header/pci-id.h | 8 +-
hyperdbg/libhyperdbg/header/script-engine.h | 26 ++--
60 files changed, 641 insertions(+), 647 deletions(-)
diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
index d144ef09..82239fde 100644
--- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
+++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
@@ -504,7 +504,7 @@ HyperDbgLoadKdModule()
GENERIC_PROCESSOR_VENDOR
HyperDbgGetProcessorVendor()
{
- char CpuId[13] = {0};
+ CHAR CpuId[13] = {0};
//
// Read the vendor string
diff --git a/hyperdbg/libhyperdbg/code/app/messaging.cpp b/hyperdbg/libhyperdbg/code/app/messaging.cpp
index 390ab620..c8d903f3 100644
--- a/hyperdbg/libhyperdbg/code/app/messaging.cpp
+++ b/hyperdbg/libhyperdbg/code/app/messaging.cpp
@@ -81,11 +81,11 @@ UnsetTextMessageCallback()
* @return VOID
*/
VOID
-ShowMessages(const char * Fmt, ...)
+ShowMessages(const CHAR * Fmt, ...)
{
va_list ArgList;
va_list Args;
- char TempMessage[COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT] = {0};
+ CHAR TempMessage[COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT] = {0};
if (g_MessageHandler == NULL && !g_IsConnectedToRemoteDebugger && !g_IsSerialConnectedToRemoteDebugger)
{
@@ -103,7 +103,7 @@ ShowMessages(const char * Fmt, ...)
va_start(ArgList, Fmt);
- int SprintfResult = vsprintf_s(TempMessage, Fmt, ArgList);
+ INT SprintfResult = vsprintf_s(TempMessage, Fmt, ArgList);
va_end(ArgList);
diff --git a/hyperdbg/libhyperdbg/code/app/packets.cpp b/hyperdbg/libhyperdbg/code/app/packets.cpp
index 374554fa..55679001 100644
--- a/hyperdbg/libhyperdbg/code/app/packets.cpp
+++ b/hyperdbg/libhyperdbg/code/app/packets.cpp
@@ -86,7 +86,7 @@ ReadIrpBasedBuffer()
//
// allocate buffer for transferring messages
//
- char * OutputBuffer = (char *)malloc(UsermodeBufferSize);
+ CHAR * OutputBuffer = (CHAR *)malloc(UsermodeBufferSize);
try
{
@@ -355,7 +355,7 @@ ReadIrpBasedBuffer()
* @return DWORD Device Handle
*/
DWORD WINAPI
-IrpBasedBufferThread(void * data)
+IrpBasedBufferThread(PVOID Data)
{
//
// Do stuff. This will be the first function called on the new
diff --git a/hyperdbg/libhyperdbg/code/common/common.cpp b/hyperdbg/libhyperdbg/code/common/common.cpp
index bad53e8d..2f494eab 100644
--- a/hyperdbg/libhyperdbg/code/common/common.cpp
+++ b/hyperdbg/libhyperdbg/code/common/common.cpp
@@ -44,11 +44,11 @@ SeparateTo64BitValue(UINT64 Value)
* @return VOID
*/
VOID
-PrintBits(const UINT32 Size, const void * Ptr)
+PrintBits(const UINT32 Size, const VOID * Ptr)
{
- unsigned char * Buf = (unsigned char *)Ptr;
- unsigned char Byte;
- int i, j;
+ UCHAR * Buf = (UCHAR *)Ptr;
+ UCHAR Byte;
+ INT i, j;
for (i = Size - 1; i >= 0; i--)
{
@@ -72,10 +72,10 @@ PrintBits(const UINT32 Size, const void * Ptr)
BOOL
Replace(std::string & str, const std::string & from, const std::string & to)
{
- size_t start_pos = str.find(from);
- if (start_pos == std::string::npos)
+ SIZE_T StartPos = str.find(from);
+ if (StartPos == std::string::npos)
return FALSE;
- str.replace(start_pos, from.size(), to);
+ str.replace(StartPos, from.size(), to);
return TRUE;
}
@@ -90,7 +90,7 @@ Replace(std::string & str, const std::string & from, const std::string & to)
VOID
ReplaceAll(string & str, const string & from, const string & to)
{
- size_t SartPos = 0;
+ SIZE_T SartPos = 0;
if (from.empty())
return;
@@ -114,7 +114,7 @@ ReplaceAll(string & str, const string & from, const string & to)
* @return const vector
*/
const vector
-Split(const string & s, const char & c)
+Split(const string & s, const CHAR & c)
{
string buff {""};
vector v;
@@ -210,18 +210,18 @@ IsDecimalNotation(const string & s)
* @brief converts hex to bytes
*
* @param hex
- * @return vector
+ * @return vector
*/
-vector
+vector
HexToBytes(const string & hex)
{
- vector Bytes;
+ vector Bytes;
- for (unsigned int i = 0; i < hex.length(); i += 2)
+ for (UINT32 i = 0; i < hex.length(); i += 2)
{
std::string byteString = hex.substr(i, 2);
- char byte = (char)strtol(byteString.c_str(), NULL, 16);
- Bytes.push_back(byte);
+ CHAR Byte = (CHAR)strtol(byteString.c_str(), NULL, 16);
+ Bytes.push_back(Byte);
}
return Bytes;
@@ -283,19 +283,19 @@ ConvertStringToUInt64(string TextToConvert, PUINT64 Result)
}
else
{
- errno = 0;
- char * unparsed = NULL;
- const char * s = TextToConvert.c_str();
- const unsigned long long int n = strtoull(s, &unparsed, 10);
+ errno = 0;
+ CHAR * Unparsed = NULL;
+ const CHAR * S = TextToConvert.c_str();
+ const UINT64 N = strtoull(S, &Unparsed, 10);
- if (errno || (!n && s == unparsed))
+ if (errno || (!N && S == Unparsed))
{
// fflush(stdout);
// perror(s);
return FALSE;
}
- *Result = n;
+ *Result = N;
return TRUE;
}
}
@@ -316,11 +316,11 @@ ConvertStringToUInt64(string TextToConvert, PUINT64 Result)
//
// It's a hex number
//
- const char * Text = TextToConvert.c_str();
- errno = 0;
- unsigned long long result = strtoull(Text, NULL, 16);
+ const CHAR * Text = TextToConvert.c_str();
+ errno = 0;
+ UINT64 ResultValue = strtoull(Text, NULL, 16);
- *Result = result;
+ *Result = ResultValue;
if (errno == EINVAL)
{
@@ -386,8 +386,8 @@ ConvertStringToUInt32(string TextToConvert, PUINT32 Result)
{
try
{
- int i = std::stoi(TextToConvert);
- *Result = i;
+ INT I = std::stoi(TextToConvert);
+ *Result = I;
return TRUE;
}
catch (std::invalid_argument const &)
@@ -500,7 +500,7 @@ GetLowerStringFromCommandToken(CommandToken TargetToken)
* @return BOOLEAN shows whether text is equal or not
*/
BOOLEAN
-CompareLowerCaseStrings(CommandToken TargetToken, const char * StringToCompare)
+CompareLowerCaseStrings(CommandToken TargetToken, const CHAR * StringToCompare)
{
//
// Extract the token type and value from the tuple
@@ -687,7 +687,7 @@ SetPrivilege(HANDLE Token, // access token handle
*
* @param s
*/
-static inline void
+static inline VOID
ltrim(std::string & s)
{
s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](int ch) { return !std::isspace(ch); }));
@@ -698,7 +698,7 @@ ltrim(std::string & s)
*
* @param s
*/
-static inline void
+static inline VOID
rtrim(std::string & s)
{
s.erase(std::find_if(s.rbegin(), s.rend(), [](int ch) { return !std::isspace(ch); })
@@ -711,7 +711,7 @@ rtrim(std::string & s)
*
* @param s
*/
-void
+VOID
Trim(std::string & s)
{
ltrim(s);
@@ -737,7 +737,7 @@ RemoveSpaces(std::string str)
* @return BOOLEAN shows whether the file exist or not
*/
BOOLEAN
-IsFileExistA(const char * FileName)
+IsFileExistA(const CHAR * FileName)
{
struct stat buffer;
return (stat(FileName, &buffer) == 0);
@@ -750,7 +750,7 @@ IsFileExistA(const char * FileName)
* @return BOOLEAN shows whether the file exist or not
*/
BOOLEAN
-IsFileExistW(const wchar_t * FileName)
+IsFileExistW(const WCHAR * FileName)
{
struct _stat64i32 buffer;
return (_wstat(FileName, &buffer) == 0);
@@ -762,9 +762,9 @@ IsFileExistW(const wchar_t * FileName)
* @param Text
*/
BOOLEAN
-IsEmptyString(char * Text)
+IsEmptyString(CHAR * Text)
{
- size_t Len;
+ SIZE_T Len;
if (Text == NULL || Text[0] == '\0')
{
@@ -772,7 +772,7 @@ IsEmptyString(char * Text)
}
Len = strlen(Text);
- for (size_t i = 0; i < Len; i++)
+ for (SIZE_T i = 0; i < Len; i++)
{
if (Text[i] != ' ' && Text[i] != '\t' && Text[i] != '\n')
{
@@ -860,10 +860,10 @@ StringToWString(std::wstring & ws, const std::string & s)
* @param Input
* @param ToSearch
* @param Pos
- * @return size_t
+ * @return SIZE_T
*/
-size_t
-FindCaseInsensitive(std::string Input, std::string ToSearch, size_t Pos)
+SIZE_T
+FindCaseInsensitive(std::string Input, std::string ToSearch, SIZE_T Pos)
{
// Convert complete given String to lower case
std::transform(Input.begin(), Input.end(), Input.begin(), ::tolower);
@@ -879,10 +879,10 @@ FindCaseInsensitive(std::string Input, std::string ToSearch, size_t Pos)
* @param Input
* @param ToSearch
* @param Pos
- * @return size_t
+ * @return SIZE_T
*/
-size_t
-FindCaseInsensitiveW(std::wstring Input, std::wstring ToSearch, size_t Pos)
+SIZE_T
+FindCaseInsensitiveW(std::wstring Input, std::wstring ToSearch, SIZE_T Pos)
{
// Convert complete given String to lower case
std::transform(Input.begin(), Input.end(), Input.begin(), ::tolower);
@@ -898,29 +898,27 @@ FindCaseInsensitiveW(std::wstring Input, std::wstring ToSearch, size_t Pos)
* std::transform(vs.begin(), vs.end(), std::back_inserter(vc), ConvertStringVectorToCharPointerArray);
* from: https://stackoverflow.com/questions/7048888/stdvectorstdstring-to-char-array
*
- * @param Input
- * @param ToSearch
- * @param Pos
- * @return size_t
+ * @param s
+ * @return CHAR*
*/
-char *
+CHAR *
ConvertStringVectorToCharPointerArray(const std::string & s)
{
- char * pc = new char[s.size() + 1];
- std::strcpy(pc, s.c_str());
- return pc;
+ CHAR * Pc = new CHAR[s.size() + 1];
+ std::strcpy(Pc, s.c_str());
+ return Pc;
}
/**
* @brief Get cpuid results
*
- * @param UINT32 Func
- * @param UINT32 SubFunc
- * @param int * CpuInfo
+ * @param Func
+ * @param SubFunc
+ * @param CpuInfo
* @return VOID
*/
VOID
-CommonCpuidInstruction(UINT32 Func, UINT32 SubFunc, int * CpuInfo)
+CommonCpuidInstruction(UINT32 Func, UINT32 SubFunc, INT * CpuInfo)
{
CpuIdEx(CpuInfo, Func, SubFunc);
}
@@ -933,7 +931,7 @@ CommonCpuidInstruction(UINT32 Func, UINT32 SubFunc, int * CpuInfo)
UINT32
Getx86VirtualAddressWidth()
{
- int Regs[4];
+ INT Regs[4];
CommonCpuidInstruction(CPUID_ADDR_WIDTH, 0, Regs);
@@ -951,8 +949,8 @@ Getx86VirtualAddressWidth()
BOOLEAN
CheckCpuSupportRtm()
{
- int Regs1[4];
- int Regs2[4];
+ INT Regs1[4];
+ INT Regs2[4];
BOOLEAN Result;
//
diff --git a/hyperdbg/libhyperdbg/code/common/spinlock.cpp b/hyperdbg/libhyperdbg/code/common/spinlock.cpp
index 7668f21d..39ebb82c 100644
--- a/hyperdbg/libhyperdbg/code/common/spinlock.cpp
+++ b/hyperdbg/libhyperdbg/code/common/spinlock.cpp
@@ -29,12 +29,12 @@
* @brief The maximum wait before PAUSE
*
*/
-static unsigned MaxWait = 65536;
+static UINT32 MaxWait = 65536;
/**
* @brief Tries to get the lock otherwise returns
*
- * @param LONG Lock variable
+ * @param Lock Lock variable
* @return BOOLEAN If it was successful on getting the lock
*/
BOOLEAN
@@ -46,16 +46,16 @@ SpinlockTryLock(volatile LONG * Lock)
/**
* @brief Tries to get the lock and won't return until successfully get the lock
*
- * @param LONG Lock variable
+ * @param Lock Lock variable
*/
-void
+VOID
SpinlockLock(volatile LONG * Lock)
{
- unsigned wait = 1;
+ UINT32 Wait = 1;
while (!SpinlockTryLock(Lock))
{
- for (unsigned i = 0; i < wait; ++i)
+ for (UINT32 i = 0; i < Wait; ++i)
{
CpuPause();
}
@@ -65,13 +65,13 @@ SpinlockLock(volatile LONG * Lock)
// clamp it to the MaxWait.
//
- if (wait * 2 > MaxWait)
+ if (Wait * 2 > MaxWait)
{
- wait = MaxWait;
+ Wait = MaxWait;
}
else
{
- wait = wait * 2;
+ Wait = Wait * 2;
}
}
}
@@ -79,17 +79,17 @@ SpinlockLock(volatile LONG * Lock)
/**
* @brief Tries to get the lock and won't return until successfully get the lock
*
- * @param LONG Lock variable
- * @param LONG MaxWait Maximum wait (pause) count
+ * @param Lock Lock variable
+ * @param MaximumWait Maximum wait (pause) count
*/
-void
-SpinlockLockWithCustomWait(volatile LONG * Lock, unsigned MaximumWait)
+VOID
+SpinlockLockWithCustomWait(volatile LONG * Lock, UINT32 MaximumWait)
{
- unsigned wait = 1;
+ UINT32 Wait = 1;
while (!SpinlockTryLock(Lock))
{
- for (unsigned i = 0; i < wait; ++i)
+ for (UINT32 i = 0; i < Wait; ++i)
{
CpuPause();
}
@@ -99,13 +99,13 @@ SpinlockLockWithCustomWait(volatile LONG * Lock, unsigned MaximumWait)
// clamp it to the MaxWait.
//
- if (wait * 2 > MaximumWait)
+ if (Wait * 2 > MaximumWait)
{
- wait = MaximumWait;
+ Wait = MaximumWait;
}
else
{
- wait = wait * 2;
+ Wait = Wait * 2;
}
}
}
@@ -113,9 +113,9 @@ SpinlockLockWithCustomWait(volatile LONG * Lock, unsigned MaximumWait)
/**
* @brief Release the lock
*
- * @param LONG Lock variable
+ * @param Lock Lock variable
*/
-void
+VOID
SpinlockUnlock(volatile LONG * Lock)
{
*Lock = 0;
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/cpu.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/cpu.cpp
index 017a1ae0..970d44ec 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/cpu.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/cpu.cpp
@@ -246,7 +246,7 @@ const InstructionSet::InstructionSet_Internal InstructionSet::CPU_Rep;
/**
* @brief Reads the CPU vendor string
*
- * @return char *
+ * @return VOID
*/
VOID
CpuReadVendorString(CHAR * Result)
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/dt-struct.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/dt-struct.cpp
index 71b00549..6233e00a 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/dt-struct.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/dt-struct.cpp
@@ -314,13 +314,13 @@ CommandDtAndStructConvertHyperDbgArgsToPdbex(vector ExtraArgs,
*/
BOOLEAN
CommandDtShowDataBasedOnSymbolTypes(
- const char * TypeName,
+ const CHAR * TypeName,
UINT64 Address,
BOOLEAN IsStruct,
PVOID BufferAddress,
UINT32 TargetPid,
BOOLEAN IsPhysicalAddress,
- const char * AdditionalParameters)
+ const CHAR * AdditionalParameters)
{
UINT64 StructureSize = 0;
BOOLEAN ResultOfFindingSize = FALSE;
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/e.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/e.cpp
index 634dc8df..2d78acfc 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/e.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/e.cpp
@@ -231,7 +231,7 @@ HyperDbgWriteMemory(PVOID DestinationAddress,
//
// Copy requested memory in 64bit chunks
//
- for (size_t i = 0; i < NumberOfBytes; i++)
+ for (SIZE_T i = 0; i < NumberOfBytes; i++)
{
TargetBuffer[i] = BufferToEdit[i];
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/gu.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/gu.cpp
index 1f7136ff..36362c21 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/gu.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/gu.cpp
@@ -103,7 +103,7 @@ CommandGu(vector CommandTokens, string Command)
//
g_IsInstrumentingInstructions = TRUE;
- for (size_t i = 0; i < StepCount; i++)
+ for (SIZE_T i = 0; i < StepCount; i++)
{
//
// For logging purpose
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/i.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/i.cpp
index 81055446..29fdad73 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/i.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/i.cpp
@@ -104,7 +104,7 @@ CommandI(vector CommandTokens, string Command)
//
g_IsInstrumentingInstructions = TRUE;
- for (size_t i = 0; i < StepCount; i++)
+ for (SIZE_T i = 0; i < StepCount; i++)
{
//
// For logging purpose
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/lm.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/lm.cpp
index ff3dbac2..1b29d3c6 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/lm.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/lm.cpp
@@ -48,7 +48,7 @@ CommandLmHelp()
* @return wstring
*/
std::wstring
-CommandLmConvertWow64CompatibilityPaths(const wchar_t * LocalFilePath)
+CommandLmConvertWow64CompatibilityPaths(const WCHAR * LocalFilePath)
{
std::wstring filePath(LocalFilePath);
@@ -56,7 +56,7 @@ CommandLmConvertWow64CompatibilityPaths(const wchar_t * LocalFilePath)
std::transform(filePath.begin(), filePath.end(), filePath.begin(), ::tolower);
// Replace "\windows\system32" with "\windows\syswow64"
- size_t pos = filePath.find(L":\\windows\\system32");
+ SIZE_T pos = filePath.find(L":\\windows\\system32");
if (pos != std::string::npos)
{
filePath.replace(pos, 18, L":\\Windows\\SysWOW64");
@@ -80,7 +80,7 @@ CommandLmConvertWow64CompatibilityPaths(const wchar_t * LocalFilePath)
* @return BOOLEAN
*/
BOOLEAN
-CommandLmShowUserModeModule(UINT32 ProcessId, const char * SearchModule)
+CommandLmShowUserModeModule(UINT32 ProcessId, const CHAR * SearchModule)
{
BOOLEAN Status;
ULONG ReturnedLength;
@@ -89,8 +89,8 @@ CommandLmShowUserModeModule(UINT32 ProcessId, const char * SearchModule)
PUSERMODE_LOADED_MODULE_DETAILS ModuleDetailsRequest = NULL;
PUSERMODE_LOADED_MODULE_SYMBOLS Modules = NULL;
USERMODE_LOADED_MODULE_DETAILS ModuleCountRequest = {0};
- size_t CharSize = 0;
- wchar_t * WcharBuff = NULL;
+ SIZE_T CharSize = 0;
+ WCHAR * WcharBuff = NULL;
wstring SearchModuleString;
//
@@ -189,7 +189,7 @@ CommandLmShowUserModeModule(UINT32 ProcessId, const char * SearchModule)
if (SearchModule != NULL)
{
CharSize = strlen(SearchModule) + 1;
- WcharBuff = (wchar_t *)malloc(CharSize * 2);
+ WcharBuff = (WCHAR *)malloc(CharSize * 2);
if (WcharBuff == NULL)
{
@@ -203,7 +203,7 @@ CommandLmShowUserModeModule(UINT32 ProcessId, const char * SearchModule)
SearchModuleString.assign(WcharBuff, wcslen(WcharBuff));
}
- for (size_t i = 0; i < ModulesCount; i++)
+ for (SIZE_T i = 0; i < ModulesCount; i++)
{
//
// Check if we need to search for the module or not
@@ -213,7 +213,7 @@ CommandLmShowUserModeModule(UINT32 ProcessId, const char * SearchModule)
//
// Convert FullPathName to string
//
- std::wstring FullPathName((wchar_t *)Modules[i].FilePath);
+ std::wstring FullPathName((WCHAR *)Modules[i].FilePath);
if (FindCaseInsensitiveW(FullPathName, SearchModuleString, 0) == std::wstring::npos)
{
@@ -271,7 +271,7 @@ CommandLmShowUserModeModule(UINT32 ProcessId, const char * SearchModule)
* @return BOOLEAN
*/
BOOLEAN
-CommandLmShowKernelModeModule(const char * SearchModule)
+CommandLmShowKernelModeModule(const CHAR * SearchModule)
{
PRTL_PROCESS_MODULES ModulesInfo = NULL;
string SearchModuleString;
@@ -302,7 +302,7 @@ CommandLmShowKernelModeModule(const char * SearchModule)
//
// Convert FullPathName to string
//
- std::string FullPathName((char *)CurrentModule->FullPathName);
+ std::string FullPathName((CHAR *)CurrentModule->FullPathName);
if (FindCaseInsensitive(FullPathName, SearchModuleString, 0) == std::string::npos)
{
@@ -317,7 +317,7 @@ CommandLmShowKernelModeModule(const char * SearchModule)
ShowMessages("%x\t", CurrentModule->ImageSize);
auto PathName = CurrentModule->FullPathName + CurrentModule->OffsetToFileName;
- UINT32 PathNameLen = (UINT32)strlen((const char *)PathName);
+ UINT32 PathNameLen = (UINT32)strlen((const CHAR *)PathName);
ShowMessages("%s\t", PathName);
@@ -362,8 +362,8 @@ CommandLm(vector CommandTokens, string Command)
BOOLEAN OnlyShowKernelModules = FALSE;
BOOLEAN OnlyShowUserModules = FALSE;
UINT32 TargetPid = NULL;
- char Search[MAX_PATH] = {0};
- char * SearchString = NULL;
+ CHAR Search[MAX_PATH] = {0};
+ CHAR * SearchString = NULL;
//
// Interpret command specific details (if any)
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/p.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/p.cpp
index 4836feb6..a50a41d2 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/p.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/p.cpp
@@ -108,7 +108,7 @@ CommandP(vector CommandTokens, string Command)
//
g_IsInstrumentingInstructions = TRUE;
- for (size_t i = 0; i < StepCount; i++)
+ for (SIZE_T i = 0; i < StepCount; i++)
{
//
// For logging purpose
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/s.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/s.cpp
index 4c7e82a0..80f99f70 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/s.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/s.cpp
@@ -102,7 +102,7 @@ CommandSearchSendRequest(UINT64 * BufferToSendAsIoctl, UINT32 BufferToSendAsIoct
//
// Show the results (if any)
//
- for (size_t i = 0; i < MaximumSearchResults; i++)
+ for (SIZE_T i = 0; i < MaximumSearchResults; i++)
{
CurrentValue = ResultsBuffer[i];
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/t.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/t.cpp
index 67a40cc6..afc48d51 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/t.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/t.cpp
@@ -102,7 +102,7 @@ CommandT(vector CommandTokens, string Command)
//
g_IsInstrumentingInstructions = TRUE;
- for (size_t i = 0; i < StepCount; i++)
+ for (SIZE_T i = 0; i < StepCount; i++)
{
//
// For logging purpose
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/hide.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/hide.cpp
index 9eb9c875..8a3c989b 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/hide.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/hide.cpp
@@ -235,7 +235,7 @@ HyperDbgEnableTransparentMode(UINT32 ProcessId, CHAR * ProcessName, BOOLEAN IsPr
ULONG ReturnedLength;
DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE HideRequest = {0};
PDEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE FinalRequestBuffer = 0;
- size_t RequestBufferSize = 0;
+ SIZE_T RequestBufferSize = 0;
//
// Check if debugger is loaded or not
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
index 42b03baa..fde287ee 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/lbr.cpp
@@ -196,7 +196,7 @@ CommandLbrParseFilterOperation(vector CommandTokens, HYPERTRACE_LB
LbrRequest->LbrOperationType = HYPERTRACE_LBR_OPERATION_REQUEST_TYPE_FILTER;
LbrRequest->LbrFilterOptions = 0; // no options = capture everything
- for (size_t i = 2; i < CommandTokens.size(); i++)
+ for (SIZE_T i = 2; i < CommandTokens.size(); i++)
{
if (CompareLowerCaseStrings(CommandTokens.at(i), "kernel"))
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pcicam.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pcicam.cpp
index 9be38e72..0e7d38f1 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pcicam.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pcicam.cpp
@@ -52,7 +52,7 @@ CommandPcicam(vector CommandTokens, string Command)
UINT32 TargetDevice = 0;
UINT32 TargetFunction = 0;
- const char * PciHeaderTypes[] = {"Endpoint", "PCI-to-PCI Bridge", "PCI-to-CardBus Bridge"};
+ const CHAR * PciHeaderTypes[] = {"Endpoint", "PCI-to-PCI Bridge", "PCI-to-CardBus Bridge"};
if (CommandTokens.size() < 4 || CommandTokens.size() > 5)
{
@@ -150,8 +150,8 @@ CommandPcicam(vector CommandTokens, string Command)
//
// For some reason, MSVC refuses to initialize these at top of case
//
- const char * PciHeaderTypeAsString[] = {"Endpoint", "PCI-to-PCI Bridge", "PCI-to-CardBus Bridge"};
- const char * PciMmioBarTypeAsString[] = {"32-bit Wide",
+ const CHAR * PciHeaderTypeAsString[] = {"Endpoint", "PCI-to-PCI Bridge", "PCI-to-CardBus Bridge"};
+ const CHAR * PciMmioBarTypeAsString[] = {"32-bit Wide",
"Reserved",
"64-bit Wide",
"Reserved"};
@@ -345,7 +345,7 @@ CommandPcicam(vector CommandTokens, string Command)
//
for (UINT8 j = 0; j < 16; j++)
{
- char c = (char)*(cs + j);
+ CHAR c = (CHAR) * (cs + j);
if (c >= 32 && c <= 126)
{
ShowMessages("%c", c);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/track.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/track.cpp
index 0dc11414f9231700fdb0bf6670029c5b7365edb0..23c91fab5c2e57ccb862e50a1dafb0d5f0226d07 100644
GIT binary patch
literal 8550
zcmeHMZExE~68`RAG10*hmB_N=sXJ?*y=0%6kp6$^y`gQIHg3`qGzO}qKRzq%GoKuZ$6uFsu}EgqMJq}c4fXLf@x`2;s1?YIRx5n1Ud%-5`hisUHzJXK6w*=a
zrGDq8f{u@lUmhI&9se+$$rP0!t6erQ|!b=Iai3o%%#f-9WCK5`Qg3d3;
zbd^m5-=hoP6QLAz^RlIvI^6r4A9_JH6I6@6Woud6+dDkOKROShsTP}9(C*$+;-sSn^YS8a=heKLS+W7QFTqThwq}2Ojm0=217Snee
zp*@==n1~Y?W4y~%auIpZh_g_dY0!i16Ze7L7>IvU<1_LdJ=!fEXNdyj?V
zoj*dm?m|dMjqqsAEd5sdmn2`=Uz?ofNwlI&isWDw0jFt1-+)39=tuaU{fM{ar?qki
zjC+Y-Z-Na2>?1^ru9UA(2z=s%E*vPWOIpIQf;)H;JE?#h&3I2Q3g`YJO9aWg)iequ
zO~pLIqqRu}*I!^I_@Qxda&efHR&FfG)xZ)`FP8viaRkP|lzA4a!&2z3glt`h*I}&z
z+}%@IP2K@WxAc~-Q=_yme3q~Dr4wagO3qT;HoofVkD8r`#m31S_TIMYb$XqO)&fEq
zkys*nafIv9Qy_*t;|F}M3PiAF073&6H{&pN6L&>9@S<D0%U+^j$3Y7cF4g48HlvV
z2!~KF)gOOOjxCXFN&jEMY0xk4=@p_3F70M~S8=r(SUv*c5G3FpxkuOcWnE#dspj&m
z%5^T%4uZ)Ly7ZY-hw8v*@JCyUHIdxZIchXo-ULT>8bEQrWIm@Ph4P&?h<=9cc}l65
z&Qf^a2#5bJ>Toz8Z1b^4Oa}IctelyiH5*a2
zCfSdT-3J9Psf5AXOmnOUO?4Ez>5}R#Jn>zf;ENPQ?#$voK5}t^r79Ge^P-@-cHVjp
z@8T~QHku+23ZWL61*xR(J~l0gv1Hj|7rv<}!Ynm^4?6=PMXDUiq*;u8AEchgV?GPW
zr{ZV3V>j>naJc5L*vwXt%L?bg4U-47wltqwZuhXm@_&?CG?7)*fGsCY}EHay03mO@^cH)fL{{BPs2Sid6-&
z!HV7x56MAN9MKR=!`aT;oE=Ask=Frf2o0-=i|D&Z6x%40k&aoSnP&&J2L15|FZaOL
zN(nWCeO6paiTs2(4u8s!3i1p(%aV*}h4NGWV7eVM$1FJZe9j8jSJ^?yt)!g6N#@<^wngB4q4h
zY{u`9+A7r;JL?$vV3D@&rWQ(okREbYPp2u+S{{=T?el`IFordcOT(>I9hgZQx0tDz
zWZ3%$D2jYlGU3n9RCvuh@}ED~VzL6OR=2k0mk{|3stBURf>|=ok~oq&b>P>0-JelK
z4r+N6&MB%EFxvi{_V>xzzilAyG&yT+9ic(s_@pyAy`Jif4pWHJ){CFM{OTUF(HWG?${X(E}nNPCtRD#x_z?KQy$Xo
z6gBR*k|bHYk|-^?t&Jh?XO&ljD*z(PkIj=Q!`<+1g?hJ;-&$g)$Ylqkl!l{&TBt-v
zRq2YV^K^#OR2J@r>m$ZF^P!iaoI%0M@f>}rCf!BZ_Iz~7tk2)Fw{ZRK=3Zi@?LYRQ
zp=#OrL6x0=nkP{I%&5-YgE})SDv`9F*ONLcILYR7k&L2KU%IgP3T-p11m(9EB3z_P
zYp^G8-@Kl@eq{{}{MfXh^3`>?*wtcDQVxue+NHJCoN?zvdjNLYAlsIrkF8X_^4?Z?
zf=5ry8&CN;A3c%xeEkY!QD`HtugfI|$b+lQVK50upWLZN4->xX$K-_s=r<+TLw$kH
zjH|wxqDh61xcw7iz$%ZmvAIHE#3_qcd_qAOn<+d37`ze}E@&`Kb)!k3#f!_xm6MR-
zhtEradC6!gIvUEB-E?`;PjEtKljSV6G?i&Ju$rh#G@hFDv?nne?EOeg=U~%NzC<6Y
zKR+{VDXuwnVY${*i8Bf8Tf9M=h1*-GvuJ+dsRtn5I=`m
z38j7r+iNIjdNlD?(v9xX+9uvn7+NWgI@LIxzZt4x=f#(=0CMg6wtIYi`_rrI+c)@o
ze8m6NOaZnfA=*-@TIo^Au%8n&lsnLB6o|HiOm>*gG`~5+(dnc=9$k$`lMn67(~Bxr&_zpm9&huS~;jPk(C0htL&$ar9P;xP$jES*?af=HxJGKuhq9fdz+M}gyalh
zE7s}Bd!_I7^t>86XEEt2GPlLM*ifnOK6g&)9H9Ru9wh`32QWX-n{DuV_9+jDB
z$uPX*7BwFnXhHdtO1Zn{*8iu%hp2E(VfT0t;iKff>b(jlY=Qp?mz5!)9mnXLo8P|>
z*Ub;Bs(ESJ+k{j|mjq@S;}7lp^&ex`VQRkSLm@^m@HyqnvpxNLTDi9VOc4s-@*X;`
z;fZ;+!yd$bHtUCGd#7|tBvxyFxV3?2iKh3(kM%`M-6(@g8>zgt5Nb_Ee(XuhtMgt7
vzsN5ZzwC3B^uL*Sb-D@WTBmhhuHu}mpeOe3>*}v=jL5Tt@3(Htb=Q9YSYwSp
literal 17826
zcmeI4YjYIG6^8qBs`4KOr9ew;u#FuTjuV%;n=&>ONce;8q68AMVu2K`z&Mw`p5%S{
z?3?MH?Y&7NNu^v{sCTA&y3h4Jr%%uF&wsp^eyh)~)2~vewo9L<=V>qPryYGiPDg1g
zJxf2P%ldn$PdRQYz0!yu(t$>G>5-m#snK2fQh$%qYyEwhwsp5lqcooMey;I9Yn~mA
z*iKK=u4d->-E^^<`>F2jY1DH)eXgLR6CDTXg+4KRNzb;%AL~BUkE_{U=k=iBKs0sf
zeXaUoHDX)O9cxsVuBi8ldM~N{-Q=%Vaf_6o<50Xn=dQRq*0URG_q2AWo+I`DNi#mn
zJ#qI)*GP6tV|K)UCkY}Wq=B@5(6=t#NnfW;wGY($RO9zFN0;v9c1PoRwv&866c?t*
z?R)voZ#4F$p4!(8%-*FnQS?mnU)I01JccLU)5k6A?u+K9qHbSLJXQ;DTbYKPiA4Rx
zPI{B&b(H0KJ>A#mUb>a8iS}-Z&u)5>?rP3QnRiy%PdBo5Ug{1qLp~e2^HASjsO8R0
z{d+2&cJ)gAR?JJ0lOtWU`^THVz%SUK`IJN~ap
z+S^(;)(lP5UK4BCTHIon&>A)~5_P=|T@-Jiz-%kp%re=KC106gGhb(2JQZC>lG$@f
zjg|24yVHUdh7TYB@=sDY3eyq7cj|F-mXPkOku^g55^cL(XG
zY|XoxZ?TWS$8eq3nqz;$Zy@xLL%ikBk{NnD7KO2D*bRNtYq!=3?GEEYiOC?g!}%{|&9m#xg@
zSTg%gSNvO(z4gdws%P8VnpXc=&w*NRvfQ{oe|q4l*_HHIfF1
zco)@IQ*d^xv-a*vYnNJ^$NlOQBOU%>sptiX)zY%8y7YmNKR$0`osi1xRsNoB7fDR#
z)HQa7z2bA^eSx4gPqk$m58aY~9?F8iB(MhiC{ghsV+#M*TXwAZyx@)OueEzqQxYvp*_ODst4whNgYp8L{W#
zIkh|tY<6=uY0$N;a+vRy^}4CER2YWwBd}16ZtTjBZmZ+
zZ|fVjK1(9=WkoC-2_Y`(!;bce)?sdBXB;2WH(beiK$&sWmgE^q52{D>Na3+V&4(4;
z$XL(*n+S|8{3PkDi(+CW62a2GQqDxYJCL>QRI(q=YI{2Qj^nb{8dtj&@7sfu)h*3-
zgdQT7vxk#WuxAA=iT5B~#C;-l}MrCQh$4`&BDD
z!UAKj5?C9n&eGGlft}+U$9V>PVXWOG*X-2U>F-qD;k@g%)+5r4l&j1_wY3Dk&g#WC
zN@`cvF}`fwAzzSX`HayPLgwVmkqQg4{6X`sXB4E*_ttgSIU)N|GQe56rS(4DMy}=+
zr*ljbaUS!p|Cp614P*5o_R
zW80pvEIK{RRAPaVlY>bhQ1B7iedIPsiJswZ-7yV@T;u1VGc@vCwh(saxK2bQPdfa!ZI5)P#^xFihN}>-
z>r5-ECS@(`mMS4n^zW9U*L~H?sFiK#n(En?iZM|s;|XdYo2s^KXv7VT-Bcgn@2lsD
zc;VRx`ouF4XXn{b$e@g@eI|`uh!yiKF?OruWl;fVmyJxzy&}7mVdl_hZMFQ`cf1YED{8SGfQ^f!G>;pyh?ZG)L>&TNNm4&4hPy4Fe*
z3mv-G?KCR6XJ~)reejq4a+yOJtC3!;O?2q3z>#W8cVEgohyX~uw5oEA*8Ng@FY^wF
z{G`v^`NsYPzNvn;^mZZZw)UjAFJW`$mMRsJLMr8Mzi
zvs65mh_x->S(o=XTcV!G9=)54Wk*03$cWSLQO(`i?p157UVcw%YS6iBG|T8{8bgPE
z6n;}i$MAY%CM)_hj*1Mp7^ioU`<172WEAMYHS6Js&<`^P`o=i0IG&3-bZJLJYK=%|
zbDCJkuC}cXDX=C&Zs0i;WUB0B5|I~&4GwqiQF$1iG?v_!bGPoBYgTQ~R`&GS2|EhV
ztM=~J3Vo*ID$|qfPkWOYIAbE3RpmaI#;a7Gr^!ak34;XO%%
zI`N_G?nr+RvX!>DE9Y6%4|j2v)b3uiw)0E~oUAILRu{l|7nKVQ(9*N
zZ&l-!ZRw$86#K>t>4Ny>deIKBMk(viZ5y@R>voxS+9%!fxby6`CtuHM!;&qFh~xNg
z*v@blHgA??sQNT+dwwtCYB=a4#gQ-NUg6jKFhHkDG_g@#>%&N6O5Y2&ywORwX0W0
z$2rc&4#P7$I{Cc;Dg#u{%51mo=OMw~w&tGx?Q!qSsJ!h8S6P4x2
zd&2gJyWzw2yPRcJYkO0#y#y^(@0PW8x|Huj@li^*#H`XUN0M5cNA9W(3d{t
zmdt#)u6inJADq|LC*0E`O3*LYuvt!hd*AkI~J5%LTE3hiw@#-nZhlVqi*TYP$&uP99
zr_jh>FpTy_6${#4j1GP3b6-z}K1X^pcNs)PA1&+QzGtXCjGa)8fQ-G6@5b8BF5gCE
z2wBdK17FKp*yHd%?d^L2Kit;Sjry=p{fHI=oP!!?RmEQrN)oY3&W8LF4nmhj+
z$ZpNIZG$tD*n_g~z)DMOUtLyj1KW&evoUTpO|)>Yja~P1%o}DN;0)5@P5It-oWH%!
zxCVkP^7PU#+uCWpeLcHw)$49kt3Ou;!p@xvB^k>HdXw^dX&4k=)B8$qRN20g+fNiT
zxV}2M<~JZ*)2=o4^{dszRy(<#RWqxjlr7?$%pH=(0?-QHhv$tZZ-*d(?NnwyoHcDI
z`{N9CQ{NuszfUxVUvJ#hj_{UtzaUmyiuAZ1$oc+g#yHLyFX`V0c`km_a!((g_IIP8
zx#`i+ciL9jbKOTEIJvF$u4;ZVRD7BooxIt05%HAR5ml(DwJM?*fltG!^
z&dYh*o;+{Q+~s#Hqk=q^Z}t`B)oDXwk7VzT<6sB7LGtG7Iq&S>C-d8s%SQOcCs^U(
zw%D_&D1>x+nf$l8D|KxfvUbV-sQA|PuC_%mc2PArqFEggE!}A}T`dxEZu4o*)ccuE
zTfaCGPs`LQ>a0Gp?~rSq*T#Hj@%y2^@`BvU$^h5L`CX0aoQLeO&dOSpxALv}DWV2@
zwr%-fya!$9&Y@@HNod7-ZtYl&3%0w6gYm?oU94?()$D8;oA%tRS)%cjH@8dgvIN@x
zJlpJZzSS+xJ7ee5$}i{Tqvg)X_W%Et
z{k60FYs#ArwZo#K$6Mw7?+RnTQ2%Dy6*!Q+d~cs$QL+nhwLK&_T+vv`=}sLDBD=2F
zs*$mch{F}EIqvswIK*yw{x2Zg9F+65aM~P|)g?!$VI|5D%<*tryVaKiIgpL+!G5y-y+Um*u9b{s3H&a6SSj(0ZWpagthU4~(TMp(
z`*wclx!wA?)+u&t@3BgrJ*}n1dj-?ADDK*-&gJ@QOA5>Q#ysx%g&V)q<@dg;?w?M=
Jd2k$m{{^GatA+po
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/dump.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/dump.cpp
index 4c4ba8ac..f5de3129 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/dump.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/dump.cpp
@@ -249,7 +249,7 @@ CommandDump(vector CommandTokens, string Command)
ActualLength = NULL;
Iterator = Length / PAGE_SIZE;
- for (size_t i = 0; i <= Iterator; i++)
+ for (SIZE_T i = 0; i <= Iterator; i++)
{
UINT64 Address = StartAddress + (i * PAGE_SIZE);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/formats.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/formats.cpp
index c8ce1013..65a83280 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/formats.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/formats.cpp
@@ -42,10 +42,10 @@ CommandFormatsHelp()
VOID
CommandFormatsShowResults(UINT64 U64Value)
{
- time_t t;
- struct tm * tmp;
- char MY_TIME[50];
- unsigned int Character;
+ time_t t;
+ struct tm * tmp;
+ CHAR MY_TIME[50];
+ UINT32 Character;
time(&t);
@@ -75,10 +75,10 @@ CommandFormatsShowResults(UINT64 U64Value)
//
// iterate through 8, 8 bits (8*6)
//
- unsigned char * TempCharacter = (unsigned char *)&U64Value;
- for (size_t j = 0; j < sizeof(UINT64); j++)
+ UCHAR * TempCharacter = (UCHAR *)&U64Value;
+ for (SIZE_T j = 0; j < sizeof(UINT64); j++)
{
- Character = (unsigned int)TempCharacter[j];
+ Character = (UINT32)TempCharacter[j];
if (isprint(Character))
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/logopen.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/logopen.cpp
index 0d54b08b..abb0ea31 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/logopen.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/logopen.cpp
@@ -107,7 +107,7 @@ CommandLogopen(vector CommandTokens, string Command)
* @return VOID
*/
VOID
-LogopenSaveToFile(const char * Text)
+LogopenSaveToFile(const CHAR * Text)
{
g_LogOpenFile << Text;
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pagein.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pagein.cpp
index ab66f024..f1531fef 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pagein.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pagein.cpp
@@ -81,10 +81,10 @@ BOOLEAN
CommandPageinCheckAndInterpretModeString(const std::string & ModeString,
PAGE_FAULT_EXCEPTION * PageFaultErrorCode)
{
- std::unordered_set AllowedChars = {'p', 'w', 'u', 'f', 'k', 's', 'h', 'g'};
- std::unordered_set FoundChars;
+ std::unordered_set AllowedChars = {'p', 'w', 'u', 'f', 'k', 's', 'h', 'g'};
+ std::unordered_set FoundChars;
- for (char c : ModeString)
+ for (CHAR c : ModeString)
{
if (AllowedChars.count(c) == 0)
{
@@ -99,7 +99,7 @@ CommandPageinCheckAndInterpretModeString(const std::string & ModeString,
//
// Found a character more than once
//
- return false;
+ return FALSE;
}
FoundChars.insert(c);
@@ -108,7 +108,7 @@ CommandPageinCheckAndInterpretModeString(const std::string & ModeString,
//
// All checks passed, let's interpret the page-fault code
//
- for (char c : ModeString)
+ for (CHAR c : ModeString)
{
if (c == 'p')
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/script.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/script.cpp
index 68f7c5f7..f594ff37 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/script.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/script.cpp
@@ -47,9 +47,9 @@ CommandScriptHelp()
VOID
CommandScriptRunCommand(std::string Input, vector PathAndArgs)
{
- int CommandExecutionResult = 0;
- char * LineContent = NULL;
- int i = 0;
+ INT CommandExecutionResult = 0;
+ CHAR * LineContent = NULL;
+ INT i = 0;
//
// Replace the $arg*s
@@ -69,7 +69,7 @@ CommandScriptRunCommand(std::string Input, vector PathAndArgs)
//
// Convert script to char*
//
- LineContent = (char *)Input.c_str();
+ LineContent = (CHAR *)Input.c_str();
if (IsEmptyString(LineContent))
{
@@ -109,7 +109,7 @@ HyperDbgScriptReadFileAndExecuteCommand(std::vector & PathAndArgs)
{
std::string Line;
BOOLEAN IsOpened = FALSE;
- bool Reset = false;
+ BOOLEAN Reset = FALSE;
string CommandToExecute = "";
string PathOfScriptFile = "";
@@ -134,7 +134,7 @@ HyperDbgScriptReadFileAndExecuteCommand(std::vector & PathAndArgs)
//
// Reset multiline command
//
- Reset = true;
+ Reset = TRUE;
while (std::getline(File, Line))
{
@@ -154,7 +154,7 @@ HyperDbgScriptReadFileAndExecuteCommand(std::vector & PathAndArgs)
//
// The command is expected to be continued
//
- Reset = false;
+ Reset = FALSE;
//
// Append to the previous command
@@ -168,7 +168,7 @@ HyperDbgScriptReadFileAndExecuteCommand(std::vector & PathAndArgs)
//
// Reset for the next commands round
//
- Reset = true;
+ Reset = TRUE;
//
// Append this line too
@@ -229,7 +229,7 @@ HyperDbgScriptReadFileAndExecuteCommandline(INT argc, CHAR * argv[])
//
// Convert it to the array
//
- for (size_t i = 2; i < argc; i++)
+ for (SIZE_T i = 2; i < argc; i++)
{
std::string TempStr(argv[i]);
Args.push_back(TempStr);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/sympath.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/sympath.cpp
index 5b8cd8e7..b413cf8a 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/sympath.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/sympath.cpp
@@ -107,7 +107,7 @@ CommandSympath(vector CommandTokens, string Command)
//
// Check if the string contains '*'
//
- char Delimiter = '*';
+ CHAR Delimiter = '*';
if (Command.find(Delimiter) != std::string::npos)
{
//
diff --git a/hyperdbg/libhyperdbg/code/debugger/communication/forwarding.cpp b/hyperdbg/libhyperdbg/code/debugger/communication/forwarding.cpp
index 6ec387e1..b6d3d940 100644
--- a/hyperdbg/libhyperdbg/code/debugger/communication/forwarding.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/communication/forwarding.cpp
@@ -211,7 +211,7 @@ ForwardingCloseOutputSource(PDEBUGGER_EVENT_FORWARDING SourceDescriptor)
*
* @return HANDLE returns handle of the source
*/
-VOID *
+PVOID
ForwardingCreateOutputSource(DEBUGGER_EVENT_FORWARDING_TYPE SourceType,
const string & Description,
SOCKET * Socket,
@@ -232,7 +232,7 @@ ForwardingCreateOutputSource(DEBUGGER_EVENT_FORWARDING_TYPE SourceType,
// The handle might be INVALID_HANDLE_VALUE which will be
// checked by the caller
//
- return (void *)FileHandle;
+ return (PVOID)FileHandle;
}
else if (SourceType == EVENT_FORWARDING_MODULE)
{
@@ -260,7 +260,7 @@ ForwardingCreateOutputSource(DEBUGGER_EVENT_FORWARDING_TYPE SourceType,
//
// The handle is the location of the hyperdbg_event_forwarding function
//
- return (void *)hyperdbg_event_forwarding;
+ return (PVOID)hyperdbg_event_forwarding;
}
else if (SourceType == EVENT_FORWARDING_NAMEDPIPE)
{
@@ -274,7 +274,7 @@ ForwardingCreateOutputSource(DEBUGGER_EVENT_FORWARDING_TYPE SourceType,
return INVALID_HANDLE_VALUE;
}
- return (void *)PipeHandle;
+ return (PVOID)PipeHandle;
}
else if (SourceType == EVENT_FORWARDING_TCP)
{
@@ -287,7 +287,7 @@ ForwardingCreateOutputSource(DEBUGGER_EVENT_FORWARDING_TYPE SourceType,
// Split the ip and port by : delimiter
//
IpPortDelimiter = ':';
- size_t find = Description.find(IpPortDelimiter);
+ SIZE_T find = Description.find(IpPortDelimiter);
Ip = Description.substr(0, find);
Port = Description.substr(find + 1, find + Description.size());
@@ -302,7 +302,7 @@ ForwardingCreateOutputSource(DEBUGGER_EVENT_FORWARDING_TYPE SourceType,
// because this functionality doesn't work with handlers; however,
// send 1 or TRUE is a valid handle
//
- return (void *)TRUE;
+ return (PVOID)TRUE;
}
else
{
@@ -347,7 +347,7 @@ ForwardingPerformEventForwarding(PDEBUGGER_GENERAL_EVENT_DETAIL EventDetail,
BOOLEAN Result = FALSE;
PLIST_ENTRY TempList = 0;
- for (size_t i = 0; i < DebuggerOutputSourceMaximumRemoteSourceForSingleEvent; i++)
+ for (SIZE_T i = 0; i < DebuggerOutputSourceMaximumRemoteSourceForSingleEvent; i++)
{
//
// Check whether we reached to the end of the events
diff --git a/hyperdbg/libhyperdbg/code/debugger/communication/namedpipe.cpp b/hyperdbg/libhyperdbg/code/debugger/communication/namedpipe.cpp
index 732d3afc..a52fca2c 100644
--- a/hyperdbg/libhyperdbg/code/debugger/communication/namedpipe.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/communication/namedpipe.cpp
@@ -93,7 +93,7 @@ NamedPipeServerWaitForClientConntection(HANDLE PipeHandle)
* @return UINT32
*/
UINT32
-NamedPipeServerReadClientMessage(HANDLE PipeHandle, char * BufferToSave, int MaximumReadBufferLength)
+NamedPipeServerReadClientMessage(HANDLE PipeHandle, CHAR * BufferToSave, INT MaximumReadBufferLength)
{
DWORD cbBytes;
@@ -129,8 +129,8 @@ NamedPipeServerReadClientMessage(HANDLE PipeHandle, char * BufferToSave, int Max
BOOLEAN
NamedPipeServerSendMessageToClient(HANDLE PipeHandle,
- char * BufferToSend,
- int BufferSize)
+ CHAR * BufferToSend,
+ INT BufferSize)
{
DWORD cbBytes;
@@ -289,7 +289,7 @@ NamedPipeClientCreatePipeOverlappedIo(LPCSTR PipeName)
* @return BOOLEAN
*/
BOOLEAN
-NamedPipeClientSendMessage(HANDLE PipeHandle, char * BufferToSend, int BufferSize)
+NamedPipeClientSendMessage(HANDLE PipeHandle, CHAR * BufferToSend, INT BufferSize)
{
//
// We are done connecting to the server pipe,
@@ -328,7 +328,7 @@ NamedPipeClientSendMessage(HANDLE PipeHandle, char * BufferToSend, int BufferSiz
// Read the count of read buffer
//
UINT32
-NamedPipeClientReadMessage(HANDLE PipeHandle, char * BufferToRead, int MaximumSizeOfBuffer)
+NamedPipeClientReadMessage(HANDLE PipeHandle, CHAR * BufferToRead, INT MaximumSizeOfBuffer)
{
DWORD cbBytes;
@@ -376,17 +376,17 @@ NamedPipeClientClosePipe(HANDLE PipeHandle)
/**
* @brief and example of how to use named pipe as a server
*
- * @return int
+ * @return INT
*/
-int
+INT
NamedPipeServerExample()
{
HANDLE PipeHandle;
BOOLEAN SentMessageResult;
UINT32 ReadBytes;
- const int BufferSize = 1024;
- char BufferToRead[BufferSize] = {0};
- char BufferToSend[BufferSize] = "test message to send from server !!!";
+ const INT BufferSize = 1024;
+ CHAR BufferToRead[BufferSize] = {0};
+ CHAR BufferToSend[BufferSize] = "test message to send from server !!!";
PipeHandle = NamedPipeServerCreatePipe("\\\\.\\Pipe\\HyperDbgTests",
BufferSize,
@@ -447,16 +447,16 @@ NamedPipeServerExample()
/**
* @brief and example of how to use named pipe as a client
*
- * @return int
+ * @return INT
*/
-int
+INT
NamedPipeClientExample()
{
HANDLE PipeHandle;
BOOLEAN SentMessageResult;
UINT32 ReadBytes;
- const int BufferSize = 1024;
- char Buffer[BufferSize] = "test message to send from client !!!";
+ const INT BufferSize = 1024;
+ CHAR Buffer[BufferSize] = "test message to send from client !!!";
PipeHandle = NamedPipeClientCreatePipe("\\\\.\\Pipe\\HyperDbgTests");
diff --git a/hyperdbg/libhyperdbg/code/debugger/communication/remote-connection.cpp b/hyperdbg/libhyperdbg/code/debugger/communication/remote-connection.cpp
index 4c62d9b8..75198438 100644
--- a/hyperdbg/libhyperdbg/code/debugger/communication/remote-connection.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/communication/remote-connection.cpp
@@ -39,7 +39,7 @@ extern HANDLE g_EndOfMessageReceivedEvent;
VOID
RemoteConnectionListen(PCSTR Port)
{
- char recvbuf[COMMUNICATION_BUFFER_SIZE] = {0};
+ CHAR recvbuf[COMMUNICATION_BUFFER_SIZE] = {0};
//
// Check if the debugger or debuggee is already active
@@ -75,7 +75,7 @@ RemoteConnectionListen(PCSTR Port)
//
// Check whether the signature of debuggee and debugger match or not
//
- if (strcmp((const char *)BuildSignature, recvbuf) != 0)
+ if (strcmp((const CHAR *)BuildSignature, recvbuf) != 0)
{
//
// Build version not matched
@@ -154,12 +154,12 @@ RemoteConnectionListen(PCSTR Port)
//
// Execute the command
//
- int CommandExecutionResult = HyperDbgInterpreter(recvbuf);
+ INT CommandExecutionResult = HyperDbgInterpreter(recvbuf);
//
// Send end of buffer
//
- RemoteConnectionSendResultsToHost((const char *)g_EndOfBufferCheckTcp, sizeof(g_EndOfBufferCheckTcp));
+ RemoteConnectionSendResultsToHost((const CHAR *)g_EndOfBufferCheckTcp, sizeof(g_EndOfBufferCheckTcp));
//
// if the debugger encounters an exit state then the return will be 1
@@ -210,7 +210,7 @@ RemoteConnectionListen(PCSTR Port)
DWORD WINAPI
RemoteConnectionThreadListeningToDebuggee(LPVOID lpParam)
{
- char RecvBuf[COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT] = {0};
+ CHAR RecvBuf[COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT] = {0};
UINT32 BuffLenReceived = 0;
while (g_IsConnectedToRemoteDebuggee)
@@ -229,7 +229,7 @@ RemoteConnectionThreadListeningToDebuggee(LPVOID lpParam)
//
// Check if it's end of the buffer
//
- for (size_t i = 0; i < BuffLenReceived; i++)
+ for (SIZE_T i = 0; i < BuffLenReceived; i++)
{
if (RecvBuf[i] == g_EndOfBufferCheckTcp[0] &&
RecvBuf[i + 1] == g_EndOfBufferCheckTcp[1] &&
@@ -364,7 +364,7 @@ RemoteConnectionConnect(PCSTR Ip, PCSTR Port)
//
// Check to see whether the version of debugger and debuggee matches together or not
//
- if (CommunicationClientSendMessage(g_ClientConnectSocket, (const char *)BuildSignature, sizeof(BuildSignature)) != 0)
+ if (CommunicationClientSendMessage(g_ClientConnectSocket, (const CHAR *)BuildSignature, sizeof(BuildSignature)) != 0)
{
//
// Failed
@@ -388,7 +388,7 @@ RemoteConnectionConnect(PCSTR Ip, PCSTR Port)
//
// Check if the handshake was successful or not
//
- if (strcmp((const char *)"OK", Recv) != 0)
+ if (strcmp((const CHAR *)"OK", Recv) != 0)
{
//
// Build version not matched
@@ -438,11 +438,11 @@ RemoteConnectionConnect(PCSTR Ip, PCSTR Port)
*
* @param sendbuf address of message buffer
* @param len length of buffer
- * @return int returning 0 means that there was no error in
+ * @return INT returning 0 means that there was no error in
* executing the function and 1 shows there was an error
*/
-int
-RemoteConnectionSendCommand(const char * sendbuf, int len)
+INT
+RemoteConnectionSendCommand(const CHAR * sendbuf, INT len)
{
//
// Send Message
@@ -474,11 +474,11 @@ RemoteConnectionSendCommand(const char * sendbuf, int len)
*
* @param sendbuf buffer address
* @param len length of buffer
- * @return int returning 0 means that there was no error in
+ * @return INT returning 0 means that there was no error in
* executing the function and 1 shows there was an error
*/
-int
-RemoteConnectionSendResultsToHost(const char * sendbuf, int len)
+INT
+RemoteConnectionSendResultsToHost(const CHAR * sendbuf, INT len)
{
//
// Send the message
@@ -497,10 +497,10 @@ RemoteConnectionSendResultsToHost(const char * sendbuf, int len)
/**
* @brief Close the connect from client side to the debuggee
*
- * @return int returning 0 means that there was no error in
+ * @return INT returning 0 means that there was no error in
* executing the function and 1 shows there was an error
*/
-int
+INT
RemoteConnectionCloseTheConnectionWithDebuggee()
{
CommunicationClientShutdownConnection(g_ClientConnectSocket);
diff --git a/hyperdbg/libhyperdbg/code/debugger/communication/tcpclient.cpp b/hyperdbg/libhyperdbg/code/debugger/communication/tcpclient.cpp
index b601f3f9..831b361c 100644
--- a/hyperdbg/libhyperdbg/code/debugger/communication/tcpclient.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/communication/tcpclient.cpp
@@ -17,23 +17,23 @@
* @param Ip
* @param Port
* @param ConnectSocketArg
- * @return int
+ * @return INT
*/
-int
+INT
CommunicationClientConnectToServer(PCSTR Ip, PCSTR Port, SOCKET * ConnectSocketArg)
{
WSADATA wsaData;
SOCKET ConnectSocket = INVALID_SOCKET;
struct addrinfo *result = NULL, *ptr = NULL, hints;
- int iResult;
+ INT IResult;
//
// Initialize Winsock
//
- iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
- if (iResult != 0)
+ IResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
+ if (IResult != 0)
{
- ShowMessages("err, WSAStartup failed (%x)\n", iResult);
+ ShowMessages("err, WSAStartup failed (%x)\n", IResult);
return 1;
}
@@ -45,10 +45,10 @@ CommunicationClientConnectToServer(PCSTR Ip, PCSTR Port, SOCKET * ConnectSocketA
//
// Resolve the server address and port
//
- iResult = getaddrinfo(Ip, Port, &hints, &result);
- if (iResult != 0)
+ IResult = getaddrinfo(Ip, Port, &hints, &result);
+ if (IResult != 0)
{
- ShowMessages("getaddrinfo failed (%x)\n", iResult);
+ ShowMessages("getaddrinfo failed (%x)\n", IResult);
WSACleanup();
return 1;
}
@@ -72,8 +72,8 @@ CommunicationClientConnectToServer(PCSTR Ip, PCSTR Port, SOCKET * ConnectSocketA
//
// Connect to server.
//
- iResult = connect(ConnectSocket, ptr->ai_addr, (int)ptr->ai_addrlen);
- if (iResult == SOCKET_ERROR)
+ IResult = connect(ConnectSocket, ptr->ai_addr, (INT)ptr->ai_addrlen);
+ if (IResult == SOCKET_ERROR)
{
closesocket(ConnectSocket);
ConnectSocket = INVALID_SOCKET;
@@ -105,18 +105,18 @@ CommunicationClientConnectToServer(PCSTR Ip, PCSTR Port, SOCKET * ConnectSocketA
* @param ConnectSocket
* @param sendbuf
* @param buflen
- * @return int
+ * @return INT
*/
-int
-CommunicationClientSendMessage(SOCKET ConnectSocket, const char * sendbuf, int buflen)
+INT
+CommunicationClientSendMessage(SOCKET ConnectSocket, const CHAR * sendbuf, INT buflen)
{
- int iResult;
+ INT IResult;
//
// Send an initial buffer
//
- iResult = send(ConnectSocket, sendbuf, buflen, 0);
- if (iResult == SOCKET_ERROR)
+ IResult = send(ConnectSocket, sendbuf, buflen, 0);
+ if (IResult == SOCKET_ERROR)
{
ShowMessages("err, send failed (%x)\n", WSAGetLastError());
closesocket(ConnectSocket);
@@ -131,18 +131,18 @@ CommunicationClientSendMessage(SOCKET ConnectSocket, const char * sendbuf, int b
* @brief shutdown the connection as a client
*
* @param ConnectSocket
- * @return int
+ * @return INT
*/
-int
+INT
CommunicationClientShutdownConnection(SOCKET ConnectSocket)
{
- int iResult;
+ INT IResult;
//
// shutdown the connection since no more data will be sent
//
- iResult = shutdown(ConnectSocket, SD_SEND);
- if (iResult == SOCKET_ERROR)
+ IResult = shutdown(ConnectSocket, SD_SEND);
+ if (IResult == SOCKET_ERROR)
{
//
// We comment this line because the connection might be removed;
@@ -167,12 +167,12 @@ CommunicationClientShutdownConnection(SOCKET ConnectSocket)
* @param RecvBuf
* @param MaxBuffLen
* @param BuffLenRecvd
- * @return int
+ * @return INT
*/
-int
+INT
CommunicationClientReceiveMessage(SOCKET ConnectSocket, CHAR * RecvBuf, UINT32 MaxBuffLen, PUINT32 BuffLenRecvd)
{
- int Result;
+ INT Result;
//
// Receive until the peer closes the connection
@@ -210,9 +210,9 @@ CommunicationClientReceiveMessage(SOCKET ConnectSocket, CHAR * RecvBuf, UINT32 M
* @brief cleanup the connection as client
*
* @param ConnectSocket
- * @return int
+ * @return INT
*/
-int
+INT
CommunicationClientCleanup(SOCKET ConnectSocket)
{
//
diff --git a/hyperdbg/libhyperdbg/code/debugger/communication/tcpserver.cpp b/hyperdbg/libhyperdbg/code/debugger/communication/tcpserver.cpp
index bb3a14de..19129e29 100644
--- a/hyperdbg/libhyperdbg/code/debugger/communication/tcpserver.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/communication/tcpserver.cpp
@@ -27,13 +27,13 @@
* @param ListenSocketArg
* @return int
*/
-int
+INT
CommunicationServerCreateServerAndWaitForClient(PCSTR Port,
SOCKET * ClientSocketArg,
SOCKET * ListenSocketArg)
{
WSADATA wsaData;
- int iResult;
+ INT IResult;
SOCKET ListenSocket = INVALID_SOCKET;
SOCKET ClientSocket = INVALID_SOCKET;
@@ -44,10 +44,10 @@ CommunicationServerCreateServerAndWaitForClient(PCSTR Port,
//
// Initialize Winsock
//
- iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
- if (iResult != 0)
+ IResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
+ if (IResult != 0)
{
- ShowMessages("err, WSAStartup failed (%x)\n", iResult);
+ ShowMessages("err, WSAStartup failed (%x)\n", IResult);
return 1;
}
@@ -60,10 +60,10 @@ CommunicationServerCreateServerAndWaitForClient(PCSTR Port,
//
// Resolve the server address and port
//
- iResult = getaddrinfo(NULL, Port, &hints, &result);
- if (iResult != 0)
+ IResult = getaddrinfo(NULL, Port, &hints, &result);
+ if (IResult != 0)
{
- ShowMessages("err, getaddrinfo failed (%x)\n", iResult);
+ ShowMessages("err, getaddrinfo failed (%x)\n", IResult);
WSACleanup();
return 1;
}
@@ -84,8 +84,8 @@ CommunicationServerCreateServerAndWaitForClient(PCSTR Port,
//
// Setup the TCP listening socket
//
- iResult = ::bind(ListenSocket, result->ai_addr, (int)result->ai_addrlen);
- if (iResult == SOCKET_ERROR)
+ IResult = ::bind(ListenSocket, result->ai_addr, (INT)result->ai_addrlen);
+ if (IResult == SOCKET_ERROR)
{
ShowMessages("err, bind failed (%x)\n", WSAGetLastError());
freeaddrinfo(result);
@@ -96,8 +96,8 @@ CommunicationServerCreateServerAndWaitForClient(PCSTR Port,
freeaddrinfo(result);
- iResult = listen(ListenSocket, SOMAXCONN);
- if (iResult == SOCKET_ERROR)
+ IResult = listen(ListenSocket, SOMAXCONN);
+ if (IResult == SOCKET_ERROR)
{
ShowMessages("err, listen failed (%x)\n", WSAGetLastError());
closesocket(ListenSocket);
@@ -109,9 +109,9 @@ CommunicationServerCreateServerAndWaitForClient(PCSTR Port,
// Accept a client socket
//
sockaddr_in name = {0};
- int addrlen = sizeof(name);
+ INT AddrLen = sizeof(name);
- ClientSocket = accept(ListenSocket, (struct sockaddr *)&name, &addrlen);
+ ClientSocket = accept(ListenSocket, (struct sockaddr *)&name, &AddrLen);
if (ClientSocket == INVALID_SOCKET)
{
@@ -141,24 +141,24 @@ CommunicationServerCreateServerAndWaitForClient(PCSTR Port,
* @param ClientSocket
* @param recvbuf
* @param recvbuflen
- * @return int
+ * @return INT
*/
-int
-CommunicationServerReceiveMessage(SOCKET ClientSocket, char * recvbuf, int recvbuflen)
+INT
+CommunicationServerReceiveMessage(SOCKET ClientSocket, CHAR * recvbuf, INT recvbuflen)
{
- int iResult;
+ INT IResult;
//
// Receive until the peer shuts down the connection
//
- iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);
- if (iResult > 0)
+ IResult = recv(ClientSocket, recvbuf, recvbuflen, 0);
+ if (IResult > 0)
{
//
// ShowMessages("bytes received: %d\n", iResult);
//
}
- else if (iResult == 0)
+ else if (IResult == 0)
{
//
// ShowMessages("connection closing...\n");
@@ -182,18 +182,18 @@ CommunicationServerReceiveMessage(SOCKET ClientSocket, char * recvbuf, int recvb
* @param ClientSocket
* @param sendbuf
* @param length
- * @return int
+ * @return INT
*/
-int
-CommunicationServerSendMessage(SOCKET ClientSocket, const char * sendbuf, int length)
+INT
+CommunicationServerSendMessage(SOCKET ClientSocket, const CHAR * sendbuf, INT length)
{
- int iSendResult;
+ INT ISendResult;
//
// Echo the buffer back to the sender
//
- iSendResult = send(ClientSocket, sendbuf, length, 0);
- if (iSendResult == SOCKET_ERROR)
+ ISendResult = send(ClientSocket, sendbuf, length, 0);
+ if (ISendResult == SOCKET_ERROR)
{
/*
ShowMessages("err, send failed (%x)\n", WSAGetLastError());
@@ -210,13 +210,13 @@ CommunicationServerSendMessage(SOCKET ClientSocket, const char * sendbuf, int le
*
* @param ClientSocket
* @param ListenSocket
- * @return int
+ * @return INT
*/
-int
+INT
CommunicationServerShutdownAndCleanupConnection(SOCKET ClientSocket,
SOCKET ListenSocket)
{
- int iResult;
+ INT IResult;
//
// No longer need server socket
@@ -226,8 +226,8 @@ CommunicationServerShutdownAndCleanupConnection(SOCKET ClientSocket,
//
// shutdown the connection since we're done
//
- iResult = shutdown(ClientSocket, SD_SEND);
- if (iResult == SOCKET_ERROR)
+ IResult = shutdown(ClientSocket, SD_SEND);
+ if (IResult == SOCKET_ERROR)
{
//
// We comment this line because the connection might be removed;
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index f07fb45e..fdc35c08 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -655,7 +655,7 @@ DebuggerGetNtoskrnlBase()
for (UINT32 i = 0; i < Modules->NumberOfModules; i++)
{
- if (!strcmp((const char *)Modules->Modules[i].FullPathName + Modules->Modules[i].OffsetToFileName,
+ if (!strcmp((const CHAR *)Modules->Modules[i].FullPathName + Modules->Modules[i].OffsetToFileName,
"ntoskrnl.exe"))
{
NtoskrnlBase = (UINT64)Modules->Modules[i].ImageBase;
@@ -936,7 +936,7 @@ InterpretScript(vector * CommandTokens,
//
// Run script engine handler
//
- PVOID CodeBuffer = ScriptEngineParseWrapper((char *)TargetBracketString.c_str(), TRUE);
+ PVOID CodeBuffer = ScriptEngineParseWrapper((CHAR *)TargetBracketString.c_str(), TRUE);
if (CodeBuffer == NULL)
{
@@ -1012,11 +1012,11 @@ InterpretConditionsAndCodes(vector * CommandTokens,
string Temp;
vector ParsedBytes;
- vector IndexesToRemove;
+ vector IndexesToRemove;
UCHAR * FinalBuffer;
UINT32 AssembledByteCount;
- int NewIndexToRemove = 0;
- int Index = 0;
+ INT NewIndexToRemove = 0;
+ INT Index = 0;
for (auto Section : *CommandTokens)
{
@@ -1113,7 +1113,7 @@ InterpretConditionsAndCodes(vector * CommandTokens,
//
// * FinalBuffer *
//
- FinalBuffer = (unsigned char *)malloc(AssembledByteCount);
+ FinalBuffer = (UCHAR *)malloc(AssembledByteCount);
if (FinalBuffer == NULL)
{
@@ -1236,12 +1236,12 @@ InterpretOutput(vector * CommandTokens,
BOOLEAN IsTextVisited = FALSE;
string TargetBracketString = "";
- vector IndexesToRemove;
+ vector IndexesToRemove;
string Token;
- int NewIndexToRemove = 0;
- int Index = 0;
- char Delimiter = ',';
- size_t Pos = 0;
+ INT NewIndexToRemove = 0;
+ INT Index = 0;
+ CHAR Delimiter = ',';
+ SIZE_T Pos = 0;
for (auto Section : *CommandTokens)
{
@@ -1766,10 +1766,10 @@ InterpretGeneralEventAndActionsFields(
UINT32 RequestBuffer = 0;
PLIST_ENTRY TempList;
BOOLEAN OutputSourceFound;
- vector IndexesToRemove;
+ vector IndexesToRemove;
vector ListOfValidSourceTags;
- int NewIndexToRemove = 0;
- int Index = 0;
+ INT NewIndexToRemove = 0;
+ INT Index = 0;
//
// Create a command string to show in the history
@@ -1827,7 +1827,7 @@ InterpretGeneralEventAndActionsFields(
//
// Disassemble the buffer
//
- HyperDbgDisassembler64((unsigned char *)ConditionBufferAddress, 0x0,
+ HyperDbgDisassembler64((UCHAR *)ConditionBufferAddress, 0x0,
ConditionBufferLength);
ShowMessages("}\n\n");
@@ -1867,7 +1867,7 @@ InterpretGeneralEventAndActionsFields(
//
// Disassemble the buffer
//
- HyperDbgDisassembler64((unsigned char *)CodeBufferAddress, 0x0,
+ HyperDbgDisassembler64((UCHAR *)CodeBufferAddress, 0x0,
CodeBufferLength);
ShowMessages("}\n\n");
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
index c5df6a64..5d8055e2 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/interpreter.cpp
@@ -45,16 +45,16 @@ public:
{
std::vector tokens;
std::string current;
- bool InQuotes = FALSE;
- int IdxBracket = 0;
+ BOOLEAN InQuotes = FALSE;
+ INT IdxBracket = 0;
//
// mainly for removing \ from escaped chars
//
std::string input = ConstInput;
- for (size_t i = 0; i < input.length(); ++i)
+ for (SIZE_T i = 0; i < input.length(); ++i)
{
- char c = input[i];
+ CHAR c = input[i];
if (c == '/') // start comment parse
{
@@ -63,16 +63,16 @@ public:
//
if (!InQuotes)
{
- size_t j = i;
- char c2 = input[++j];
+ SIZE_T j = i;
+ CHAR c2 = input[++j];
if (c2 == '/') // start to look for comments
{
//
// to solve cases like: //"}"
//
- size_t StrLitEnd = 0;
- size_t StrLitBeg = input.find("\"", i);
+ SIZE_T StrLitEnd = 0;
+ SIZE_T StrLitBeg = input.find("\"", i);
if (StrLitBeg != std::string::npos)
{
if (i)
@@ -99,8 +99,8 @@ public:
//
// assuming " }" as the end of a line comment aka //, if we are within {}
//
- bool CmntEndBrkt = false;
- size_t CloseBrktPos = 0;
+ BOOLEAN CmntEndBrkt = FALSE;
+ SIZE_T CloseBrktPos = 0;
if (IdxBracket)
{
//
@@ -126,14 +126,14 @@ public:
CloseBrktPos = std::string::npos;
}
- size_t NewLineSrtPos = input.find("\\n", i); // "\\n" entered by user
+ SIZE_T NewLineSrtPos = input.find("\\n", i); // "\\n" entered by user
if (StrLitBeg && StrLitBeg <= NewLineSrtPos && NewLineSrtPos <= StrLitEnd) // is it within the string literal?
{
NewLineSrtPos = std::string::npos;
}
- size_t NewLineChrPos = input.find('\n', i);
+ SIZE_T NewLineChrPos = input.find('\n', i);
- std::vector PosVec = {CloseBrktPos, NewLineSrtPos, NewLineChrPos};
+ std::vector PosVec = {CloseBrktPos, NewLineSrtPos, NewLineChrPos};
auto min = *(min_element(PosVec.begin(), PosVec.end())); // see which one occurs first
@@ -162,7 +162,7 @@ public:
}
else
{
- bool IsNewLineEsc = false;
+ BOOLEAN IsNewLineEsc = FALSE;
if (NewLineSrtPos != std::string::npos)
{
IsNewLineEsc = input[NewLineSrtPos - 1] == '\\';
@@ -222,14 +222,14 @@ public:
// fix the escaped newline
if (IsNewLineEsc)
{
- size_t start_pos = 0;
+ SIZE_T start_pos = 0;
while ((start_pos = comment.find("\\\\n", start_pos)) != std::string::npos)
{
comment.replace(start_pos, 3, "\\n");
start_pos += 2; // Handles case where 'to' is a substring of 'from'
}
- IsNewLineEsc = false;
+ IsNewLineEsc = FALSE;
}
//
@@ -251,7 +251,7 @@ public:
}
else if (c2 == '*')
{
- size_t EndPose = input.find("*/", i + 2); // +2 for cases like /*/
+ SIZE_T EndPose = input.find("*/", i + 2); // +2 for cases like /*/
if (EndPose != std::string::npos)
{
@@ -498,10 +498,10 @@ public:
//
// get len of longest string
//
- const int sz = 200; // size
- int g_s1Len = 0, g_s2Len = 0, g_s3Len = 0;
- int s1 = 0, s2 = 0, s3 = 0;
- char LineToPrint1[sz], LineToPrint2[sz], LineToPrint3[sz];
+ const INT sz = 200; // size
+ INT g_s1Len = 0, g_s2Len = 0, g_s3Len = 0;
+ INT s1 = 0, s2 = 0, s3 = 0;
+ CHAR LineToPrint1[sz], LineToPrint2[sz], LineToPrint3[sz];
for (const auto & Token : Tokens)
{
@@ -666,10 +666,10 @@ private:
*
* @return The position of the first difference, or -1 if the strings are equal
*/
-int
-FindDifferencePosition(const char * prsTok, const char * fileTok)
+INT
+FindDifferencePosition(const CHAR * prsTok, const CHAR * fileTok)
{
- int i = 0;
+ INT i = 0;
//
// Loop until a difference is found or until the end of any string is reached
@@ -706,7 +706,7 @@ FindDifferencePosition(const char * prsTok, const char * fileTok)
* @param FailedTokenNum The failed token number (if any)
* @param FailedTokenPosition The failed token position (if any)
*
- * @return BOOLEAN returns true if the command was parsed successfully and false if there was an error
+ * @return BOOLEAN returns TRUE if the command was parsed successfully and FALSE if there was an error
*/
BOOLEAN
HyperDbgTestCommandParser(CHAR * Command,
@@ -1017,14 +1017,14 @@ HyperDbgInterpreter(CHAR * Command)
* @return VOID
*/
VOID
-InterpreterRemoveComments(char * CommandText)
+InterpreterRemoveComments(CHAR * CommandText)
{
BOOLEAN IsComment = FALSE;
BOOLEAN IsOnBracketString = FALSE;
BOOLEAN IsOnString = FALSE;
UINT32 LengthOfCommand = (UINT32)strlen(CommandText);
- for (size_t i = 0; i < LengthOfCommand; i++)
+ for (SIZE_T i = 0; i < LengthOfCommand; i++)
{
if (IsComment)
{
@@ -1036,7 +1036,7 @@ InterpreterRemoveComments(char * CommandText)
{
if (CommandText[i] != '\0')
{
- memmove((void *)&CommandText[i], (const void *)&CommandText[i + 1], strlen(CommandText) - i);
+ memmove((PVOID)&CommandText[i], (const PVOID)&CommandText[i + 1], strlen(CommandText) - i);
i--;
}
}
@@ -1143,7 +1143,7 @@ CheckMultilineCommand(CHAR * CurrentCommand, BOOLEAN Reset)
CurrentCommandLen = (UINT32)CurrentCommandStr.length();
- for (size_t i = 0; i < CurrentCommandLen; i++)
+ for (SIZE_T i = 0; i < CurrentCommandLen; i++)
{
switch (CurrentCommandStr.at(i))
{
@@ -1231,7 +1231,7 @@ ContinuePreviousCommand()
BOOLEAN Result = g_ShouldPreviousCommandBeContinued;
//
- // We should keep it false for the next command
+ // We should keep it FALSE for the next command
//
g_ShouldPreviousCommandBeContinued = FALSE;
diff --git a/hyperdbg/libhyperdbg/code/debugger/driver-loader/install.cpp b/hyperdbg/libhyperdbg/code/debugger/driver-loader/install.cpp
index a73637c0..0c6e0326 100644
--- a/hyperdbg/libhyperdbg/code/debugger/driver-loader/install.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/driver-loader/install.cpp
@@ -477,7 +477,7 @@ SetupPathForFileName(const CHAR * FileName,
HANDLE FileHandle;
DWORD FileLocLen = 0;
HMODULE ProcHandle = GetModuleHandle(NULL);
- char * Pos;
+ CHAR * Pos;
//
// Get the current directory.
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
index e4fd1aa0..1b792e04 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kd.cpp
@@ -97,7 +97,7 @@ KdCheckForTheEndOfTheBuffer(PUINT32 CurrentLoopIndex, BYTE * Buffer)
BOOLEAN
KdCompareBufferWithString(CHAR * Buffer, const CHAR * CompareBuffer)
{
- int Result;
+ INT Result;
Result = strcmp(Buffer, CompareBuffer);
@@ -1289,7 +1289,7 @@ KdSendScriptPacketToDebuggee(UINT64 BufferAddress, UINT32 BufferLength, UINT32 P
* @return BOOLEAN
*/
BOOLEAN
-KdSendUserInputPacketToDebuggee(const char * Sendbuf, int Len, BOOLEAN IgnoreBreakingAgain)
+KdSendUserInputPacketToDebuggee(const CHAR * Sendbuf, INT Len, BOOLEAN IgnoreBreakingAgain)
{
PDEBUGGEE_USER_INPUT_PACKET UserInputPacket;
UINT32 SizeOfStruct = 0;
@@ -1555,7 +1555,7 @@ BOOLEAN
KdReceivePacketFromDebuggee(CHAR * BufferToSave,
UINT32 * LengthReceived)
{
- char ReadData = NULL; /* temperory Character */
+ CHAR ReadData = NULL; /* temperory Character */
DWORD NoBytesRead = 0; /* Bytes read by ReadFile() */
UINT32 Loop = 0;
@@ -1645,7 +1645,7 @@ BOOLEAN
KdReceivePacketFromDebugger(CHAR * BufferToSave,
UINT32 * LengthReceived)
{
- char ReadData = NULL; /* temperory Character */
+ CHAR ReadData = NULL; /* temperory Character */
DWORD NoBytesRead = 0; /* Bytes read by ReadFile() */
UINT32 Loop = 0;
@@ -2170,7 +2170,7 @@ KdPrepareSerialConnectionToRemoteSystem(HANDLE SerialHandle,
//
// Initialize the handle table
//
- for (size_t i = 0; i < DEBUGGER_MAXIMUM_SYNCRONIZATION_KERNEL_DEBUGGER_OBJECTS; i++)
+ for (SIZE_T i = 0; i < DEBUGGER_MAXIMUM_SYNCRONIZATION_KERNEL_DEBUGGER_OBJECTS; i++)
{
g_KernelSyncronizationObjectsHandleTable[i].IsOnWaitingState = FALSE;
g_KernelSyncronizationObjectsHandleTable[i].EventHandle =
@@ -2370,7 +2370,7 @@ StartAgain:
// ShowMessages("the answer to the PING request is received: %s\n", ReceivedPingBuildVersionBuffer);
- if (strcmp((const char *)BuildSignature, ReceivedPingBuildVersionBuffer) == 0)
+ if (strcmp((const CHAR *)BuildSignature, ReceivedPingBuildVersionBuffer) == 0)
{
//
// Build version matched
@@ -2429,7 +2429,7 @@ KdPrepareAndConnectDebugPort(const CHAR * PortName,
BOOL Status; /* Status */
DCB SerialParams = {0}; /* Initializing DCB structure */
COMMTIMEOUTS Timeouts = {0}; /* Initializing timeouts structure */
- char PortNo[20] = {0}; /* contain friendly name */
+ CHAR PortNo[20] = {0}; /* contain friendly name */
BOOLEAN StatusIoctl;
ULONG ReturnedLength;
PDEBUGGER_PREPARE_DEBUGGEE DebuggeeRequest;
@@ -3466,7 +3466,7 @@ KdUninitializeConnection()
//
// Close synchronization objects
//
- for (size_t i = 0; i < DEBUGGER_MAXIMUM_SYNCRONIZATION_KERNEL_DEBUGGER_OBJECTS; i++)
+ for (SIZE_T i = 0; i < DEBUGGER_MAXIMUM_SYNCRONIZATION_KERNEL_DEBUGGER_OBJECTS; i++)
{
if (g_KernelSyncronizationObjectsHandleTable[i].EventHandle != NULL)
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
index b71fa54a..3619e430 100644
--- a/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/kernel-level/kernel-listening.cpp
@@ -1196,8 +1196,8 @@ StartAgain:
if (PcidevinfoPacket->KernelStatus == DEBUGGER_OPERATION_WAS_SUCCESSFUL)
{
// For some reason, MSVC refuses to initialize these at top of case
- const char * PciHeaderTypeAsString[] = {"Endpoint", "PCI-to-PCI Bridge", "PCI-to-CardBus Bridge"};
- const char * PciMmioBarTypeAsString[] = {"32-bit Wide",
+ const CHAR * PciHeaderTypeAsString[] = {"Endpoint", "PCI-to-PCI Bridge", "PCI-to-CardBus Bridge"};
+ const CHAR * PciMmioBarTypeAsString[] = {"32-bit Wide",
"Reserved",
"64-bit Wide",
"Reserved"};
@@ -1378,7 +1378,7 @@ StartAgain:
// Replace non-printable characters with "."
for (UINT8 j = 0; j < 16; j++)
{
- char c = (char)*(cs + j);
+ CHAR c = (CHAR) * (cs + j);
if (c >= 32 && c <= 126)
{
ShowMessages("%c", c);
@@ -1439,7 +1439,7 @@ ListeningSerialPortInDebuggee()
StartAgain:
BOOL Status; /* Status */
- char SerialBuffer[MaxSerialPacketSize] = {
+ CHAR SerialBuffer[MaxSerialPacketSize] = {
0}; /* Buffer to send and receive data */
DWORD EventMask = 0; /* Event mask to trigger */
char ReadData = NULL; /* temperory Character */
diff --git a/hyperdbg/libhyperdbg/code/debugger/misc/assembler.cpp b/hyperdbg/libhyperdbg/code/debugger/misc/assembler.cpp
index 390e14ef..8c8990ee 100644
--- a/hyperdbg/libhyperdbg/code/debugger/misc/assembler.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/misc/assembler.cpp
@@ -36,7 +36,7 @@ AssembleData::ParseAssemblyData()
// split assembly line by ';'
//
std::vector AssemblyInstructions;
- size_t Pos = 0;
+ SIZE_T Pos = 0;
std::string Delimiter = ";";
while ((Pos = RawAsm.find(Delimiter)) != std::string::npos)
{
@@ -59,11 +59,11 @@ AssembleData::ParseAssemblyData()
{
std::string Expr {};
UINT64 ExprAddr {};
- size_t Start {};
+ SIZE_T Start {};
while ((Start = InstructionLine.find('<', Start)) != std::string::npos)
{
- size_t End = InstructionLine.find('>', Start);
+ SIZE_T End = InstructionLine.find('>', Start);
if (End != std::string::npos)
{
std::string Expr = InstructionLine.substr(Start + 1, End - Start - 1);
@@ -160,7 +160,7 @@ AssembleData::Assemble(UINT64 StartAddr, ks_arch Arch, INT Mode, INT Syntax)
{
ShowMessages("generated assembly: %lu (decimal) bytes, %lu (decimal) statements ==>> ", (int)BytesCount, (int)StatementCount);
- size_t i;
+ SIZE_T i;
ShowMessages("%s = ", AsmFixed.c_str());
for (i = 0; i < BytesCount; i++)
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/misc/callstack.cpp b/hyperdbg/libhyperdbg/code/debugger/misc/callstack.cpp
index cd14ddeb..729c592f 100644
--- a/hyperdbg/libhyperdbg/code/debugger/misc/callstack.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/misc/callstack.cpp
@@ -98,7 +98,7 @@ CallstackReturnAddressToCallingAddress(UCHAR * ReturnAddress, PUINT32 IndexOfCal
// The mask of F8 is used because we want to mask out the bottom
// three bits (which are most often used for register selection)
//
- const unsigned char RmMask = 0xF8;
+ const UCHAR RmMask = 0xF8;
//
// 7-byte format:
@@ -223,7 +223,7 @@ CallstackShowFrames(PDEBUGGER_SINGLE_CALLSTACK_FRAME CallstackFrames,
//
// Print callstack frames
//
- for (size_t i = 0; i < FrameCount; i++)
+ for (SIZE_T i = 0; i < FrameCount; i++)
{
IsCall = FALSE;
@@ -233,7 +233,7 @@ CallstackShowFrames(PDEBUGGER_SINGLE_CALLSTACK_FRAME CallstackFrames,
// Check if it's call or just a simple code address
//
if (CallstackFrames[i].IsExecutable && CallstackReturnAddressToCallingAddress(
- (unsigned char *)&CallstackFrames[i].InstructionBytesOnRip[MAXIMUM_CALL_INSTR_SIZE],
+ (UCHAR *)&CallstackFrames[i].InstructionBytesOnRip[MAXIMUM_CALL_INSTR_SIZE],
&CallLength))
{
//
diff --git a/hyperdbg/libhyperdbg/code/debugger/misc/disassembler.cpp b/hyperdbg/libhyperdbg/code/debugger/misc/disassembler.cpp
index d6d2aa75..edd85b69 100644
--- a/hyperdbg/libhyperdbg/code/debugger/misc/disassembler.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/misc/disassembler.cpp
@@ -55,7 +55,7 @@ typedef struct ZydisSymbol_
/**
* @brief The symbol name.
*/
- const char * name;
+ const CHAR * name;
} ZydisSymbol;
ZydisFormatterFunc default_print_address_absolute;
@@ -120,13 +120,13 @@ DisassembleBuffer(ZydisDecoder * decoder,
ZyanU64 runtime_address,
ZyanU8 * data,
ZyanUSize length,
- uint32_t maximum_instr,
+ UINT32 maximum_instr,
BOOLEAN is_x86_64,
BOOLEAN show_of_branch_is_taken,
PRFLAGS rflags)
{
ZydisFormatter formatter;
- int instr_decoded = 0;
+ INT InstrDecoded = 0;
UINT64 UsedBaseAddress = NULL;
if (g_DisassemblerSyntax == 1)
@@ -160,7 +160,7 @@ DisassembleBuffer(ZydisDecoder * decoder,
ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT];
ZydisDecodedInstruction instruction;
- char buffer[256];
+ CHAR buffer[256];
while (ZYAN_SUCCESS(ZydisDecoderDecodeFull(decoder, data, length, &instruction, operands)))
{
@@ -192,7 +192,7 @@ DisassembleBuffer(ZydisDecoder * decoder,
//
// Show the memory for this instruction
//
- for (size_t i = 0; i < instruction.length; i++)
+ for (SIZE_T i = 0; i < instruction.length; i++)
{
ZyanU8 MemoryContent = data[i];
ShowMessages(" %02X", MemoryContent);
@@ -203,7 +203,7 @@ DisassembleBuffer(ZydisDecoder * decoder,
#define PaddingLength 12
if (instruction.length < PaddingLength)
{
- for (size_t i = 0; i < PaddingLength - instruction.length; i++)
+ for (SIZE_T i = 0; i < PaddingLength - instruction.length; i++)
{
ShowMessages(" ");
}
@@ -253,9 +253,9 @@ DisassembleBuffer(ZydisDecoder * decoder,
data += instruction.length;
length -= instruction.length;
runtime_address += instruction.length;
- instr_decoded++;
+ InstrDecoded++;
- if (instr_decoded == maximum_instr)
+ if (InstrDecoded == maximum_instr)
{
return;
}
@@ -265,9 +265,9 @@ DisassembleBuffer(ZydisDecoder * decoder,
/**
* @brief Zydis test
*
- * @return int
+ * @return INT
*/
-int
+INT
ZydisTest()
{
if (ZydisGetVersion() != ZYDIS_VERSION)
@@ -327,15 +327,15 @@ ZydisTest()
* @param Rflags in the case ShowBranchIsTakenOrNot is true, we use this
* variable to show the result of jump
*
- * @return int
+ * @return INT
*/
-int
-HyperDbgDisassembler64(unsigned char * BufferToDisassemble,
- UINT64 BaseAddress,
- UINT64 Size,
- UINT32 MaximumInstrDecoded,
- BOOLEAN ShowBranchIsTakenOrNot,
- PRFLAGS Rflags)
+INT
+HyperDbgDisassembler64(UCHAR * BufferToDisassemble,
+ UINT64 BaseAddress,
+ UINT64 Size,
+ UINT32 MaximumInstrDecoded,
+ BOOLEAN ShowBranchIsTakenOrNot,
+ PRFLAGS Rflags)
{
if (ZydisGetVersion() != ZYDIS_VERSION)
{
@@ -367,15 +367,15 @@ HyperDbgDisassembler64(unsigned char * BufferToDisassemble,
* @param Rflags in the case ShowBranchIsTakenOrNot is true, we use this
* variable to show the result of jump
*
- * @return int
+ * @return INT
*/
-int
-HyperDbgDisassembler32(unsigned char * BufferToDisassemble,
- UINT64 BaseAddress,
- UINT64 Size,
- UINT32 MaximumInstrDecoded,
- BOOLEAN ShowBranchIsTakenOrNot,
- PRFLAGS Rflags)
+INT
+HyperDbgDisassembler32(UCHAR * BufferToDisassemble,
+ UINT64 BaseAddress,
+ UINT64 Size,
+ UINT32 MaximumInstrDecoded,
+ BOOLEAN ShowBranchIsTakenOrNot,
+ PRFLAGS Rflags)
{
if (ZydisGetVersion() != ZYDIS_VERSION)
{
@@ -407,16 +407,16 @@ HyperDbgDisassembler32(unsigned char * BufferToDisassemble,
* @return DEBUGGER_NEXT_INSTRUCTION_FINDER_STATUS
*/
DEBUGGER_CONDITIONAL_JUMP_STATUS
-HyperDbgIsConditionalJumpTaken(unsigned char * BufferToDisassemble,
- UINT64 BuffLength,
- RFLAGS Rflags,
- BOOLEAN Isx86_64)
+HyperDbgIsConditionalJumpTaken(UCHAR * BufferToDisassemble,
+ UINT64 BuffLength,
+ RFLAGS Rflags,
+ BOOLEAN Isx86_64)
{
ZydisDecoder decoder;
ZydisFormatter formatter;
ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT];
- UINT64 CurrentRip = 0;
- int instr_decoded = 0;
+ UINT64 CurrentRip = 0;
+ INT InstrDecoded = 0;
ZydisDecodedInstruction instruction;
UINT32 MaximumInstrDecoded = 1;
@@ -753,18 +753,18 @@ HyperDbgIsConditionalJumpTaken(unsigned char * BufferToDisassemble,
*/
BOOLEAN
HyperDbgCheckWhetherTheCurrentInstructionIsCall(
- unsigned char * BufferToDisassemble,
- UINT64 BuffLength,
- BOOLEAN Isx86_64,
- PUINT32 CallLength)
+ UCHAR * BufferToDisassemble,
+ UINT64 BuffLength,
+ BOOLEAN Isx86_64,
+ PUINT32 CallLength)
{
ZydisDecoder decoder;
ZydisFormatter formatter;
ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT];
- UINT64 CurrentRip = 0;
- int instr_decoded = 0;
+ UINT64 CurrentRip = 0;
+ INT InstrDecoded = 0;
ZydisDecodedInstruction instruction;
- char buffer[256];
+ CHAR buffer[256];
UINT32 MaximumInstrDecoded = 1;
//
@@ -854,15 +854,15 @@ HyperDbgCheckWhetherTheCurrentInstructionIsCall(
*/
UINT32
HyperDbgLengthDisassemblerEngine(
- unsigned char * BufferToDisassemble,
- UINT64 BuffLength,
- BOOLEAN Isx86_64)
+ UCHAR * BufferToDisassemble,
+ UINT64 BuffLength,
+ BOOLEAN Isx86_64)
{
ZydisDecoder decoder;
ZydisFormatter formatter;
ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT];
- UINT64 CurrentRip = 0;
- int instr_decoded = 0;
+ UINT64 CurrentRip = 0;
+ INT InstrDecoded = 0;
ZydisDecodedInstruction instruction;
UINT32 MaximumInstrDecoded = 1;
@@ -981,18 +981,18 @@ ZydisFormatterPrintAddressAbsoluteForTrackingInstructions(const ZydisFormatter *
*/
BOOLEAN
HyperDbgCheckWhetherTheCurrentInstructionIsCallOrRet(
- unsigned char * BufferToDisassemble,
- UINT64 CurrentRip,
- UINT32 BuffLength,
- BOOLEAN Isx86_64,
- PBOOLEAN IsRet)
+ UCHAR * BufferToDisassemble,
+ UINT64 CurrentRip,
+ UINT32 BuffLength,
+ BOOLEAN Isx86_64,
+ PBOOLEAN IsRet)
{
ZydisDecoder decoder;
ZydisFormatter formatter;
ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT];
- int instr_decoded = 0;
+ INT InstrDecoded = 0;
ZydisDecodedInstruction instruction;
- char buffer[256];
+ CHAR buffer[256];
UINT32 MaximumInstrDecoded = 1;
if (ZydisGetVersion() != ZYDIS_VERSION)
@@ -1093,17 +1093,17 @@ HyperDbgCheckWhetherTheCurrentInstructionIsCallOrRet(
*/
BOOLEAN
HyperDbgCheckWhetherTheCurrentInstructionIsRet(
- unsigned char * BufferToDisassemble,
- UINT64 BuffLength,
- BOOLEAN Isx86_64)
+ UCHAR * BufferToDisassemble,
+ UINT64 BuffLength,
+ BOOLEAN Isx86_64)
{
ZydisDecoder decoder;
ZydisFormatter formatter;
ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT];
- UINT64 CurrentRip = 0;
- int instr_decoded = 0;
+ UINT64 CurrentRip = 0;
+ INT InstrDecoded = 0;
ZydisDecodedInstruction instruction;
- char buffer[256];
+ CHAR buffer[256];
UINT32 MaximumInstrDecoded = 1;
if (ZydisGetVersion() != ZYDIS_VERSION)
@@ -1182,17 +1182,17 @@ HyperDbgCheckWhetherTheCurrentInstructionIsRet(
*/
UINT32
HyperDbgGetImmediateValueOnEaxForSyscallNumber(
- unsigned char * BufferToDisassemble,
- UINT64 BuffLength,
- BOOLEAN Isx86_64)
+ UCHAR * BufferToDisassemble,
+ UINT64 BuffLength,
+ BOOLEAN Isx86_64)
{
ZydisDecoder decoder;
ZydisFormatter formatter;
ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT];
- UINT64 CurrentRip = 0;
- int instr_decoded = 0;
+ UINT64 CurrentRip = 0;
+ INT InstrDecoded = 0;
ZydisDecodedInstruction instruction;
- char buffer[256];
+ CHAR buffer[256];
UINT32 MaximumInstrDecoded = 1;
if (ZydisGetVersion() != ZYDIS_VERSION)
diff --git a/hyperdbg/libhyperdbg/code/debugger/misc/pci-id.cpp b/hyperdbg/libhyperdbg/code/debugger/misc/pci-id.cpp
index 11db8e39..d6fef971 100644
--- a/hyperdbg/libhyperdbg/code/debugger/misc/pci-id.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/misc/pci-id.cpp
@@ -1,6 +1,6 @@
/**
* @file pci-id.cpp
- * @author Bjrn Ruytenberg (bjorn@bjornweb.nl)
+ * @author Bj�rn Ruytenberg (bjorn@bjornweb.nl)
* @brief Provides runtime access to PCI ID database
* @details
* @version 0.12
@@ -11,19 +11,19 @@
*/
#include "pch.h"
-static char * PciIdDatabaseBuffer = NULL;
+static CHAR * PciIdDatabaseBuffer = NULL;
/**
* @brief Trims whitespaces in passed string
*
* @param Str
* @param MaxLen
- * @return char *
+ * @return CHAR*
*/
-char *
-TrimWhitespace(char * Str, UINT8 MaxLen)
+CHAR *
+TrimWhitespace(CHAR * Str, UINT8 MaxLen)
{
- char * End;
+ CHAR * End;
while (*Str == ' ')
Str++; // Trim leading space
if (*Str == '\0')
@@ -39,13 +39,13 @@ TrimWhitespace(char * Str, UINT8 MaxLen)
* @brief Converts passed string to lowercase
*
* @param Str
- * @return char *
+ * @return CHAR*
*/
-char *
-ToLower(char * Str)
+CHAR *
+ToLower(CHAR * Str)
{
UINT8 StrLength = (UINT8)strnlen_s(Str, PCI_ID_AS_STR_LENGTH);
- char * CurrentChar = Str;
+ CHAR * CurrentChar = Str;
while (CurrentChar < Str + StrLength)
{
@@ -61,12 +61,12 @@ ToLower(char * Str)
* @param DestBuffer
* @param CharLimit
* @param SrcBuffer
- * @return char *
+ * @return CHAR*
*/
-char *
-ReadLine(char * DestBuffer, UINT64 CharLimit, char ** SrcBuffer)
+CHAR *
+ReadLine(CHAR * DestBuffer, UINT64 CharLimit, CHAR ** SrcBuffer)
{
- char * Line = strchr(*SrcBuffer, '\n');
+ CHAR * Line = strchr(*SrcBuffer, '\n');
if (!Line)
{
return NULL;
@@ -87,19 +87,19 @@ ReadLine(char * DestBuffer, UINT64 CharLimit, char ** SrcBuffer)
* @return Vendor *
*/
Vendor *
-GetVendorByIdStr(const char * Filename, const char * VendorId)
+GetVendorByIdStr(const CHAR * Filename, const CHAR * VendorId)
{
Vendor * MatchedVendor = NULL;
BOOLEAN FoundVendorId = FALSE;
Device * LastDevice = NULL;
SubDevice * LastSubDevice = NULL;
- char * PciIdDbBufPtr = NULL;
- char Line[1024] = {'\0'};
+ CHAR * PciIdDbBufPtr = NULL;
+ CHAR Line[1024] = {'\0'};
if (!PciIdDatabaseBuffer)
{
FILE * f = fopen(Filename, "rb");
- size_t Length = 0;
+ SIZE_T Length = 0;
if (f == NULL)
{
@@ -110,7 +110,7 @@ GetVendorByIdStr(const char * Filename, const char * VendorId)
fseek(f, 0, SEEK_END);
Length = ftell(f);
- PciIdDatabaseBuffer = (char *)malloc(Length);
+ PciIdDatabaseBuffer = (CHAR *)malloc(Length);
if (!PciIdDatabaseBuffer)
{
return NULL;
@@ -125,7 +125,7 @@ GetVendorByIdStr(const char * Filename, const char * VendorId)
while (ReadLine(Line, sizeof(Line), &PciIdDbBufPtr) != NULL)
{
- char FormatStr[24];
+ CHAR FormatStr[24];
// Skip comments and empty lines
if (Line[0] == '#' || Line[0] == '\0')
@@ -137,7 +137,7 @@ GetVendorByIdStr(const char * Filename, const char * VendorId)
// We assume PCI ID database comprises unique entries only, i.e. we return the first matching entry
if (Line[0] != '\t' && FoundVendorId == FALSE)
{
- char VendorBuf[PCI_ID_AS_STR_LENGTH + 1], VendorNameBuf[PCI_NAME_STR_LENGTH + 1];
+ CHAR VendorBuf[PCI_ID_AS_STR_LENGTH + 1], VendorNameBuf[PCI_NAME_STR_LENGTH + 1];
snprintf(FormatStr, sizeof(FormatStr), "%%4s %%%d[^\n]", PCI_NAME_STR_LENGTH); // FormatStr = "%4s %PCI_NAME_STR_LENGTH[^\n]"
if (sscanf(Line, FormatStr, VendorBuf, VendorNameBuf) == 2)
@@ -150,8 +150,8 @@ GetVendorByIdStr(const char * Filename, const char * VendorId)
return NULL;
}
- int result = sscanf(VendorBuf, "%hx", &(MatchedVendor->VendorId));
- if (result != 1)
+ INT Result = sscanf(VendorBuf, "%hx", &(MatchedVendor->VendorId));
+ if (Result != 1)
{
return NULL;
}
@@ -163,7 +163,7 @@ GetVendorByIdStr(const char * Filename, const char * VendorId)
// Get all devices for vendor
else if (Line[0] == '\t' && Line[1] != '\t' && FoundVendorId == TRUE)
{
- char DeviceBuf[PCI_ID_AS_STR_LENGTH + 1], DeviceNameBuf[PCI_NAME_STR_LENGTH + 1];
+ CHAR DeviceBuf[PCI_ID_AS_STR_LENGTH + 1], DeviceNameBuf[PCI_NAME_STR_LENGTH + 1];
snprintf(FormatStr, sizeof(FormatStr), "%%4s %%%d[^\n]", PCI_NAME_STR_LENGTH); // FormatStr = "%4s %PCI_NAME_STR_LENGTH[^\n]"
if (sscanf(Line + 1, FormatStr, DeviceBuf, DeviceNameBuf) == 2)
@@ -201,7 +201,7 @@ GetVendorByIdStr(const char * Filename, const char * VendorId)
// Get all subdevices for device
else if (Line[0] == '\t' && Line[1] == '\t' && FoundVendorId == TRUE && LastDevice)
{
- char SubVendorBuf[PCI_ID_AS_STR_LENGTH + 1], SubDeviceBuf[PCI_ID_AS_STR_LENGTH + 1], SubsystemNameBuf[PCI_NAME_STR_LENGTH + 1];
+ CHAR SubVendorBuf[PCI_ID_AS_STR_LENGTH + 1], SubDeviceBuf[PCI_ID_AS_STR_LENGTH + 1], SubsystemNameBuf[PCI_NAME_STR_LENGTH + 1];
snprintf(FormatStr, sizeof(FormatStr), "%%4s %%4s %%%d[^\n]", PCI_NAME_STR_LENGTH); // FormatStr = "%4s %4s %PCI_NAME_STR_LENGTH[^\n]"
if (sscanf(Line + 2, FormatStr, SubVendorBuf, SubDeviceBuf, SubsystemNameBuf) == 3)
@@ -254,9 +254,9 @@ GetVendorByIdStr(const char * Filename, const char * VendorId)
* @brief Frees Vendor and all of its members
*
* @param VendorToFree
- * @return void
+ * @return VOID
*/
-void
+VOID
FreeVendor(Vendor * VendorToFree)
{
if (VendorToFree == NULL)
@@ -269,9 +269,9 @@ FreeVendor(Vendor * VendorToFree)
while (CurrentSubDevice)
{
- SubDevice * nextSubDevice = CurrentSubDevice->Next;
+ SubDevice * NextSubDevice = CurrentSubDevice->Next;
free(CurrentSubDevice);
- CurrentSubDevice = nextSubDevice;
+ CurrentSubDevice = NextSubDevice;
}
Device * NextDevice = CurrentDevice->Next;
@@ -282,9 +282,9 @@ FreeVendor(Vendor * VendorToFree)
/**
* @brief Frees PciIdDatabaseBuffer
- * @return void
+ * @return VOID
*/
-void
+VOID
FreePciIdDatabase()
{
if (PciIdDatabaseBuffer != NULL)
@@ -304,15 +304,15 @@ FreePciIdDatabase()
Vendor *
GetVendorById(UINT16 VendorId)
{
- char VendorIdAsStr[5];
- char ExecutablePath[MAX_PATH];
+ CHAR VendorIdAsStr[5];
+ CHAR ExecutablePath[MAX_PATH];
HMODULE hModule = GetModuleHandle(NULL);
snprintf(VendorIdAsStr, sizeof(VendorIdAsStr), "%04X", VendorId);
GetModuleFileName(hModule, ExecutablePath, sizeof(ExecutablePath));
// Extract executable name
- char * ExecutableName = strrchr(ExecutablePath, '\\');
+ CHAR * ExecutableName = strrchr(ExecutablePath, '\\');
if (ExecutableName != NULL)
{
ExecutableName++;
diff --git a/hyperdbg/libhyperdbg/code/debugger/misc/readmem.cpp b/hyperdbg/libhyperdbg/code/debugger/misc/readmem.cpp
index e0a4b9dc..eb72de38 100644
--- a/hyperdbg/libhyperdbg/code/debugger/misc/readmem.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/misc/readmem.cpp
@@ -164,7 +164,7 @@ HyperDbgReadMemory(UINT64 TargetAddress,
// Copy the buffer
//
memcpy(TargetBufferToStore,
- ((unsigned char *)MemReadRequest) + sizeof(DEBUGGER_READ_MEMORY),
+ ((UCHAR *)MemReadRequest) + sizeof(DEBUGGER_READ_MEMORY),
*ReturnLength);
//
@@ -413,11 +413,13 @@ HyperDbgShowMemoryOrDisassemble(DEBUGGER_SHOW_MEMORY_STYLE Style,
* @param Address location of where to read the memory
* @param MemoryType type of memory (phyical or virtual)
* @param Length Length of memory to show
+ *
+ * @return VOID
*/
-void
-ShowMemoryCommandDB(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length)
+VOID
+ShowMemoryCommandDB(UCHAR * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length)
{
- unsigned int Character;
+ UINT32 Character;
for (UINT32 i = 0; i < Size; i += 16)
{
@@ -434,7 +436,7 @@ ShowMemoryCommandDB(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, D
//
// Print the hex code
//
- for (size_t j = 0; j < 16; j++)
+ for (SIZE_T j = 0; j < 16; j++)
{
//
// check to see if the address is valid or not
@@ -453,7 +455,7 @@ ShowMemoryCommandDB(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, D
// Print the character
//
ShowMessages(" ");
- for (size_t j = 0; j < 16; j++)
+ for (SIZE_T j = 0; j < 16; j++)
{
Character = (OutputBuffer[i + j]);
if (isprint(Character))
@@ -481,11 +483,13 @@ ShowMemoryCommandDB(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, D
* @param Address location of where to read the memory
* @param MemoryType type of memory (phyical or virtual)
* @param Length Length of memory to show
+ *
+ * @return VOID
*/
-void
-ShowMemoryCommandDC(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length)
+VOID
+ShowMemoryCommandDC(UCHAR * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length)
{
- unsigned int Character;
+ UINT32 Character;
for (UINT32 i = 0; i < Size; i += 16)
{
if (MemoryType == DEBUGGER_READ_PHYSICAL_ADDRESS)
@@ -501,7 +505,7 @@ ShowMemoryCommandDC(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, D
//
// Print the hex code
//
- for (size_t j = 0; j < 16; j += 4)
+ for (SIZE_T j = 0; j < 16; j += 4)
{
//
// check to see if the address is valid or not
@@ -522,7 +526,7 @@ ShowMemoryCommandDC(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, D
//
ShowMessages(" ");
- for (size_t j = 0; j < 16; j++)
+ for (SIZE_T j = 0; j < 16; j++)
{
Character = (OutputBuffer[i + j]);
if (isprint(Character))
@@ -550,9 +554,11 @@ ShowMemoryCommandDC(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, D
* @param Address location of where to read the memory
* @param MemoryType type of memory (phyical or virtual)
* @param Length Length of memory to show
+ *
+ * @return VOID
*/
-void
-ShowMemoryCommandDD(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length)
+VOID
+ShowMemoryCommandDD(UCHAR * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length)
{
for (UINT32 i = 0; i < Size; i += 16)
{
@@ -569,7 +575,7 @@ ShowMemoryCommandDD(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, D
//
// Print the hex code
//
- for (size_t j = 0; j < 16; j += 4)
+ for (SIZE_T j = 0; j < 16; j += 4)
{
//
// check to see if the address is valid or not
@@ -599,9 +605,11 @@ ShowMemoryCommandDD(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, D
* @param Address location of where to read the memory
* @param MemoryType type of memory (phyical or virtual)
* @param Length Length of memory to show
+ *
+ * @return VOID
*/
-void
-ShowMemoryCommandDQ(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length)
+VOID
+ShowMemoryCommandDQ(UCHAR * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length)
{
for (UINT32 i = 0; i < Size; i += 16)
{
@@ -618,7 +626,7 @@ ShowMemoryCommandDQ(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, D
//
// Print the hex code
//
- for (size_t j = 0; j < 16; j += 8)
+ for (SIZE_T j = 0; j < 16; j += 8)
{
//
// check to see if the address is valid or not
diff --git a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine-wrapper.cpp b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine-wrapper.cpp
index 00caccde..9280bf09 100644
--- a/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine-wrapper.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/script-engine/script-engine-wrapper.cpp
@@ -51,7 +51,7 @@ typedef struct _ALLOCATED_MEMORY_FOR_SCRIPT_ENGINE_CASTING
* @return UINT64
*/
UINT64
-ScriptEngineConvertNameToAddressWrapper(const char * FunctionOrVariableName, PBOOLEAN WasFound)
+ScriptEngineConvertNameToAddressWrapper(const CHAR * FunctionOrVariableName, PBOOLEAN WasFound)
{
return ScriptEngineConvertNameToAddress(FunctionOrVariableName, WasFound);
}
@@ -65,7 +65,7 @@ ScriptEngineConvertNameToAddressWrapper(const char * FunctionOrVariableName, PBO
* @return UINT32
*/
UINT32
-ScriptEngineLoadFileSymbolWrapper(UINT64 BaseAddress, const char * PdbFileName, const char * CustomModuleName)
+ScriptEngineLoadFileSymbolWrapper(UINT64 BaseAddress, const CHAR * PdbFileName, const CHAR * CustomModuleName)
{
return ScriptEngineLoadFileSymbol(BaseAddress, PdbFileName, CustomModuleName);
}
@@ -101,7 +101,7 @@ ScriptEngineUnloadAllSymbolsWrapper()
* @return UINT32
*/
UINT32
-ScriptEngineUnloadModuleSymbolWrapper(char * ModuleName)
+ScriptEngineUnloadModuleSymbolWrapper(CHAR * ModuleName)
{
return ScriptEngineUnloadModuleSymbol(ModuleName);
}
@@ -114,7 +114,7 @@ ScriptEngineUnloadModuleSymbolWrapper(char * ModuleName)
* @return UINT32
*/
UINT32
-ScriptEngineSearchSymbolForMaskWrapper(const char * SearchMask)
+ScriptEngineSearchSymbolForMaskWrapper(const CHAR * SearchMask)
{
return ScriptEngineSearchSymbolForMask(SearchMask);
}
@@ -157,7 +157,7 @@ ScriptEngineGetDataTypeSizeWrapper(CHAR * TypeName, UINT64 * TypeSize)
* @return BOOLEAN
*/
BOOLEAN
-ScriptEngineCreateSymbolTableForDisassemblerWrapper(void * CallbackFunction)
+ScriptEngineCreateSymbolTableForDisassemblerWrapper(PVOID CallbackFunction)
{
return ScriptEngineCreateSymbolTableForDisassembler(CallbackFunction);
}
@@ -171,7 +171,7 @@ ScriptEngineCreateSymbolTableForDisassemblerWrapper(void * CallbackFunction)
* @return BOOLEAN
*/
BOOLEAN
-ScriptEngineConvertFileToPdbPathWrapper(const char * LocalFilePath, char * ResultPath, size_t ResultPathSize)
+ScriptEngineConvertFileToPdbPathWrapper(const CHAR * LocalFilePath, CHAR * ResultPath, SIZE_T ResultPathSize)
{
return ScriptEngineConvertFileToPdbPath(LocalFilePath, ResultPath, ResultPathSize);
@@ -192,7 +192,7 @@ BOOLEAN
ScriptEngineSymbolInitLoadWrapper(PMODULE_SYMBOL_DETAIL BufferToStoreDetails,
UINT32 StoredLength,
BOOLEAN DownloadIfAvailable,
- const char * SymbolPath,
+ const CHAR * SymbolPath,
BOOLEAN IsSilentLoad)
{
return ScriptEngineSymbolInitLoad(BufferToStoreDetails, StoredLength, DownloadIfAvailable, SymbolPath, IsSilentLoad);
@@ -211,11 +211,11 @@ ScriptEngineSymbolInitLoadWrapper(PMODULE_SYMBOL_DETAIL BufferToStoreDetails,
*/
BOOLEAN
ScriptEngineShowDataBasedOnSymbolTypesWrapper(
- const char * TypeName,
+ const CHAR * TypeName,
UINT64 Address,
BOOLEAN IsStruct,
PVOID BufferAddress,
- const char * AdditionalParameters)
+ const CHAR * AdditionalParameters)
{
return ScriptEngineShowDataBasedOnSymbolTypes(TypeName, Address, IsStruct, BufferAddress, AdditionalParameters);
}
@@ -243,9 +243,9 @@ ScriptEngineSymbolAbortLoadingWrapper()
* @return BOOLEAN
*/
BOOLEAN
-ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetailsWrapper(const char * LocalFilePath,
- char * PdbFilePath,
- char * GuidAndAgeDetails,
+ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetailsWrapper(const CHAR * LocalFilePath,
+ CHAR * PdbFilePath,
+ CHAR * GuidAndAgeDetails,
BOOLEAN Is32BitModule)
{
@@ -265,7 +265,7 @@ ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetailsWrapper(const char * LocalFi
* @return PVOID
*/
PVOID
-ScriptEngineParseWrapper(char * Expr, BOOLEAN ShowErrorMessageIfAny)
+ScriptEngineParseWrapper(CHAR * Expr, BOOLEAN ShowErrorMessageIfAny)
{
PSYMBOL_BUFFER SymbolBuffer;
SymbolBuffer = (PSYMBOL_BUFFER)ScriptEngineParse(Expr);
@@ -356,7 +356,7 @@ ScriptEngineEvalWrapper(PGUEST_REGS GuestRegs,
//
// Run Parser
//
- PSYMBOL_BUFFER CodeBuffer = (PSYMBOL_BUFFER)ScriptEngineParse((char*)Expr.c_str());
+ PSYMBOL_BUFFER CodeBuffer = (PSYMBOL_BUFFER)ScriptEngineParse((char *)Expr.c_str());
#ifdef _SCRIPT_ENGINE_IR_PRINT_EN
//
@@ -393,8 +393,8 @@ ScriptEngineEvalWrapper(PGUEST_REGS GuestRegs,
#ifdef _SCRIPT_ENGINE_CODEEXEC_DBG_EN
printf("Address = %lld, StackIndx = %lld, StackBaseIndx = %lld\n", i, ScriptGeneralRegisters.StackIndx, ScriptGeneralRegisters.StackBaseIndx);
- PSYMBOL Operator = (PSYMBOL)((unsigned long long)CodeBuffer->Head +
- (unsigned long long)(i * sizeof(SYMBOL)));
+ PSYMBOL Operator = (PSYMBOL)((UINT64)CodeBuffer->Head +
+ (UINT64)(i * sizeof(SYMBOL)));
printf("Function = %s\n", FunctionNames[Operator->Value]);
printf("Stack Buffer:\n");
for (UINT64 j = 0; j < ScriptGeneralRegisters.StackIndx; j++)
@@ -667,12 +667,12 @@ ScriptEngineWrapperTestParser(const string & Expr)
GUEST_REGS GuestRegs = {0};
- char test[] = "Hello world !";
- wchar_t testw[] =
+ CHAR test[] = "Hello world !";
+ WCHAR testw[] =
L"A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 "
L"9 a b c d e f g h i j k l m n o p q r s t u v w x y z";
- char * RspReg = (char *)malloc(0x100);
+ CHAR * RspReg = (CHAR *)malloc(0x100);
if (RspReg == NULL)
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/script-engine/symbol.cpp b/hyperdbg/libhyperdbg/code/debugger/script-engine/symbol.cpp
index 8b07c2b0..94bded6c 100644
--- a/hyperdbg/libhyperdbg/code/debugger/script-engine/symbol.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/script-engine/symbol.cpp
@@ -85,10 +85,10 @@ SymbolPrepareDebuggerWithSymbolInfo(UINT32 UserProcessId)
* @return VOID
*/
VOID
-SymbolCreateDisassemblerMapCallback(UINT64 Address,
- char * ModuleName,
- char * ObjectName,
- unsigned int ObjectSize)
+SymbolCreateDisassemblerMapCallback(UINT64 Address,
+ CHAR * ModuleName,
+ CHAR * ObjectName,
+ UINT32 ObjectSize)
{
//
// It has a string, should not be initialized with zero
@@ -272,7 +272,7 @@ SymbolBuildAndShowSymbolTable()
//
// show packet details
//
- for (size_t i = 0; i < g_SymbolTableSize / sizeof(MODULE_SYMBOL_DETAIL); i++)
+ for (SIZE_T i = 0; i < g_SymbolTableSize / sizeof(MODULE_SYMBOL_DETAIL); i++)
{
ShowMessages("is pdb details available? : %s\n", g_SymbolTable[i].IsSymbolDetailsFound ? "true" : "false");
ShowMessages("is pdb a path instead of module name? : %s\n", g_SymbolTable[i].IsLocalSymbolPath ? "true" : "false");
@@ -477,10 +477,10 @@ SymbolBuildSymbolTable(PMODULE_SYMBOL_DETAIL * BufferToStoreDetails,
ULONG ReturnedLength;
PRTL_PROCESS_MODULES ModuleInfo = NULL;
PMODULE_SYMBOL_DETAIL ModuleSymDetailArray = NULL;
- char SystemRoot[MAX_PATH] = {0};
- char ModuleSymbolPath[MAX_PATH] = {0};
- char TempPath[MAX_PATH] = {0};
- char ModuleSymbolGuidAndAge[MAXIMUM_GUID_AND_AGE_SIZE] = {0};
+ CHAR SystemRoot[MAX_PATH] = {0};
+ CHAR ModuleSymbolPath[MAX_PATH] = {0};
+ CHAR TempPath[MAX_PATH] = {0};
+ CHAR ModuleSymbolGuidAndAge[MAXIMUM_GUID_AND_AGE_SIZE] = {0};
BOOLEAN IsSymbolPdbDetailAvailable = FALSE;
BOOLEAN IsFreeUsermodeModulesBuffer = FALSE;
UINT32 ModuleDetailsSize = 0;
@@ -513,7 +513,7 @@ SymbolBuildSymbolTable(PMODULE_SYMBOL_DETAIL * BufferToStoreDetails,
transform(SystemRootString.begin(),
SystemRootString.end(),
SystemRootString.begin(),
- [](unsigned char c) { return std::tolower(c); });
+ [](UCHAR c) { return std::tolower(c); });
//
// Remove system32 from the root
@@ -806,7 +806,7 @@ SymbolBuildSymbolTable(PMODULE_SYMBOL_DETAIL * BufferToStoreDetails,
RtlZeroMemory(ModuleSymbolPath, sizeof(ModuleSymbolPath));
RtlZeroMemory(ModuleSymbolGuidAndAge, sizeof(ModuleSymbolGuidAndAge));
- string ModuleFullPath((const char *)ModuleInfo->Modules[i].FullPathName);
+ string ModuleFullPath((const CHAR *)ModuleInfo->Modules[i].FullPathName);
if (ModuleFullPath.rfind("\\SystemRoot\\", 0) == 0)
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/tests/tests.cpp b/hyperdbg/libhyperdbg/code/debugger/tests/tests.cpp
index 1fb9aa68..2516858d 100644
--- a/hyperdbg/libhyperdbg/code/debugger/tests/tests.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/tests/tests.cpp
@@ -29,7 +29,7 @@ SetupTestName(_Inout_updates_bytes_all_(BufferLength) PCHAR TestLocation,
HANDLE fileHandle;
DWORD driverLocLen = 0;
HMODULE ProcHandle = GetModuleHandle(NULL);
- char * Pos;
+ CHAR * Pos;
//
// Get the current directory.
@@ -115,12 +115,12 @@ CreateProcessAndOpenPipeConnection(PHANDLE ConnectionPipeHandle,
HANDLE PipeHandle;
BOOLEAN SentMessageResult;
UINT32 ReadBytes;
- char * BufferToRead;
- char * BufferToSend;
- char HandshakeBuffer[] = "Hello, Dear Test Process... Yes, I'm HyperDbg Debugger :)";
+ CHAR * BufferToRead;
+ CHAR * BufferToSend;
+ CHAR HandshakeBuffer[] = "Hello, Dear Test Process... Yes, I'm HyperDbg Debugger :)";
PROCESS_INFORMATION ProcessInfo;
STARTUPINFO StartupInfo;
- char CmdArgs[] = TEST_PROCESS_NAME " im-hyperdbg";
+ CHAR CmdArgs[] = TEST_PROCESS_NAME " im-hyperdbg";
PipeHandle = NamedPipeServerCreatePipe("\\\\.\\Pipe\\HyperDbgTests",
TEST_CASE_MAXIMUM_BUFFERS_TO_COMMUNICATE,
@@ -133,7 +133,7 @@ CreateProcessAndOpenPipeConnection(PHANDLE ConnectionPipeHandle,
return FALSE;
}
- BufferToRead = (char *)malloc(TEST_CASE_MAXIMUM_BUFFERS_TO_COMMUNICATE);
+ BufferToRead = (CHAR *)malloc(TEST_CASE_MAXIMUM_BUFFERS_TO_COMMUNICATE);
if (!BufferToRead)
{
@@ -143,7 +143,7 @@ CreateProcessAndOpenPipeConnection(PHANDLE ConnectionPipeHandle,
return FALSE;
}
- BufferToSend = (char *)malloc(TEST_CASE_MAXIMUM_BUFFERS_TO_COMMUNICATE);
+ BufferToSend = (CHAR *)malloc(TEST_CASE_MAXIMUM_BUFFERS_TO_COMMUNICATE);
if (!BufferToSend)
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/transparency/gaussian-rng.cpp b/hyperdbg/libhyperdbg/code/debugger/transparency/gaussian-rng.cpp
index a45cd251..dff25845 100644
--- a/hyperdbg/libhyperdbg/code/debugger/transparency/gaussian-rng.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/transparency/gaussian-rng.cpp
@@ -21,7 +21,7 @@
double
Median(vector Cases)
{
- size_t Size = Cases.size();
+ SIZE_T Size = Cases.size();
if (Size == 0)
{
@@ -52,7 +52,7 @@ template
T
Average(const vector & vec)
{
- size_t Sz;
+ SIZE_T Sz;
T Mean;
Sz = vec.size();
if (Sz == 1)
@@ -122,11 +122,11 @@ Randn(double mu, double sigma)
{
double U1, U2, W, mult;
static double X1, X2;
- static int call = 0;
+ static INT Call = 0;
- if (call == 1)
+ if (Call == 1)
{
- call = !call;
+ Call = !Call;
return (mu + sigma * (double)X2);
}
@@ -141,7 +141,7 @@ Randn(double mu, double sigma)
X1 = U1 * mult;
X2 = U2 * mult;
- call = !call;
+ Call = !Call;
return (mu + sigma * (double)X1);
}
@@ -158,7 +158,7 @@ VOID
GuassianGenerateRandom(vector Data, UINT64 * AverageOfData, UINT64 * StandardDeviationOfData, UINT64 * MedianOfData)
{
vector FinalData;
- int CountOfOutliers = 0;
+ INT CountOfOutliers = 0;
double Medians;
double Mad;
double StandardDeviation;
diff --git a/hyperdbg/libhyperdbg/code/debugger/transparency/transparency.cpp b/hyperdbg/libhyperdbg/code/debugger/transparency/transparency.cpp
index 5bf59f65..9e3f6b67 100644
--- a/hyperdbg/libhyperdbg/code/debugger/transparency/transparency.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/transparency/transparency.cpp
@@ -16,13 +16,13 @@ using namespace std;
/**
* @brief get the difference clock cycles between two rdtsc(s)
*
- * @return unsigned long long
+ * @return UINT64
*/
-unsigned long long
+UINT64
TransparentModeRdtscDiffVmexit()
{
- unsigned long long ret, ret2;
- int cpuid_result[4] = {0};
+ UINT64 Ret, Ret2;
+ INT CpuidResult[4] = {0};
//
// GCC
@@ -33,7 +33,7 @@ TransparentModeRdtscDiffVmexit()
//
// Win32
//
- ret = CpuReadTsc();
+ Ret = CpuReadTsc();
/* vm exit forced here. it uses: eax = 0; cpuid; */
@@ -45,7 +45,7 @@ TransparentModeRdtscDiffVmexit()
//
// WIN32
//
- CpuCpuId(cpuid_result, 0);
+ CpuCpuId(CpuidResult, 0);
//
// GCC
@@ -56,44 +56,32 @@ TransparentModeRdtscDiffVmexit()
//
// WIN32
//
- ret2 = CpuReadTsc();
+ Ret2 = CpuReadTsc();
- return ret2 - ret;
+ return Ret2 - Ret;
}
/**
* @brief get the difference clock cycles between rdtsc+cpuid+rdtsc
*
- * @return unsigned long long
+ * @return UINT64
*/
-unsigned long long
+UINT64
TransparentModeRdtscVmexitTracing()
{
- unsigned long long ret, ret2;
-
- //
- // GCC
- //
- // __asm__ volatile("rdtsc" : "=a" (eax), "=d" (edx));
- // ret = ((unsigned long long)eax) | (((unsigned long long)edx) << 32);
+ UINT64 Ret, Ret2;
//
// WIN32
//
- ret = CpuReadTsc();
-
- //
- // GCC
- //
- // __asm__ volatile("rdtsc" : "=a"(eax), "=d"(edx));
- // ret2 = ((unsigned long long)eax) | (((unsigned long long)edx) << 32);
+ Ret = CpuReadTsc();
//
// WIN32
//
- ret2 = CpuReadTsc();
+ Ret2 = CpuReadTsc();
- return ret2 - ret;
+ return Ret2 - Ret;
}
/**
@@ -103,9 +91,9 @@ TransparentModeRdtscVmexitTracing()
* @param Average a pointer to save average on it
* @param StandardDeviation a pointer to standard deviation average on it
* @param Median a pointer to save median on it
- * @return int
+ * @return INT
*/
-int
+INT
TransparentModeCpuidTimeStampCounter(UINT64 * Average,
UINT64 * StandardDeviation,
UINT64 * Median)
@@ -145,9 +133,9 @@ TransparentModeCpuidTimeStampCounter(UINT64 * Average,
* @param Average a pointer to save average on it
* @param StandardDeviation a pointer to standard deviation average on it
* @param Median a pointer to save median on it
- * @return int
+ * @return INT
*/
-int
+INT
TransparentModeRdtscEmulationDetection(UINT64 * Average,
UINT64 * StandardDeviation,
UINT64 * Median)
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index b27a1d56..3ed91823 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -146,20 +146,20 @@ SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr, PRICH_HEADER PeFileRich
//
// Extract Product ID (bytes 2-3 of entry, little-endian)
//
- WORD ProdID = ((unsigned char)RichHeaderPtr[i + 3] << 8) | (unsigned char)RichHeaderPtr[i + 2];
+ WORD ProdID = ((UCHAR)RichHeaderPtr[i + 3] << 8) | (UCHAR)RichHeaderPtr[i + 2];
//
// Extract Build ID (bytes 0-1 of entry, little-endian)
//
- WORD BuildID = ((unsigned char)RichHeaderPtr[i + 1] << 8) | (unsigned char)RichHeaderPtr[i];
+ WORD BuildID = ((UCHAR)RichHeaderPtr[i + 1] << 8) | (UCHAR)RichHeaderPtr[i];
//
// Extract Use Count (bytes 4-7 of entry, little-endian 32-bit)
//
- DWORD UseCount = ((unsigned char)RichHeaderPtr[i + 7] << 24) |
- ((unsigned char)RichHeaderPtr[i + 6] << 16) |
- ((unsigned char)RichHeaderPtr[i + 5] << 8) |
- (unsigned char)RichHeaderPtr[i + 4];
+ DWORD UseCount = ((UCHAR)RichHeaderPtr[i + 7] << 24) |
+ ((UCHAR)RichHeaderPtr[i + 6] << 16) |
+ ((UCHAR)RichHeaderPtr[i + 5] << 8) |
+ (UCHAR)RichHeaderPtr[i + 4];
//
// Store the parsed entry (adjust index: i/8 gives entry number, -2 for header offset)
@@ -190,10 +190,10 @@ SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr, PRICH_HEADER PeFileRich
* @param Index Offset where "Rich" signature was found
* @param DataPtr Pointer to the beginning of the PE file data
*
- * @return int Size of the Rich header in bytes, or 0 if DanS signature not found
+ * @return INT Size of the Rich header in bytes, or 0 if DanS signature not found
*
*/
-int
+INT
DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr)
{
//
@@ -204,8 +204,8 @@ DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr)
//
// Start searching backwards from just before the "Rich" signature
//
- int IndexPointer = Index - 4;
- int RichHeaderSize = 0;
+ INT IndexPointer = Index - 4;
+ INT RichHeaderSize = 0;
//
// Search backwards for the DanS signature that marks the beginning
@@ -253,15 +253,15 @@ DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr)
*/
VOID
-PeHexDump(CHAR * Ptr, int Size, int SecAddress)
+PeHexDump(CHAR * Ptr, INT Size, INT SecAddress)
{
- int i = 1, Temp = 0;
+ INT i = 1, Temp = 0;
//
// Buffer to store the character dump displayed at the
// right side
//
- wchar_t Buf[18];
+ WCHAR Buf[18];
ShowMessages("\n\n%x: |", SecAddress);
Buf[Temp] = ' '; // initial space
@@ -946,5 +946,5 @@ PeGetSyscallNumber(LPCSTR NtFunctionName)
// since usually the syscall handler is less than 30 bytes,
// and we want to avoid disassembling another function
//
- return HyperDbgGetImmediateValueOnEaxForSyscallNumber((unsigned char *)TargetFunc, 30, TRUE);
+ return HyperDbgGetImmediateValueOnEaxForSyscallNumber((UCHAR *)TargetFunc, 30, TRUE);
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
index 5894890f..949688b9 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/ud.cpp
@@ -37,7 +37,7 @@ UdInitializeUserDebugger()
//
// Initialize the handle table
//
- for (size_t i = 0; i < DEBUGGER_MAXIMUM_SYNCRONIZATION_USER_DEBUGGER_OBJECTS; i++)
+ for (SIZE_T i = 0; i < DEBUGGER_MAXIMUM_SYNCRONIZATION_USER_DEBUGGER_OBJECTS; i++)
{
g_UserSyncronizationObjectsHandleTable[i].IsOnWaitingState = FALSE;
g_UserSyncronizationObjectsHandleTable[i].EventHandle = CreateEvent(NULL, FALSE, FALSE, NULL);
@@ -75,7 +75,7 @@ UdUninitializeUserDebugger()
//
// Initialize the handle table
//
- for (size_t i = 0; i < DEBUGGER_MAXIMUM_SYNCRONIZATION_USER_DEBUGGER_OBJECTS; i++)
+ for (SIZE_T i = 0; i < DEBUGGER_MAXIMUM_SYNCRONIZATION_USER_DEBUGGER_OBJECTS; i++)
{
if (g_UserSyncronizationObjectsHandleTable[i].EventHandle != NULL)
{
@@ -1074,7 +1074,7 @@ UdSendCommand(UINT64 ProcessDetailToken,
//
// Append the optional buffer to the command packet buffer
//
- memcpy((VOID *)((UINT8 *)CommandPacket + sizeof(DEBUGGER_UD_COMMAND_PACKET)), OptionalBuffer, OptionalBufferSize);
+ memcpy((PVOID)((UINT8 *)CommandPacket + sizeof(DEBUGGER_UD_COMMAND_PACKET)), OptionalBuffer, OptionalBufferSize);
}
//
@@ -1115,7 +1115,7 @@ UdSendCommand(UINT64 ProcessDetailToken,
// Append the optional buffer to the command packet buffer
//
memcpy(OptionalBuffer,
- (VOID *)((UINT8 *)CommandPacket + sizeof(DEBUGGER_UD_COMMAND_PACKET)),
+ (PVOID)((UINT8 *)CommandPacket + sizeof(DEBUGGER_UD_COMMAND_PACKET)),
OptionalBufferSize);
}
@@ -1259,7 +1259,7 @@ UdSendStepPacketToDebuggee(UINT64 ProcessDetailToken,
// instruction or not, if yes we have to compute the length of call
//
if (HyperDbgCheckWhetherTheCurrentInstructionIsCall(
- (unsigned char *)&g_ActiveProcessDebuggingState.InstructionBytesOnRip[0],
+ (UCHAR *)&g_ActiveProcessDebuggingState.InstructionBytesOnRip[0],
MAXIMUM_INSTR_SIZE,
g_ActiveProcessDebuggingState.Is32Bit ? FALSE : TRUE, // equals to !g_IsRunningInstruction32Bit
&CallInstructionSize))
@@ -1499,7 +1499,7 @@ UdShowListActiveDebuggingProcessesAndThreads()
//
// Show list of active processes and threads
//
- for (size_t i = 0; i < QueryCountOfActiveThreadsRequest.CountOfActiveDebuggingThreadsAndProcesses; i++)
+ for (SIZE_T i = 0; i < QueryCountOfActiveThreadsRequest.CountOfActiveDebuggingThreadsAndProcesses; i++)
{
if (AddressOfThreadsAndProcessDetails[i].IsProcess)
{
diff --git a/hyperdbg/libhyperdbg/code/hwdbg/hwdbg-interpreter.cpp b/hyperdbg/libhyperdbg/code/hwdbg/hwdbg-interpreter.cpp
index 00e9b708..bc074b33 100644
--- a/hyperdbg/libhyperdbg/code/hwdbg/hwdbg-interpreter.cpp
+++ b/hyperdbg/libhyperdbg/code/hwdbg/hwdbg-interpreter.cpp
@@ -117,7 +117,7 @@ HwdbgInterpretPacket(PVOID BufferReceived, UINT32 LengthReceived)
//
// Read port arrangements
//
- for (size_t i = 0; i < g_HwdbgInstanceInfo.numberOfPorts; i++)
+ for (SIZE_T i = 0; i < g_HwdbgInstanceInfo.numberOfPorts; i++)
{
g_HwdbgPortConfiguration.push_back(InstanceInfoPorts[i]);
}
@@ -184,12 +184,12 @@ BOOLEAN
HwdbgInterpreterFillMemoryFromFile(
const TCHAR * FileName,
UINT32 * MemoryBuffer,
- size_t BufferSize)
+ SIZE_T BufferSize)
{
std::ifstream File(FileName);
std::string Line;
BOOLEAN Result = TRUE;
- size_t Index = 0;
+ SIZE_T Index = 0;
if (!File.is_open())
{
@@ -243,7 +243,7 @@ HwdbgInterpreterFillFileFromMemory(
HWDBG_INSTANCE_INFORMATION * InstanceInfo,
const TCHAR * FileName,
UINT32 * MemoryBuffer,
- size_t BufferSize,
+ SIZE_T BufferSize,
HWDBG_ACTION_ENUMS RequestedAction)
{
std::ofstream File(FileName);
@@ -254,8 +254,8 @@ HwdbgInterpreterFillFileFromMemory(
return FALSE;
}
- size_t Address = 0;
- for (size_t I = 0; I < BufferSize / sizeof(UINT32); ++I)
+ SIZE_T Address = 0;
+ for (SIZE_T I = 0; I < BufferSize / sizeof(UINT32); ++I)
{
File << std::hex << std::setw(8) << std::setfill('0') << MemoryBuffer[I];
File << " ; +0x" << std::hex << std::setw(1) << std::setfill('0') << Address;
@@ -572,7 +572,7 @@ HwdbgShowIntanceInfo(HWDBG_INSTANCE_INFORMATION * InstanceInfo)
* @return BOOLEAN
*/
BOOLEAN
-HwdbgReadInstanceInfoFromFile(const TCHAR * FileName, UINT32 * MemoryBuffer, size_t BufferSize)
+HwdbgReadInstanceInfoFromFile(const TCHAR * FileName, UINT32 * MemoryBuffer, SIZE_T BufferSize)
{
TCHAR TestFilePath[MAX_PATH] = {0};
diff --git a/hyperdbg/libhyperdbg/code/hwdbg/hwdbg-scripts.cpp b/hyperdbg/libhyperdbg/code/hwdbg/hwdbg-scripts.cpp
index 1932d7b9..f905eba3 100644
--- a/hyperdbg/libhyperdbg/code/hwdbg/hwdbg-scripts.cpp
+++ b/hyperdbg/libhyperdbg/code/hwdbg/hwdbg-scripts.cpp
@@ -36,7 +36,7 @@ HwdbgScriptPrintScriptBuffer(CHAR * ScriptBuffer, UINT32 ScriptBufferSize)
ScriptBufferSize * 8 // Converted to bits
);
- for (size_t i = 0; i < ScriptBufferSize; i++)
+ for (SIZE_T i = 0; i < ScriptBufferSize; i++)
{
ShowMessages("%02X ", (UINT8)ScriptBuffer[i]);
}
@@ -60,11 +60,11 @@ HwdbgScriptPrintScriptBuffer(CHAR * ScriptBuffer, UINT32 ScriptBufferSize)
BOOLEAN
HwdbgScriptCompressScriptBuffer(HWDBG_INSTANCE_INFORMATION * InstanceInfo,
SYMBOL * ScriptBuffer,
- size_t ScriptBufferSize,
+ SIZE_T ScriptBufferSize,
UINT32 NumberOfStagesForScript,
HWDBG_SHORT_SYMBOL ** NewScriptBuffer,
- size_t * NewCompressedBufferSize,
- size_t * NumberOfBytesPerChunk)
+ SIZE_T * NewCompressedBufferSize,
+ SIZE_T * NumberOfBytesPerChunk)
{
//
// Now, converting the script based on supported script variable length
@@ -148,12 +148,12 @@ HwdbgScriptCompressScriptBuffer(HWDBG_INSTANCE_INFORMATION * InstanceInfo,
*/
VOID
HwdbgScriptPrintFinalScriptBufferAndHardwareDetails(HWDBG_INSTANCE_INFORMATION * InstanceInfo,
- size_t NewCompressedBufferSize,
+ SIZE_T NewCompressedBufferSize,
UINT32 NumberOfStagesForScript,
UINT32 NumberOfOperandsForScript,
HWDBG_SHORT_SYMBOL * NewScriptBuffer,
- size_t NumberOfNeededFlipFlopsInTargetDevice,
- size_t NumberOfBytesPerChunk,
+ SIZE_T NumberOfNeededFlipFlopsInTargetDevice,
+ SIZE_T NumberOfBytesPerChunk,
UINT32 NumberOfOperandsImplemented)
{
ShowMessages("\n---------------------------------------------------------\n");
@@ -169,7 +169,7 @@ HwdbgScriptPrintFinalScriptBufferAndHardwareDetails(HWDBG_INSTANCE_INFORMATION *
NumberOfNeededFlipFlopsInTargetDevice,
NumberOfBytesPerChunk);
- for (size_t i = 0; i < NewCompressedBufferSize; i++)
+ for (SIZE_T i = 0; i < NewCompressedBufferSize; i++)
{
ShowMessages("%02X ", (UINT8)((CHAR *)NewScriptBuffer)[i]);
}
@@ -193,7 +193,7 @@ HwdbgScriptWriteScriptConfigurationPacketIntoFile(HWDBG_INSTANCE_INFORMATION * I
UINT32 NumberOfStagesForScript,
UINT32 NumberOfOperandsImplemented,
HWDBG_SHORT_SYMBOL * NewScriptBuffer,
- size_t NewCompressedBufferSize)
+ SIZE_T NewCompressedBufferSize)
{
TCHAR TestFilePath[MAX_PATH] = {0};
@@ -237,9 +237,9 @@ HwdbgScriptCreateHwdbgScript(CHAR * ScriptBuffer,
UINT32 NumberOfStagesForScript = 0;
UINT32 NumberOfOperandsImplemented = 0;
UINT32 NumberOfOperandsForScript = 0;
- size_t NewCompressedBufferSize = 0;
- size_t NumberOfNeededFlipFlopsInTargetDevice = 0;
- size_t NumberOfBytesPerChunk = 0;
+ SIZE_T NewCompressedBufferSize = 0;
+ SIZE_T NumberOfNeededFlipFlopsInTargetDevice = 0;
+ SIZE_T NumberOfBytesPerChunk = 0;
HWDBG_SHORT_SYMBOL * NewScriptBuffer = NULL;
//
@@ -344,7 +344,7 @@ HwdbgScriptGetScriptBufferFromRawString(string ScriptString,
//
// Run script engine handler
//
- ResultingCodeBuffer = ScriptEngineParseWrapper((char *)ScriptString.c_str(), TRUE);
+ ResultingCodeBuffer = ScriptEngineParseWrapper((CHAR *)ScriptString.c_str(), TRUE);
if (ResultingCodeBuffer == NULL)
{
diff --git a/hyperdbg/libhyperdbg/code/objects/objects.cpp b/hyperdbg/libhyperdbg/code/objects/objects.cpp
index b056d6b7..4ac444a2 100644
--- a/hyperdbg/libhyperdbg/code/objects/objects.cpp
+++ b/hyperdbg/libhyperdbg/code/objects/objects.cpp
@@ -297,7 +297,7 @@ ObjectShowProcessesOrThreadList(BOOLEAN IsProcess,
//
// Show list of active processes and threads
//
- for (size_t i = 0; i < QueryCountOfActiveThreadsOrProcessesRequest.Count; i++)
+ for (SIZE_T i = 0; i < QueryCountOfActiveThreadsOrProcessesRequest.Count; i++)
{
//
// Details of process/thread should be shown
diff --git a/hyperdbg/libhyperdbg/header/assembler.h b/hyperdbg/libhyperdbg/header/assembler.h
index 8b5e585b..5a133a0e 100644
--- a/hyperdbg/libhyperdbg/header/assembler.h
+++ b/hyperdbg/libhyperdbg/header/assembler.h
@@ -15,13 +15,13 @@
class AssembleData
{
public:
- std::string AsmRaw {};
- std::string AsmFixed {};
- size_t StatementCount {};
- size_t BytesCount {};
- unsigned char * EncodedBytes {};
- vector EncBytesIntVec {};
- ks_err KsErr {};
+ std::string AsmRaw {};
+ std::string AsmFixed {};
+ SIZE_T StatementCount {};
+ SIZE_T BytesCount {};
+ UCHAR * EncodedBytes {};
+ vector EncBytesIntVec {};
+ ks_err KsErr {};
AssembleData() = default;
diff --git a/hyperdbg/libhyperdbg/header/commands.h b/hyperdbg/libhyperdbg/header/commands.h
index 6fda4686..9e24fec9 100644
--- a/hyperdbg/libhyperdbg/header/commands.h
+++ b/hyperdbg/libhyperdbg/header/commands.h
@@ -40,84 +40,84 @@ CommandSettingsGetValueFromConfigFile(std::string OptionName, std::string & Opti
VOID
CpuReadVendorString(CHAR * Result);
-int
+INT
ReadCpuDetails();
VOID
-ShowMessages(const char * Fmt, ...);
+ShowMessages(const CHAR * Fmt, ...);
string
SeparateTo64BitValue(UINT64 Value);
-void
-ShowMemoryCommandDB(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length);
+VOID
+ShowMemoryCommandDB(UCHAR * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length);
-void
-ShowMemoryCommandDD(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length);
+VOID
+ShowMemoryCommandDD(UCHAR * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length);
-void
-ShowMemoryCommandDC(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length);
+VOID
+ShowMemoryCommandDC(UCHAR * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length);
-void
-ShowMemoryCommandDQ(unsigned char * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length);
+VOID
+ShowMemoryCommandDQ(UCHAR * OutputBuffer, UINT32 Size, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, UINT64 Length);
VOID
CommandPteShowResults(UINT64 TargetVa, PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS PteRead);
DEBUGGER_CONDITIONAL_JUMP_STATUS
-HyperDbgIsConditionalJumpTaken(unsigned char * BufferToDisassemble,
- UINT64 BuffLength,
- RFLAGS Rflags,
- BOOLEAN Isx86_64);
+HyperDbgIsConditionalJumpTaken(UCHAR * BufferToDisassemble,
+ UINT64 BuffLength,
+ RFLAGS Rflags,
+ BOOLEAN Isx86_64);
-int
-HyperDbgDisassembler64(unsigned char * BufferToDisassemble,
- UINT64 BaseAddress,
- UINT64 Size,
- UINT32 MaximumInstrDecoded,
- BOOLEAN ShowBranchIsTakenOrNot,
- PRFLAGS Rflags);
+INT
+HyperDbgDisassembler64(UCHAR * BufferToDisassemble,
+ UINT64 BaseAddress,
+ UINT64 Size,
+ UINT32 MaximumInstrDecoded,
+ BOOLEAN ShowBranchIsTakenOrNot,
+ PRFLAGS Rflags);
-int
-HyperDbgDisassembler32(unsigned char * BufferToDisassemble,
- UINT64 BaseAddress,
- UINT64 Size,
- UINT32 MaximumInstrDecoded,
- BOOLEAN ShowBranchIsTakenOrNot,
- PRFLAGS Rflags);
+INT
+HyperDbgDisassembler32(UCHAR * BufferToDisassemble,
+ UINT64 BaseAddress,
+ UINT64 Size,
+ UINT32 MaximumInstrDecoded,
+ BOOLEAN ShowBranchIsTakenOrNot,
+ PRFLAGS Rflags);
UINT32
HyperDbgLengthDisassemblerEngine(
- unsigned char * BufferToDisassemble,
- UINT64 BuffLength,
- BOOLEAN Isx86_64);
+ UCHAR * BufferToDisassemble,
+ UINT64 BuffLength,
+ BOOLEAN Isx86_64);
BOOLEAN
HyperDbgCheckWhetherTheCurrentInstructionIsCall(
- unsigned char * BufferToDisassemble,
- UINT64 BuffLength,
- BOOLEAN Isx86_64,
- PUINT32 CallLength);
+ UCHAR * BufferToDisassemble,
+ UINT64 BuffLength,
+ BOOLEAN Isx86_64,
+ PUINT32 CallLength);
BOOLEAN
HyperDbgCheckWhetherTheCurrentInstructionIsCallOrRet(
- unsigned char * BufferToDisassemble,
- UINT64 CurrentRip,
- UINT32 BuffLength,
- BOOLEAN Isx86_64,
- PBOOLEAN IsRet);
+ UCHAR * BufferToDisassemble,
+ UINT64 CurrentRip,
+ UINT32 BuffLength,
+ BOOLEAN Isx86_64,
+ PBOOLEAN IsRet);
BOOLEAN
HyperDbgCheckWhetherTheCurrentInstructionIsRet(
- unsigned char * BufferToDisassemble,
- UINT64 BuffLength,
- BOOLEAN Isx86_64);
+ UCHAR * BufferToDisassemble,
+ UINT64 BuffLength,
+ BOOLEAN Isx86_64);
UINT32
HyperDbgGetImmediateValueOnEaxForSyscallNumber(
- unsigned char * BufferToDisassemble,
- UINT64 BuffLength,
- BOOLEAN Isx86_64);
+ UCHAR * BufferToDisassemble,
+ UINT64 BuffLength,
+ BOOLEAN Isx86_64);
VOID
HyperDbgShowMemoryOrDisassemble(DEBUGGER_SHOW_MEMORY_STYLE Style,
diff --git a/hyperdbg/libhyperdbg/header/common.h b/hyperdbg/libhyperdbg/header/common.h
index ba0b5019..eda44a98 100644
--- a/hyperdbg/libhyperdbg/header/common.h
+++ b/hyperdbg/libhyperdbg/header/common.h
@@ -184,7 +184,7 @@
extern "C" {
#endif
-extern bool
+extern BOOLEAN
AsmVmxSupportDetection();
#ifdef __cplusplus
@@ -195,13 +195,13 @@ AsmVmxSupportDetection();
// Spinlocks //
//////////////////////////////////////////////////
-void
+VOID
SpinlockLock(volatile LONG * Lock);
-void
-SpinlockLockWithCustomWait(volatile LONG * Lock, unsigned MaximumWait);
+VOID
+SpinlockLockWithCustomWait(volatile LONG * Lock, UINT32 MaximumWait);
-void
+VOID
SpinlockUnlock(volatile LONG * Lock);
//////////////////////////////////////////////////
@@ -209,7 +209,7 @@ SpinlockUnlock(volatile LONG * Lock);
//////////////////////////////////////////////////
VOID
-PrintBits(const UINT32 size, const void * ptr);
+PrintBits(const UINT32 size, const VOID * ptr);
BOOL
Replace(std::string & str, const std::string & from, const std::string & to);
@@ -218,7 +218,7 @@ VOID
ReplaceAll(string & str, const string & from, const string & to);
const vector
-Split(const string & s, const char & c);
+Split(const string & s, const CHAR & c);
BOOLEAN
IsNumber(const string & str);
@@ -229,7 +229,7 @@ Log2Ceil(UINT32 n);
BOOLEAN
IsHexNotation(const string & s);
-vector
+vector
HexToBytes(const string & hex);
BOOLEAN
@@ -251,7 +251,7 @@ std::string
GetLowerStringFromCommandToken(CommandToken TargetToken);
BOOLEAN
-CompareLowerCaseStrings(CommandToken TargetToken, const char * StringToCompare);
+CompareLowerCaseStrings(CommandToken TargetToken, const CHAR * StringToCompare);
BOOLEAN
IsTokenBracketString(CommandToken TargetToken);
@@ -268,17 +268,17 @@ SetPrivilege(HANDLE Token, // access token handle
BOOL EnablePrivilege // to enable or disable privilege
);
-void
+VOID
Trim(std::string & s);
std::string
RemoveSpaces(std::string str);
BOOLEAN
-IsFileExistA(const char * FileName);
+IsFileExistA(const CHAR * FileName);
BOOLEAN
-IsFileExistW(const wchar_t * FileName);
+IsFileExistW(const WCHAR * FileName);
VOID
GetConfigFilePath(PWCHAR ConfigPath);
@@ -286,23 +286,23 @@ GetConfigFilePath(PWCHAR ConfigPath);
VOID
StringToWString(std::wstring & ws, const std::string & s);
-size_t
-FindCaseInsensitive(std::string Input, std::string ToSearch, size_t Pos);
+SIZE_T
+FindCaseInsensitive(std::string Input, std::string ToSearch, SIZE_T Pos);
-size_t
-FindCaseInsensitiveW(std::wstring Input, std::wstring ToSearch, size_t Pos);
+SIZE_T
+FindCaseInsensitiveW(std::wstring Input, std::wstring ToSearch, SIZE_T Pos);
-char *
+CHAR *
ConvertStringVectorToCharPointerArray(const std::string & s);
std::vector
ListDirectory(const std::string & Directory, const std::string & Extension);
BOOLEAN
-IsEmptyString(char * Text);
+IsEmptyString(CHAR * Text);
VOID
-CommonCpuidInstruction(UINT32 Func, UINT32 SubFunc, int * CpuInfo);
+CommonCpuidInstruction(UINT32 Func, UINT32 SubFunc, INT * CpuInfo);
BOOLEAN
CheckCpuSupportRtm();
diff --git a/hyperdbg/libhyperdbg/header/communication.h b/hyperdbg/libhyperdbg/header/communication.h
index f53325b4..c33e377f 100644
--- a/hyperdbg/libhyperdbg/header/communication.h
+++ b/hyperdbg/libhyperdbg/header/communication.h
@@ -29,13 +29,13 @@ CommunicationServerCreateServerAndWaitForClient(PCSTR Port,
SOCKET * ClientSocketArg,
SOCKET * ListenSocketArg);
-int
-CommunicationServerReceiveMessage(SOCKET ClientSocket, char * recvbuf, int recvbuflen);
+INT
+CommunicationServerReceiveMessage(SOCKET ClientSocket, CHAR * recvbuf, INT recvbuflen);
-int
-CommunicationServerSendMessage(SOCKET ClientSocket, const char * sendbuf, int length);
+INT
+CommunicationServerSendMessage(SOCKET ClientSocket, const CHAR * sendbuf, INT length);
-int
+INT
CommunicationServerShutdownAndCleanupConnection(SOCKET ClientSocket,
SOCKET ListenSocket);
@@ -43,19 +43,19 @@ CommunicationServerShutdownAndCleanupConnection(SOCKET ClientSocket,
// Client //
//////////////////////////////////////////
-int
+INT
CommunicationClientConnectToServer(PCSTR Ip, PCSTR Port, SOCKET * ConnectSocketArg);
-int
-CommunicationClientSendMessage(SOCKET ConnectSocket, const char * sendbuf, int buflen);
+INT
+CommunicationClientSendMessage(SOCKET ConnectSocket, const CHAR * sendbuf, INT buflen);
-int
+INT
CommunicationClientShutdownConnection(SOCKET ConnectSocket);
-int
+INT
CommunicationClientReceiveMessage(SOCKET ConnectSocket, CHAR * RecvBuf, UINT32 MaxBuffLen, PUINT32 BuffLenRecvd);
-int
+INT
CommunicationClientCleanup(SOCKET ConnectSocket);
//////////////////////////////////////////
@@ -68,11 +68,11 @@ RemoteConnectionListen(PCSTR Port);
VOID
RemoteConnectionConnect(PCSTR Ip, PCSTR Port);
-int
-RemoteConnectionSendCommand(const char * sendbuf, int len);
+INT
+RemoteConnectionSendCommand(const CHAR * sendbuf, INT len);
-int
-RemoteConnectionSendResultsToHost(const char * sendbuf, int len);
+INT
+RemoteConnectionSendResultsToHost(const CHAR * sendbuf, INT len);
-int
+INT
RemoteConnectionCloseTheConnectionWithDebuggee();
diff --git a/hyperdbg/libhyperdbg/header/debugger.h b/hyperdbg/libhyperdbg/header/debugger.h
index 1ecb7113..2f4aec70 100644
--- a/hyperdbg/libhyperdbg/header/debugger.h
+++ b/hyperdbg/libhyperdbg/header/debugger.h
@@ -196,7 +196,7 @@ DWORD WINAPI
ListeningSerialPauseDebuggerThread(PVOID Param);
VOID
-LogopenSaveToFile(const char * Text);
+LogopenSaveToFile(const CHAR * Text);
BOOL
BreakController(DWORD CtrlType);
@@ -235,13 +235,13 @@ BOOLEAN
CommandBpRequest(UINT64 Address, UINT32 Pid, UINT32 Tid, UINT32 CoreNumer);
VOID
-CommandTrackHandleReceivedInstructions(unsigned char * BufferToDisassemble,
- UINT32 BuffLength,
- BOOLEAN Isx86_64,
- UINT64 RipAddress);
+CommandTrackHandleReceivedInstructions(UCHAR * BufferToDisassemble,
+ UINT32 BuffLength,
+ BOOLEAN Isx86_64,
+ UINT64 RipAddress);
VOID
-CommandTrackHandleReceivedCallInstructions(const char * NameOfFunctionFromSymbols,
+CommandTrackHandleReceivedCallInstructions(const CHAR * NameOfFunctionFromSymbols,
UINT64 ComputedAbsoluteAddress);
VOID
diff --git a/hyperdbg/libhyperdbg/header/forwarding.h b/hyperdbg/libhyperdbg/header/forwarding.h
index 2f3b0a0e..467aafae 100644
--- a/hyperdbg/libhyperdbg/header/forwarding.h
+++ b/hyperdbg/libhyperdbg/header/forwarding.h
@@ -19,7 +19,7 @@
* @brief maximum characters for event forwarding source names
*
*/
-typedef void (*hyperdbg_event_forwarding_t)(const char *, unsigned int);
+typedef VOID (*hyperdbg_event_forwarding_t)(const CHAR *, UINT32);
//////////////////////////////////////////
// Output Source Forwarding //
diff --git a/hyperdbg/libhyperdbg/header/hwdbg-interpreter.h b/hyperdbg/libhyperdbg/header/hwdbg-interpreter.h
index 3275e176..fc823d56 100644
--- a/hyperdbg/libhyperdbg/header/hwdbg-interpreter.h
+++ b/hyperdbg/libhyperdbg/header/hwdbg-interpreter.h
@@ -26,13 +26,13 @@ HwdbgInterpreterFillFileFromMemory(
HWDBG_INSTANCE_INFORMATION * InstanceInfo,
const TCHAR * FileName,
UINT32 * MemoryBuffer,
- size_t BufferSize,
+ SIZE_T BufferSize,
HWDBG_ACTION_ENUMS RequestedAction);
BOOLEAN
HwdbgInterpreterFillMemoryFromFile(const TCHAR * FileName,
UINT32 * MemoryBuffer,
- size_t BufferSize);
+ SIZE_T BufferSize);
SIZE_T
HwdbgComputeNumberOfFlipFlopsNeeded(
@@ -48,7 +48,7 @@ HwdbgInterpreterSendPacketAndBufferToHwdbg(HWDBG_INSTANCE_INFORMATION * Instance
UINT32 BufferLength);
BOOLEAN
-HwdbgReadInstanceInfoFromFile(const TCHAR * FileName, UINT32 * MemoryBuffer, size_t BufferSize);
+HwdbgReadInstanceInfoFromFile(const TCHAR * FileName, UINT32 * MemoryBuffer, SIZE_T BufferSize);
BOOLEAN
HwdbgWriteTestInstanceInfoRequestIntoFile(HWDBG_INSTANCE_INFORMATION * InstanceInfo,
diff --git a/hyperdbg/libhyperdbg/header/kd.h b/hyperdbg/libhyperdbg/header/kd.h
index ca3586c6..da50ff2b 100644
--- a/hyperdbg/libhyperdbg/header/kd.h
+++ b/hyperdbg/libhyperdbg/header/kd.h
@@ -178,7 +178,7 @@ BOOLEAN
KdSendScriptPacketToDebuggee(UINT64 BufferAddress, UINT32 BufferLength, UINT32 Pointer, BOOLEAN IsFormat);
BOOLEAN
-KdSendUserInputPacketToDebuggee(const char * Sendbuf, int Len, BOOLEAN IgnoreBreakingAgain);
+KdSendUserInputPacketToDebuggee(const CHAR * Sendbuf, INT Len, BOOLEAN IgnoreBreakingAgain);
BOOLEAN
KdSendSearchRequestPacketToDebuggee(UINT64 * SearchRequestBuffer, UINT32 SearchRequestBufferSize);
diff --git a/hyperdbg/libhyperdbg/header/namedpipe.h b/hyperdbg/libhyperdbg/header/namedpipe.h
index 3438376d..5a15c31e 100644
--- a/hyperdbg/libhyperdbg/header/namedpipe.h
+++ b/hyperdbg/libhyperdbg/header/namedpipe.h
@@ -22,12 +22,12 @@ BOOLEAN
NamedPipeServerWaitForClientConntection(HANDLE PipeHandle);
UINT32
-NamedPipeServerReadClientMessage(HANDLE PipeHandle, char * BufferToSave, int MaximumReadBufferLength);
+NamedPipeServerReadClientMessage(HANDLE PipeHandle, CHAR * BufferToSave, INT MaximumReadBufferLength);
BOOLEAN
NamedPipeServerSendMessageToClient(HANDLE PipeHandle,
- char * BufferToSend,
- int BufferSize);
+ CHAR * BufferToSend,
+ INT BufferSize);
VOID
NamedPipeServerCloseHandle(HANDLE PipeHandle);
@@ -43,10 +43,10 @@ HANDLE
NamedPipeClientCreatePipeOverlappedIo(LPCSTR PipeName);
BOOLEAN
-NamedPipeClientSendMessage(HANDLE PipeHandle, char * BufferToSend, int BufferSize);
+NamedPipeClientSendMessage(HANDLE PipeHandle, CHAR * BufferToSend, INT BufferSize);
UINT32
-NamedPipeClientReadMessage(HANDLE PipeHandle, char * BufferToRead, int MaximumSizeOfBuffer);
+NamedPipeClientReadMessage(HANDLE PipeHandle, CHAR * BufferToRead, INT MaximumSizeOfBuffer);
VOID
NamedPipeClientClosePipe(HANDLE PipeHandle);
diff --git a/hyperdbg/libhyperdbg/header/pci-id.h b/hyperdbg/libhyperdbg/header/pci-id.h
index a33e0867..2ea4dabb 100644
--- a/hyperdbg/libhyperdbg/header/pci-id.h
+++ b/hyperdbg/libhyperdbg/header/pci-id.h
@@ -1,6 +1,6 @@
/**
* @file pci-id.h
- * @author Bjrn Ruytenberg (bjorn@bjornweb.nl)
+ * @author Bj�rn Ruytenberg (bjorn@bjornweb.nl)
* @brief PCI ID-related data structures
* @details
* @version 0.12
@@ -18,14 +18,14 @@ typedef struct SubDevice
{
UINT16 SubVendorId;
UINT16 SubDeviceId;
- char SubSystemName[PCI_NAME_STR_LENGTH];
+ CHAR SubSystemName[PCI_NAME_STR_LENGTH];
struct SubDevice * Next;
} SubDevice;
typedef struct Device
{
UINT16 DeviceId;
- char DeviceName[PCI_NAME_STR_LENGTH];
+ CHAR DeviceName[PCI_NAME_STR_LENGTH];
SubDevice * SubDevices;
struct Device * Next;
} Device;
@@ -33,7 +33,7 @@ typedef struct Device
typedef struct Vendor
{
UINT16 VendorId;
- char VendorName[PCI_NAME_STR_LENGTH];
+ CHAR VendorName[PCI_NAME_STR_LENGTH];
Device * Devices;
} Vendor;
diff --git a/hyperdbg/libhyperdbg/header/script-engine.h b/hyperdbg/libhyperdbg/header/script-engine.h
index 48341994..ccf1ff11 100644
--- a/hyperdbg/libhyperdbg/header/script-engine.h
+++ b/hyperdbg/libhyperdbg/header/script-engine.h
@@ -15,10 +15,10 @@
// Pdb Parser Wrapper (from script-engine) //
//////////////////////////////////////////////////
UINT64
-ScriptEngineConvertNameToAddressWrapper(const char * FunctionOrVariableName, PBOOLEAN WasFound);
+ScriptEngineConvertNameToAddressWrapper(const CHAR * FunctionOrVariableName, PBOOLEAN WasFound);
UINT32
-ScriptEngineLoadFileSymbolWrapper(UINT64 BaseAddress, const char * PdbFileName, const char * CustomModuleName);
+ScriptEngineLoadFileSymbolWrapper(UINT64 BaseAddress, const CHAR * PdbFileName, const CHAR * CustomModuleName);
VOID
ScriptEngineSetTextMessageCallbackWrapper(PVOID Handler);
@@ -27,10 +27,10 @@ UINT32
ScriptEngineUnloadAllSymbolsWrapper();
UINT32
-ScriptEngineUnloadModuleSymbolWrapper(char * ModuleName);
+ScriptEngineUnloadModuleSymbolWrapper(CHAR * ModuleName);
UINT32
-ScriptEngineSearchSymbolForMaskWrapper(const char * SearchMask);
+ScriptEngineSearchSymbolForMaskWrapper(const CHAR * SearchMask);
BOOLEAN
ScriptEngineGetFieldOffsetWrapper(CHAR * TypeName, CHAR * FieldName, UINT32 * FieldOffset);
@@ -39,31 +39,31 @@ BOOLEAN
ScriptEngineGetDataTypeSizeWrapper(CHAR * TypeName, UINT64 * TypeSize);
BOOLEAN
-ScriptEngineCreateSymbolTableForDisassemblerWrapper(void * CallbackFunction);
+ScriptEngineCreateSymbolTableForDisassemblerWrapper(VOID * CallbackFunction);
BOOLEAN
-ScriptEngineConvertFileToPdbPathWrapper(const char * LocalFilePath, char * ResultPath, size_t ResultPathSize);
+ScriptEngineConvertFileToPdbPathWrapper(const CHAR * LocalFilePath, CHAR * ResultPath, SIZE_T ResultPathSize);
BOOLEAN
-ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetailsWrapper(const char * LocalFilePath,
- char * PdbFilePath,
- char * GuidAndAgeDetails,
+ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetailsWrapper(const CHAR * LocalFilePath,
+ CHAR * PdbFilePath,
+ CHAR * GuidAndAgeDetails,
BOOLEAN Is32BitModule);
BOOLEAN
ScriptEngineSymbolInitLoadWrapper(PMODULE_SYMBOL_DETAIL BufferToStoreDetails,
UINT32 StoredLength,
BOOLEAN DownloadIfAvailable,
- const char * SymbolPath,
+ const CHAR * SymbolPath,
BOOLEAN IsSilentLoad);
BOOLEAN
ScriptEngineShowDataBasedOnSymbolTypesWrapper(
- const char * TypeName,
+ const CHAR * TypeName,
UINT64 Address,
BOOLEAN IsStruct,
PVOID BufferAddress,
- const char * AdditionalParameters);
+ const CHAR * AdditionalParameters);
VOID
ScriptEngineSymbolAbortLoadingWrapper();
@@ -82,7 +82,7 @@ BOOLEAN
ScriptAutomaticStatementsTestWrapper(const string & Expr, UINT64 ExpectationValue, BOOLEAN ExceptError);
PVOID
-ScriptEngineParseWrapper(char * Expr, BOOLEAN ShowErrorMessageIfAny);
+ScriptEngineParseWrapper(CHAR * Expr, BOOLEAN ShowErrorMessageIfAny);
VOID
PrintSymbolBufferWrapper(PVOID SymbolBuffer);
From ef2a482c45b4db024f53f14ef59f91e71d328065 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 31 May 2026 18:59:52 +0200
Subject: [PATCH 204/323] refactor doxygen, variables, function names 6
---
.../debugger/commands/BreakpointCommands.c | 6 ++--
.../code/debugger/commands/Callstack.c | 2 +-
.../code/debugger/commands/DebuggerCommands.c | 24 ++++++++--------
.../debugger/communication/SerialConnection.c | 14 +++++-----
.../hyperkd/code/debugger/core/Debugger.c | 14 +++++-----
.../hyperkd/code/debugger/core/HaltedCore.c | 2 +-
.../code/debugger/events/ApplyEvents.c | 2 +-
.../hyperkd/code/debugger/kernel-level/Kd.c | 28 +++++++++----------
.../code/debugger/user-level/Attaching.c | 2 +-
.../code/debugger/user-level/ThreadHolder.c | 24 ++++++++--------
.../hyperkd/code/debugger/user-level/Ud.c | 2 +-
.../code/debugger/user-level/UserAccess.c | 2 +-
hyperdbg/hyperkd/header/assembly/Assembly.h | 23 +++++++++------
hyperdbg/hyperkd/header/debugger/core/State.h | 2 +-
.../header/debugger/user-level/UserAccess.h | 2 +-
15 files changed, 77 insertions(+), 72 deletions(-)
diff --git a/hyperdbg/hyperkd/code/debugger/commands/BreakpointCommands.c b/hyperdbg/hyperkd/code/debugger/commands/BreakpointCommands.c
index 2f98ab51..de588723 100644
--- a/hyperdbg/hyperkd/code/debugger/commands/BreakpointCommands.c
+++ b/hyperdbg/hyperkd/code/debugger/commands/BreakpointCommands.c
@@ -50,7 +50,7 @@ BreakpointCheckAndPerformActionsOnTrapFlags(UINT32 ProcessId, UINT32 ThreadId, B
Result = BinarySearchPerformSearchItem((UINT64 *)&g_TrapFlagState.ThreadInformation[0],
g_TrapFlagState.NumberOfItems,
&Index,
- ProcThrdInfo.asUInt);
+ ProcThrdInfo.AsUInt);
//
// Indicate whether the trap flag is set by the debugger or not
@@ -195,7 +195,7 @@ BreakpointRestoreTheTrapFlagOnceTriggered(UINT32 ProcessId, UINT32 ThreadId)
Result = BinarySearchPerformSearchItem((UINT64 *)&g_TrapFlagState.ThreadInformation[0],
g_TrapFlagState.NumberOfItems,
&Index,
- ProcThrdInfo.asUInt);
+ ProcThrdInfo.AsUInt);
if (Result)
{
@@ -215,7 +215,7 @@ BreakpointRestoreTheTrapFlagOnceTriggered(UINT32 ProcessId, UINT32 ThreadId)
&g_TrapFlagState.NumberOfItems,
MAXIMUM_NUMBER_OF_THREAD_INFORMATION_FOR_TRAPS,
&Index, // not used
- ProcThrdInfo.asUInt);
+ ProcThrdInfo.AsUInt);
goto Return;
}
diff --git a/hyperdbg/hyperkd/code/debugger/commands/Callstack.c b/hyperdbg/hyperkd/code/debugger/commands/Callstack.c
index 14555c2e..6587d5b5 100644
--- a/hyperdbg/hyperkd/code/debugger/commands/Callstack.c
+++ b/hyperdbg/hyperkd/code/debugger/commands/Callstack.c
@@ -59,7 +59,7 @@ CallstackWalkthroughStack(PDEBUGGER_SINGLE_CALLSTACK_FRAME AddressToSaveFrames,
//
// Walkthrough the stack
//
- for (size_t i = 0; i < FrameIndex; i++)
+ for (SIZE_T i = 0; i < FrameIndex; i++)
{
//
// Compute the current stack position address
diff --git a/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c b/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c
index 5bb0a26f..940d0946 100644
--- a/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c
+++ b/hyperdbg/hyperkd/code/debugger/commands/DebuggerCommands.c
@@ -30,7 +30,7 @@ DebuggerCommandReadRegisters(GUEST_REGS * Regs,
//
// Add General purpose registers
//
- memcpy((void *)((CHAR *)ReadRegisterRequest + sizeof(DEBUGGEE_REGISTER_READ_DESCRIPTION)),
+ memcpy((PVOID)((CHAR *)ReadRegisterRequest + sizeof(DEBUGGEE_REGISTER_READ_DESCRIPTION)),
Regs,
sizeof(GUEST_REGS));
@@ -49,7 +49,7 @@ DebuggerCommandReadRegisters(GUEST_REGS * Regs,
//
// copy at the end of ReadRegisterRequest structure
//
- memcpy((void *)((CHAR *)ReadRegisterRequest + sizeof(DEBUGGEE_REGISTER_READ_DESCRIPTION) + sizeof(GUEST_REGS)),
+ memcpy((PVOID)((CHAR *)ReadRegisterRequest + sizeof(DEBUGGEE_REGISTER_READ_DESCRIPTION) + sizeof(GUEST_REGS)),
&ERegs,
sizeof(GUEST_EXTRA_REGISTERS));
}
@@ -357,7 +357,7 @@ DebuggerReadOrWriteMsr(PDEBUGGER_READ_AND_WRITE_ON_MSR ReadOrWriteMsrRequest, UI
//
// Means that we should apply it on all cores
//
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
g_DbgState[i].MsrState.Msr = ReadOrWriteMsrRequest->Msr;
g_DbgState[i].MsrState.Value = ReadOrWriteMsrRequest->Value;
@@ -411,7 +411,7 @@ DebuggerReadOrWriteMsr(PDEBUGGER_READ_AND_WRITE_ON_MSR ReadOrWriteMsrRequest, UI
//
// Means that we should apply it on all cores
//
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
g_DbgState[i].MsrState.Msr = ReadOrWriteMsrRequest->Msr;
}
@@ -425,7 +425,7 @@ DebuggerReadOrWriteMsr(PDEBUGGER_READ_AND_WRITE_ON_MSR ReadOrWriteMsrRequest, UI
// When we reach here, all processors read their shits
// so we have to fill that fucking buffer for user mode
//
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
UserBuffer[i] = g_DbgState[i].MsrState.Value;
}
@@ -542,7 +542,7 @@ DebuggerCommandEditMemory(PDEBUGGER_EDIT_MEMORY EditMemRequest)
//
// Edit the memory
//
- for (size_t i = 0; i < EditMemRequest->CountOf64Chunks; i++)
+ for (SIZE_T i = 0; i < EditMemRequest->CountOf64Chunks; i++)
{
DestinationAddress = (PVOID)((UINT64)EditMemRequest->Address + (i * LengthOfEachChunk));
SourceAddress = (PVOID)((UINT64)EditMemRequest + SIZEOF_DEBUGGER_EDIT_MEMORY + (i * sizeof(UINT64)));
@@ -570,7 +570,7 @@ DebuggerCommandEditMemory(PDEBUGGER_EDIT_MEMORY EditMemRequest)
//
// Edit the physical memory
//
- for (size_t i = 0; i < EditMemRequest->CountOf64Chunks; i++)
+ for (SIZE_T i = 0; i < EditMemRequest->CountOf64Chunks; i++)
{
DestinationAddress = (PVOID)((UINT64)EditMemRequest->Address + (i * LengthOfEachChunk));
SourceAddress = (PVOID)((UINT64)EditMemRequest + SIZEOF_DEBUGGER_EDIT_MEMORY + (i * sizeof(UINT64)));
@@ -659,7 +659,7 @@ DebuggerCommandEditMemoryVmxRoot(PDEBUGGER_EDIT_MEMORY EditMemRequest)
//
// Edit the memory
//
- for (size_t i = 0; i < EditMemRequest->CountOf64Chunks; i++)
+ for (SIZE_T i = 0; i < EditMemRequest->CountOf64Chunks; i++)
{
DestinationAddress = (PVOID)((UINT64)EditMemRequest->Address + (i * LengthOfEachChunk));
SourceAddress = (PVOID)((UINT64)EditMemRequest + SIZEOF_DEBUGGER_EDIT_MEMORY + (i * sizeof(UINT64)));
@@ -687,7 +687,7 @@ DebuggerCommandEditMemoryVmxRoot(PDEBUGGER_EDIT_MEMORY EditMemRequest)
//
// Edit the physical memory
//
- for (size_t i = 0; i < EditMemRequest->CountOf64Chunks; i++)
+ for (SIZE_T i = 0; i < EditMemRequest->CountOf64Chunks; i++)
{
DestinationAddress = (PVOID)((UINT64)EditMemRequest->Address + (i * LengthOfEachChunk));
SourceAddress = (PVOID)((UINT64)EditMemRequest + SIZEOF_DEBUGGER_EDIT_MEMORY + (i * sizeof(UINT64)));
@@ -805,7 +805,7 @@ PerformSearchAddress(UINT64 * AddressToSaveResults,
//
SourceAddress = (PVOID)((UINT64)SearchMemRequest + SIZEOF_DEBUGGER_SEARCH_MEMORY);
- for (size_t BaseIterator = (size_t)StartAddress; BaseIterator < ((UINT64)EndAddress); BaseIterator += LengthOfEachChunk)
+ for (SIZE_T BaseIterator = (SIZE_T)StartAddress; BaseIterator < ((UINT64)EndAddress); BaseIterator += LengthOfEachChunk)
{
//
// *** Search the memory ***
@@ -844,7 +844,7 @@ PerformSearchAddress(UINT64 * AddressToSaveResults,
// Try to check each element (we don't start from the very first element as
// it checked before )
//
- for (size_t i = LengthOfEachChunk; i < SearchMemRequest->CountOf64Chunks; i++)
+ for (SIZE_T i = LengthOfEachChunk; i < SearchMemRequest->CountOf64Chunks; i++)
{
//
// I know, we have a double check here ;)
@@ -1252,7 +1252,7 @@ DebuggerCommandSearchMemory(PDEBUGGER_SEARCH_MEMORY SearchMemRequest)
// that we used aligned page addresses so the results should be checked to
// see whether the results are between the user's entered addresses or not
//
- for (size_t i = 0; i < MaximumSearchResults; i++)
+ for (SIZE_T i = 0; i < MaximumSearchResults; i++)
{
CurrentValue = SearchResultsStorage[i];
diff --git a/hyperdbg/hyperkd/code/debugger/communication/SerialConnection.c b/hyperdbg/hyperkd/code/debugger/communication/SerialConnection.c
index 33adbafe..f7c55d7a 100644
--- a/hyperdbg/hyperkd/code/debugger/communication/SerialConnection.c
+++ b/hyperdbg/hyperkd/code/debugger/communication/SerialConnection.c
@@ -19,7 +19,7 @@
VOID
SerialConnectionTest()
{
- for (size_t i = 0; i < 100; i++)
+ for (SIZE_T i = 0; i < 100; i++)
{
KdHyperDbgTest((UINT16)i);
}
@@ -166,7 +166,7 @@ SerialConnectionSend(CHAR * Buffer, UINT32 Length)
return FALSE;
}
- for (size_t i = 0; i < Length; i++)
+ for (SIZE_T i = 0; i < Length; i++)
{
KdHyperDbgSendByte(Buffer[i], TRUE);
}
@@ -206,7 +206,7 @@ SerialConnectionSendTwoBuffers(CHAR * Buffer1, UINT32 Length1, CHAR * Buffer2, U
//
// Send first buffer
//
- for (size_t i = 0; i < Length1; i++)
+ for (SIZE_T i = 0; i < Length1; i++)
{
KdHyperDbgSendByte(Buffer1[i], TRUE);
}
@@ -214,7 +214,7 @@ SerialConnectionSendTwoBuffers(CHAR * Buffer1, UINT32 Length1, CHAR * Buffer2, U
//
// Send second buffer
//
- for (size_t i = 0; i < Length2; i++)
+ for (SIZE_T i = 0; i < Length2; i++)
{
KdHyperDbgSendByte(Buffer2[i], TRUE);
}
@@ -261,7 +261,7 @@ SerialConnectionSendThreeBuffers(CHAR * Buffer1,
//
// Send first buffer
//
- for (size_t i = 0; i < Length1; i++)
+ for (SIZE_T i = 0; i < Length1; i++)
{
KdHyperDbgSendByte(Buffer1[i], TRUE);
}
@@ -269,7 +269,7 @@ SerialConnectionSendThreeBuffers(CHAR * Buffer1,
//
// Send second buffer
//
- for (size_t i = 0; i < Length2; i++)
+ for (SIZE_T i = 0; i < Length2; i++)
{
KdHyperDbgSendByte(Buffer2[i], TRUE);
}
@@ -277,7 +277,7 @@ SerialConnectionSendThreeBuffers(CHAR * Buffer1,
//
// Send third buffer
//
- for (size_t i = 0; i < Length3; i++)
+ for (SIZE_T i = 0; i < Length3; i++)
{
KdHyperDbgSendByte(Buffer3[i], TRUE);
}
diff --git a/hyperdbg/hyperkd/code/debugger/core/Debugger.c b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
index e4cbbcd4..ac9b3d0b 100644
--- a/hyperdbg/hyperkd/code/debugger/core/Debugger.c
+++ b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
@@ -157,7 +157,7 @@ DebuggerInitialize()
//
// Initialize the local and temp variables
//
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
CurrentDebuggerState = &g_DbgState[i];
@@ -996,7 +996,7 @@ DebuggerAddActionToEvent(PDEBUGGER_EVENT Event,
//
// Copy the memory of script to our non-paged pool
//
- RtlCopyMemory((void *)Action->ScriptConfiguration.ScriptBuffer, (const void *)InTheCaseOfRunScript->ScriptBuffer, InTheCaseOfRunScript->ScriptLength);
+ RtlCopyMemory((PVOID)Action->ScriptConfiguration.ScriptBuffer, (const PVOID)InTheCaseOfRunScript->ScriptBuffer, InTheCaseOfRunScript->ScriptLength);
//
// Set other fields
@@ -1819,7 +1819,7 @@ DebuggerGetEventByTag(UINT64 Tag)
//
// We have to iterate through all events
//
- for (size_t i = 0; i < sizeof(DEBUGGER_CORE_EVENTS) / sizeof(LIST_ENTRY); i++)
+ for (SIZE_T i = 0; i < sizeof(DEBUGGER_CORE_EVENTS) / sizeof(LIST_ENTRY); i++)
{
TempList = (PLIST_ENTRY)((UINT64)(g_Events) + (i * sizeof(LIST_ENTRY)));
TempList2 = TempList;
@@ -1863,7 +1863,7 @@ DebuggerEnableOrDisableAllEvents(BOOLEAN IsEnable)
//
// We have to iterate through all events
//
- for (size_t i = 0; i < sizeof(DEBUGGER_CORE_EVENTS) / sizeof(LIST_ENTRY); i++)
+ for (SIZE_T i = 0; i < sizeof(DEBUGGER_CORE_EVENTS) / sizeof(LIST_ENTRY); i++)
{
TempList = (PLIST_ENTRY)((UINT64)(g_Events) + (i * sizeof(LIST_ENTRY)));
TempList2 = TempList;
@@ -1920,7 +1920,7 @@ DebuggerTerminateAllEvents(BOOLEAN InputFromVmxRoot)
//
// We have to iterate through all events
//
- for (size_t i = 0; i < sizeof(DEBUGGER_CORE_EVENTS) / sizeof(LIST_ENTRY); i++)
+ for (SIZE_T i = 0; i < sizeof(DEBUGGER_CORE_EVENTS) / sizeof(LIST_ENTRY); i++)
{
TempList = (PLIST_ENTRY)((UINT64)(g_Events) + (i * sizeof(LIST_ENTRY)));
TempList2 = TempList;
@@ -1972,7 +1972,7 @@ DebuggerRemoveAllEvents(BOOLEAN PoolManagerAllocatedMemory)
//
// We have to iterate through all events
//
- for (size_t i = 0; i < sizeof(DEBUGGER_CORE_EVENTS) / sizeof(LIST_ENTRY); i++)
+ for (SIZE_T i = 0; i < sizeof(DEBUGGER_CORE_EVENTS) / sizeof(LIST_ENTRY); i++)
{
TempList = (PLIST_ENTRY)((UINT64)(g_Events) + (i * sizeof(LIST_ENTRY)));
TempList2 = TempList;
@@ -2486,7 +2486,7 @@ DebuggerRemoveEventFromEventList(UINT64 Tag)
//
// We have to iterate through all events
//
- for (size_t i = 0; i < sizeof(DEBUGGER_CORE_EVENTS) / sizeof(LIST_ENTRY); i++)
+ for (SIZE_T i = 0; i < sizeof(DEBUGGER_CORE_EVENTS) / sizeof(LIST_ENTRY); i++)
{
TempList = (PLIST_ENTRY)((UINT64)(g_Events) + (i * sizeof(LIST_ENTRY)));
TempList2 = TempList;
diff --git a/hyperdbg/hyperkd/code/debugger/core/HaltedCore.c b/hyperdbg/hyperkd/code/debugger/core/HaltedCore.c
index 2b0696d7..8cae1122 100644
--- a/hyperdbg/hyperkd/code/debugger/core/HaltedCore.c
+++ b/hyperdbg/hyperkd/code/debugger/core/HaltedCore.c
@@ -443,7 +443,7 @@ HaltedCoreBroadcastTaskAllCores(PROCESSOR_DEBUGGING_STATE * DbgState,
//
if (Synchronize)
{
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
if (DbgState->CoreId != i)
{
diff --git a/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c b/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c
index 07fca9d7..1fea130a 100644
--- a/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c
+++ b/hyperdbg/hyperkd/code/debugger/events/ApplyEvents.c
@@ -134,7 +134,7 @@ ApplyEventMonitorEvent(PDEBUGGER_EVENT Event,
// LogInfo("Start address: %llx, end address: %llx", TempStartAddress, TempEndAddress, RemainingSize);
- for (size_t i = 0; i <= PagesBytes; i++)
+ for (SIZE_T i = 0; i <= PagesBytes; i++)
{
if (RemainingSize >= PAGE_SIZE)
{
diff --git a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
index 1d51fb32..1e77d6c9 100644
--- a/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
+++ b/hyperdbg/hyperkd/code/debugger/kernel-level/Kd.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Kd.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @author Alee Amini (alee@hyperdbg.org)
@@ -24,7 +24,7 @@ KdInitializeKernelDebugger()
//
// Allocate DPC routine
//
- // for (size_t i = 0; i < CoreCount; i++)
+ // for (SIZE_T i = 0; i < CoreCount; i++)
// {
// g_DbgState[i].KdDpcObject = PlatformMemAllocateNonPagedPool(sizeof(KDPC));
//
@@ -443,7 +443,7 @@ KdRegularStepOver(UINT64 LastRip, BOOLEAN IsNextInstructionACall, UINT32 CallLen
//
// Add hardware debug breakpoints on all core on vm-entry
//
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
g_DbgState[i].HardwareDebugRegisterForStepping = NextAddressForHardwareDebugBp;
}
@@ -643,7 +643,7 @@ KdContinueDebuggee(PROCESSOR_DEBUGGING_STATE * DbgState,
// Unlock all the cores
//
ULONG ProcessorsCount = KeQueryActiveProcessorCount(0);
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
SpinlockUnlock(&g_DbgState[i].Lock);
}
@@ -930,14 +930,14 @@ KdHandleHaltsWhenNmiReceivedFromVmxRoot(PROCESSOR_DEBUGGING_STATE * DbgState)
* @brief Tries to get the lock and won't return until successfully get the lock
*
* @param DbgState The state of the debugger on the current core
- * @param LONG Lock variable
+ * @param Lock The lock variable
*
* @return VOID
*/
VOID
KdCustomDebuggerBreakSpinlockLock(PROCESSOR_DEBUGGING_STATE * DbgState, volatile LONG * Lock)
{
- unsigned wait = 1;
+ UINT32 Wait = 1;
//
// *** Lock handling breaks ***
@@ -945,7 +945,7 @@ KdCustomDebuggerBreakSpinlockLock(PROCESSOR_DEBUGGING_STATE * DbgState, volatile
while (!SpinlockTryLock(Lock))
{
- for (unsigned i = 0; i < wait; ++i)
+ for (UINT32 i = 0; i < Wait; ++i)
{
CpuPause();
}
@@ -984,13 +984,13 @@ KdCustomDebuggerBreakSpinlockLock(PROCESSOR_DEBUGGING_STATE * DbgState, volatile
// clamp it to the MaxWait.
//
- if (wait * 2 > 65536)
+ if (Wait * 2 > 65536)
{
- wait = 65536;
+ Wait = 65536;
}
else
{
- wait = wait * 2;
+ Wait = Wait * 2;
}
}
}
@@ -1560,7 +1560,7 @@ KdQueryRflagTrapState()
g_TrapFlagState.NumberOfItems,
g_TrapFlagState.NumberOfItems);
- for (size_t i = 0; i < MAXIMUM_NUMBER_OF_THREAD_INFORMATION_FOR_TRAPS; i++)
+ for (SIZE_T i = 0; i < MAXIMUM_NUMBER_OF_THREAD_INFORMATION_FOR_TRAPS; i++)
{
LogInfo("g_TrapFlagState.ThreadInformation[%d].ProcessId = %x | ThreadId = %x",
i,
@@ -1584,7 +1584,7 @@ KdCheckAllCoresAreLocked()
//
// Query core debugging Lock info
//
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
if (!SpinlockCheckLock(&g_DbgState[i].Lock))
{
@@ -1647,7 +1647,7 @@ KdQuerySystemState()
//
Log("================================================ Debugging Lock Info ================================================\n");
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
if (SpinlockCheckLock(&g_DbgState[i].Lock))
{
@@ -1665,7 +1665,7 @@ KdQuerySystemState()
//
Log("\n================================================ NMI Receiver State =======+=========================================\n");
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
if (g_DbgState[i].NmiState.NmiCalledInVmxRootRelatedToHaltDebuggee)
{
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c b/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c
index 1cfddafe..7b83da01 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Attaching.c
@@ -579,7 +579,7 @@ AttachingAdjustNopSledBuffer(UINT64 ReservedBuffAddress, UINT32 ProcessId)
//
// Fill the memory with nops
//
- memset((void *)ReservedBuffAddress, 0x90, PAGE_SIZE);
+ memset((PVOID)ReservedBuffAddress, 0x90, PAGE_SIZE);
//
// Set jmps to form a loop (little endians)
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/ThreadHolder.c b/hyperdbg/hyperkd/code/debugger/user-level/ThreadHolder.c
index 63314ad5..0d37c3b6 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/ThreadHolder.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/ThreadHolder.c
@@ -86,7 +86,7 @@ ThreadHolderIsAnyPausedThreadInProcess(PUSERMODE_DEBUGGING_PROCESS_DETAILS Proce
PUSERMODE_DEBUGGING_THREAD_HOLDER ThreadHolder =
CONTAINING_RECORD(TempList, USERMODE_DEBUGGING_THREAD_HOLDER, ThreadHolderList);
- for (size_t i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
+ for (SIZE_T i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
{
if (ThreadHolder->Threads[i].ThreadId != NULL_ZERO && ThreadHolder->Threads[i].IsPaused)
{
@@ -118,7 +118,7 @@ ThreadHolderUnpauseAllThreadsInProcess(PUSERMODE_DEBUGGING_PROCESS_DETAILS Proce
PUSERMODE_DEBUGGING_THREAD_HOLDER ThreadHolder =
CONTAINING_RECORD(TempList, USERMODE_DEBUGGING_THREAD_HOLDER, ThreadHolderList);
- for (size_t i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
+ for (SIZE_T i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
{
if (ThreadHolder->Threads[i].ThreadId != NULL_ZERO && ThreadHolder->Threads[i].IsPaused)
{
@@ -165,7 +165,7 @@ ThreadHolderGetProcessThreadDetailsByProcessIdAndThreadId(UINT32 ProcessId, UINT
PUSERMODE_DEBUGGING_THREAD_HOLDER ThreadHolder =
CONTAINING_RECORD(TempList, USERMODE_DEBUGGING_THREAD_HOLDER, ThreadHolderList);
- for (size_t i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
+ for (SIZE_T i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
{
if (ThreadHolder->Threads[i].ThreadId == ThreadId)
{
@@ -213,7 +213,7 @@ ThreadHolderGetProcessFirstThreadDetailsByProcessId(UINT32 ProcessId)
PUSERMODE_DEBUGGING_THREAD_HOLDER ThreadHolder =
CONTAINING_RECORD(TempList, USERMODE_DEBUGGING_THREAD_HOLDER, ThreadHolderList);
- for (size_t i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
+ for (SIZE_T i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
{
if (ThreadHolder->Threads[i].ThreadId != NULL_ZERO)
{
@@ -262,7 +262,7 @@ ThreadHolderGetProcessDebuggingDetailsByThreadId(UINT32 ThreadId)
PUSERMODE_DEBUGGING_THREAD_HOLDER ThreadHolder =
CONTAINING_RECORD(TempList2, USERMODE_DEBUGGING_THREAD_HOLDER, ThreadHolderList);
- for (size_t i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
+ for (SIZE_T i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
{
if (ThreadHolder->Threads[i].ThreadId == ThreadId)
{
@@ -305,7 +305,7 @@ ThreadHolderFindOrCreateThreadDebuggingDetail(UINT32 ThreadId, PUSERMODE_DEBUGGI
PUSERMODE_DEBUGGING_THREAD_HOLDER ThreadHolder =
CONTAINING_RECORD(TempList, USERMODE_DEBUGGING_THREAD_HOLDER, ThreadHolderList);
- for (size_t i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
+ for (SIZE_T i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
{
if (ThreadHolder->Threads[i].ThreadId == ThreadId)
{
@@ -337,7 +337,7 @@ ThreadHolderFindOrCreateThreadDebuggingDetail(UINT32 ThreadId, PUSERMODE_DEBUGGI
PUSERMODE_DEBUGGING_THREAD_HOLDER ThreadHolder =
CONTAINING_RECORD(TempList, USERMODE_DEBUGGING_THREAD_HOLDER, ThreadHolderList);
- for (size_t i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
+ for (SIZE_T i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
{
if (ThreadHolder->Threads[i].ThreadId == NULL_ZERO)
{
@@ -415,7 +415,7 @@ ThreadHolderApplyActionToPausedThreads(PUSERMODE_DEBUGGING_PROCESS_DETAILS Proce
//
// Apply the command
//
- for (size_t i = 0; i < MAX_USER_ACTIONS_FOR_THREADS; i++)
+ for (SIZE_T i = 0; i < MAX_USER_ACTIONS_FOR_THREADS; i++)
{
if (ThreadDebuggingDetails->UdAction[i].ActionType == DEBUGGER_UD_COMMAND_ACTION_TYPE_NONE)
{
@@ -454,12 +454,12 @@ ThreadHolderApplyActionToPausedThreads(PUSERMODE_DEBUGGING_PROCESS_DETAILS Proce
PUSERMODE_DEBUGGING_THREAD_HOLDER ThreadHolder =
CONTAINING_RECORD(TempList, USERMODE_DEBUGGING_THREAD_HOLDER, ThreadHolderList);
- for (size_t i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
+ for (SIZE_T i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
{
if (ThreadHolder->Threads[i].ThreadId != NULL_ZERO &&
ThreadHolder->Threads[i].IsPaused)
{
- for (size_t j = 0; j < MAX_USER_ACTIONS_FOR_THREADS; j++)
+ for (SIZE_T j = 0; j < MAX_USER_ACTIONS_FOR_THREADS; j++)
{
if (ThreadHolder->Threads[i].UdAction[j].ActionType == DEBUGGER_UD_COMMAND_ACTION_TYPE_NONE)
{
@@ -554,7 +554,7 @@ ThreadHolderQueryCountOfActiveDebuggingThreadsAndProcesses()
PUSERMODE_DEBUGGING_THREAD_HOLDER ThreadHolder =
CONTAINING_RECORD(TempList2, USERMODE_DEBUGGING_THREAD_HOLDER, ThreadHolderList);
- for (size_t i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
+ for (SIZE_T i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
{
if (ThreadHolder->Threads[i].IsPaused)
{
@@ -631,7 +631,7 @@ ThreadHolderQueryDetailsOfActiveDebuggingThreadsAndProcesses(
PUSERMODE_DEBUGGING_THREAD_HOLDER ThreadHolder =
CONTAINING_RECORD(TempList2, USERMODE_DEBUGGING_THREAD_HOLDER, ThreadHolderList);
- for (size_t i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
+ for (SIZE_T i = 0; i < MAX_THREADS_IN_A_PROCESS_HOLDER; i++)
{
if (ThreadHolder->Threads[i].IsPaused)
{
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
index a58a9866..3d0a7e84 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/Ud.c
@@ -582,7 +582,7 @@ UdCheckForCommand(PROCESSOR_DEBUGGING_STATE * DbgState,
// Here, we're sure that this thread is looking for command, let
// see if we find anything
//
- for (size_t i = 0; i < MAX_USER_ACTIONS_FOR_THREADS; i++)
+ for (SIZE_T i = 0; i < MAX_USER_ACTIONS_FOR_THREADS; i++)
{
if (ThreadDebuggingDetails->UdAction[i].ActionType != DEBUGGER_UD_COMMAND_ACTION_TYPE_NONE)
{
diff --git a/hyperdbg/hyperkd/code/debugger/user-level/UserAccess.c b/hyperdbg/hyperkd/code/debugger/user-level/UserAccess.c
index 6af637b0..ea97ce52 100644
--- a/hyperdbg/hyperkd/code/debugger/user-level/UserAccess.c
+++ b/hyperdbg/hyperkd/code/debugger/user-level/UserAccess.c
@@ -606,7 +606,7 @@ UserAccessPrintLoadedModulesX86(PEPROCESS Proc,
}
TempSize = TempSize * 2;
- memcpy(&ModulesList[CurrentSavedModules].FilePath, (const void *)Entry->FullDllName.Buffer, TempSize);
+ memcpy(&ModulesList[CurrentSavedModules].FilePath, (const PVOID)Entry->FullDllName.Buffer, TempSize);
CurrentSavedModules++;
}
diff --git a/hyperdbg/hyperkd/header/assembly/Assembly.h b/hyperdbg/hyperkd/header/assembly/Assembly.h
index 45f19848..f68e409e 100644
--- a/hyperdbg/hyperkd/header/assembly/Assembly.h
+++ b/hyperdbg/hyperkd/header/assembly/Assembly.h
@@ -19,9 +19,14 @@
/**
* @brief Tests with test tags wrapper
*
+ * @param Param1
+ * @param Param2
+ * @param Param3
+ * @param Param4
+ * @return UINT64
*/
-extern unsigned long long
-AsmTestWrapperWithTestTags(unsigned long long Param1, unsigned long long Param2, unsigned long long Param3, unsigned long long Param4);
+extern UINT64
+AsmTestWrapperWithTestTags(UINT64 Param1, UINT64 Param2, UINT64 Param3, UINT64 Param4);
//
// ==================== Kernel Test Functions ====================
@@ -35,10 +40,10 @@ AsmTestWrapperWithTestTags(unsigned long long Param1, unsigned long long Param2,
* @param Param2
* @param Param3
* @param Param4
- * @return unsigned long long
+ * @return VOID
*/
-extern void
-AsmDebuggerCustomCodeHandler(unsigned long long Param1, unsigned long long Param2, unsigned long long Param3, unsigned long long Param4);
+extern VOID
+AsmDebuggerCustomCodeHandler(UINT64 Param1, UINT64 Param2, UINT64 Param3, UINT64 Param4);
/**
* @brief default condition code handler
@@ -46,14 +51,14 @@ AsmDebuggerCustomCodeHandler(unsigned long long Param1, unsigned long long Param
* @param Param1
* @param Param2
* @param Param3
- * @return unsigned long long
+ * @return UINT64
*/
-extern unsigned long long
-AsmDebuggerConditionCodeHandler(unsigned long long Param1, unsigned long long Param2, unsigned long long Param3);
+extern UINT64
+AsmDebuggerConditionCodeHandler(UINT64 Param1, UINT64 Param2, UINT64 Param3);
/**
* @brief Spin on thread
*
*/
-extern void
+extern VOID
AsmDebuggerSpinOnThread();
diff --git a/hyperdbg/hyperkd/header/debugger/core/State.h b/hyperdbg/hyperkd/header/debugger/core/State.h
index 6cfa919a..7a41c1a0 100644
--- a/hyperdbg/hyperkd/header/debugger/core/State.h
+++ b/hyperdbg/hyperkd/header/debugger/core/State.h
@@ -105,7 +105,7 @@ typedef struct _DEBUGGER_PROCESS_THREAD_INFORMATION
{
union
{
- UINT64 asUInt;
+ UINT64 AsUInt;
struct
{
diff --git a/hyperdbg/hyperkd/header/debugger/user-level/UserAccess.h b/hyperdbg/hyperkd/header/debugger/user-level/UserAccess.h
index cb2c8c40..4acb1b8e 100644
--- a/hyperdbg/hyperkd/header/debugger/user-level/UserAccess.h
+++ b/hyperdbg/hyperkd/header/debugger/user-level/UserAccess.h
@@ -45,7 +45,7 @@ typedef struct _RTL_USER_PROCESS_PARAMETERS
* @brief Random windows type
*
*/
-typedef void(__stdcall * PPS_POST_PROCESS_INIT_ROUTINE)(void); // not exported
+typedef VOID(__stdcall * PPS_POST_PROCESS_INIT_ROUTINE)(VOID); // not exported
/**
* @brief PEB 64-bit
From cbb28edde3fac6c610e6eb0e82494da067567a82 Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 31 May 2026 19:29:14 +0200
Subject: [PATCH 205/323] refactor doxygen, variables, function names 7
---
hyperdbg/hyperhv/code/common/Bitwise.c | 26 +--
hyperdbg/hyperhv/code/common/Common.c | 26 +--
hyperdbg/hyperhv/code/devices/Apic.c | 20 +-
hyperdbg/hyperhv/code/features/DirtyLogging.c | 8 +-
.../hyperhv/code/hooks/ept-hook/EptHook.c | 12 +-
.../hyperhv/code/hooks/ept-hook/ExecTrap.c | 24 +--
.../code/hooks/ept-hook/ModeBasedExecHook.c | 28 +--
hyperdbg/hyperhv/code/interface/Export.c | 14 +-
hyperdbg/hyperhv/code/memory/AddressCheck.c | 6 +-
hyperdbg/hyperhv/code/memory/MemoryMapper.c | 6 +-
hyperdbg/hyperhv/code/memory/PoolManager.c | 2 +-
hyperdbg/hyperhv/code/vmm/ept/Ept.c | 24 +--
hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 8 +-
hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c | 14 +-
hyperdbg/hyperhv/code/vmm/vmx/IoHandler.c | 22 +-
hyperdbg/hyperhv/code/vmm/vmx/MsrHandlers.c | 46 ++--
hyperdbg/hyperhv/code/vmm/vmx/Vmx.c | 48 ++---
hyperdbg/hyperhv/code/vmm/vmx/VmxBroadcast.c | 2 +-
hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c | 4 +-
hyperdbg/hyperhv/header/assembly/InlineAsm.h | 203 +++++++++---------
hyperdbg/hyperhv/header/common/Bitwise.h | 12 +-
hyperdbg/hyperhv/header/common/Common.h | 22 +-
hyperdbg/hyperhv/header/common/UnloadDll.h | 5 +-
hyperdbg/hyperhv/header/vmm/vmx/IoHandler.h | 18 +-
hyperdbg/hyperhv/header/vmm/vmx/Vmx.h | 12 +-
25 files changed, 307 insertions(+), 305 deletions(-)
diff --git a/hyperdbg/hyperhv/code/common/Bitwise.c b/hyperdbg/hyperhv/code/common/Bitwise.c
index 1d0976a9..cb844856 100644
--- a/hyperdbg/hyperhv/code/common/Bitwise.c
+++ b/hyperdbg/hyperhv/code/common/Bitwise.c
@@ -15,35 +15,35 @@
* @brief Check whether the bit is set or not
*
* @param BitNumber
- * @param addr
- * @return int
+ * @param Addr
+ * @return INT
*/
-int
-TestBit(int BitNumber, unsigned long * addr)
+INT
+TestBit(INT BitNumber, ULONG * Addr)
{
- return (BITMAP_ENTRY(BitNumber, addr) >> BITMAP_SHIFT(BitNumber)) & 1;
+ return (BITMAP_ENTRY(BitNumber, Addr) >> BITMAP_SHIFT(BitNumber)) & 1;
}
/**
* @brief unset the bit
*
* @param BitNumber
- * @param addr
+ * @param Addr
*/
-void
-ClearBit(int BitNumber, unsigned long * addr)
+VOID
+ClearBit(INT BitNumber, ULONG * Addr)
{
- BITMAP_ENTRY(BitNumber, addr) &= ~(1UL << BITMAP_SHIFT(BitNumber));
+ BITMAP_ENTRY(BitNumber, Addr) &= ~(1UL << BITMAP_SHIFT(BitNumber));
}
/**
* @brief set the bit
*
* @param BitNumber
- * @param addr
+ * @param Addr
*/
-void
-SetBit(int BitNumber, unsigned long * addr)
+VOID
+SetBit(INT BitNumber, ULONG * Addr)
{
- BITMAP_ENTRY(BitNumber, addr) |= (1UL << BITMAP_SHIFT(BitNumber));
+ BITMAP_ENTRY(BitNumber, Addr) |= (1UL << BITMAP_SHIFT(BitNumber));
}
diff --git a/hyperdbg/hyperhv/code/common/Common.c b/hyperdbg/hyperhv/code/common/Common.c
index e2a31b07..9eac49d3 100644
--- a/hyperdbg/hyperhv/code/common/Common.c
+++ b/hyperdbg/hyperhv/code/common/Common.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Common.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Common functions that needs to be used in all source code files
@@ -61,28 +61,28 @@ CommonGetProcessNameFromProcessControlBlock(PEPROCESS Eprocess)
/**
* @brief Detects whether the string starts with another string
*
- * @param const char * pre
- * @param const char * str
+ * @param pre
+ * @param str
* @return BOOLEAN Returns true if it starts with and false if not strats with
*/
BOOLEAN
-CommonIsStringStartsWith(const char * pre, const char * str)
+CommonIsStringStartsWith(const CHAR * pre, const CHAR * str)
{
- size_t lenpre = strlen(pre),
- lenstr = strlen(str);
- return lenstr < lenpre ? FALSE : memcmp(pre, str, lenpre) == 0;
+ SIZE_T LenPre = strlen(pre),
+ LenStr = strlen(str);
+ return LenStr < LenPre ? FALSE : memcmp(pre, str, LenPre) == 0;
}
/**
* @brief Get cpuid results
*
- * @param UINT32 Func
- * @param UINT32 SubFunc
- * @param int * CpuInfo
+ * @param Func
+ * @param SubFunc
+ * @param CpuInfo
* @return VOID
*/
VOID
-CommonCpuidInstruction(UINT32 Func, UINT32 SubFunc, int * CpuInfo)
+CommonCpuidInstruction(UINT32 Func, UINT32 SubFunc, INT * CpuInfo)
{
CpuCpuIdEx(CpuInfo, Func, SubFunc);
}
@@ -156,7 +156,7 @@ CommonWriteDebugInformation(VIRTUAL_MACHINE_STATE * VCpu)
MemoryMapperReadMemorySafeOnTargetProcess(VCpu->LastVmexitRip, Instruction, MAXIMUM_INSTR_SIZE);
- for (size_t i = 0; i < MAXIMUM_INSTR_SIZE; i++)
+ for (SIZE_T i = 0; i < MAXIMUM_INSTR_SIZE; i++)
{
Log("%02X ", Instruction[i] & 0xffU);
}
@@ -249,4 +249,4 @@ CommonIsXCr0Valid(XCR0 XCr0)
}
return TRUE;
-}
\ No newline at end of file
+}
diff --git a/hyperdbg/hyperhv/code/devices/Apic.c b/hyperdbg/hyperhv/code/devices/Apic.c
index 117f2d27..c1cb2863 100644
--- a/hyperdbg/hyperhv/code/devices/Apic.c
+++ b/hyperdbg/hyperhv/code/devices/Apic.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Apic.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Routines for Advanced Programmable Interrupt Controller (APIC)
@@ -79,18 +79,18 @@ ApicDumpIoApic(IO_APIC_ENTRY_PACKETS * IoApicPackets)
{
UINT32 Index = 0;
UINT32 Max;
- UINT64 ll, lh;
+ UINT64 Ll, Lh;
UINT64 ApicBasePa = IO_APIC_DEFAULT_BASE_ADDR;
- ll = IoApicRead(g_IoApicBase, IO_VERS_REGISTER),
+ Ll = IoApicRead(g_IoApicBase, IO_VERS_REGISTER),
- Max = (ll >> 16) & 0xff;
+ Max = (Ll >> 16) & 0xff;
// Log("IoApic @ %08x ID:%x (%x) Arb:%x\n",
// ApicBasePa,
// IoApicRead(g_IoApicBase, IO_ID_REGISTER) >> 24,
- // ll & 0xFF,
+ // Ll & 0xFF,
// IoApicRead(g_IoApicBase, IO_ARB_ID_REGISTER));
//
@@ -99,7 +99,7 @@ ApicDumpIoApic(IO_APIC_ENTRY_PACKETS * IoApicPackets)
IoApicPackets->ApicBasePa = (UINT32)ApicBasePa;
IoApicPackets->ApicBaseVa = (UINT64)g_IoApicBase;
IoApicPackets->IoIdReg = (UINT32)IoApicRead(g_IoApicBase, IO_ID_REGISTER);
- IoApicPackets->IoLl = (UINT32)ll;
+ IoApicPackets->IoLl = (UINT32)Ll;
IoApicPackets->IoArbIdReg = (UINT32)IoApicRead(g_IoApicBase, IO_ARB_ID_REGISTER);
//
@@ -117,11 +117,11 @@ ApicDumpIoApic(IO_APIC_ENTRY_PACKETS * IoApicPackets)
return;
}
- ll = IoApicRead(g_IoApicBase, IO_REDIR_BASE + Index + 0);
- lh = IoApicRead(g_IoApicBase, IO_REDIR_BASE + Index + 1);
+ Ll = IoApicRead(g_IoApicBase, IO_REDIR_BASE + Index + 0);
+ Lh = IoApicRead(g_IoApicBase, IO_REDIR_BASE + Index + 1);
- IoApicPackets->LlLhData[Index] = ll;
- IoApicPackets->LlLhData[Index + 1] = lh;
+ IoApicPackets->LlLhData[Index] = Ll;
+ IoApicPackets->LlLhData[Index + 1] = Lh;
}
}
diff --git a/hyperdbg/hyperhv/code/features/DirtyLogging.c b/hyperdbg/hyperhv/code/features/DirtyLogging.c
index 6f91dd46..dab2db41 100644
--- a/hyperdbg/hyperhv/code/features/DirtyLogging.c
+++ b/hyperdbg/hyperhv/code/features/DirtyLogging.c
@@ -53,7 +53,7 @@ DirtyLoggingInitialize()
// the 4 - KByte aligned physical address of the page - modification log.The page modification
// log comprises 512 64 - bit entries
//
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
if (g_GuestState[i].PmlBufferAddress == NULL)
{
@@ -65,7 +65,7 @@ DirtyLoggingInitialize()
//
// Allocation failed
//
- for (size_t j = 0; j < ProcessorsCount; j++)
+ for (SIZE_T j = 0; j < ProcessorsCount; j++)
{
if (g_GuestState[j].PmlBufferAddress != NULL)
{
@@ -196,7 +196,7 @@ DirtyLoggingUninitialize()
//
// Free the allocated pool buffers
//
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
if (g_GuestState[i].PmlBufferAddress != NULL)
{
@@ -218,7 +218,7 @@ DirtyLoggingHandlePageModificationLog(VIRTUAL_MACHINE_STATE * VCpu)
//
// The guest-physical address of the access is written to the page-modification log
//
- for (size_t i = 0; i < PML_ENTITY_NUM; i++)
+ for (SIZE_T i = 0; i < PML_ENTITY_NUM; i++)
{
LogInfo("Address : %llx", VCpu->PmlBufferAddress[i]);
}
diff --git a/hyperdbg/hyperhv/code/hooks/ept-hook/EptHook.c b/hyperdbg/hyperhv/code/hooks/ept-hook/EptHook.c
index 64370c33..561212b7 100644
--- a/hyperdbg/hyperhv/code/hooks/ept-hook/EptHook.c
+++ b/hyperdbg/hyperhv/code/hooks/ept-hook/EptHook.c
@@ -274,7 +274,7 @@ EptHookCreateHookPage(_Inout_ VIRTUAL_MACHINE_STATE * VCpu,
//
// Split the 2MB page-table of each core to 4KB page-table
//
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
//
// We need to split the large page to 4KB page using pre-allocated pools
@@ -1251,7 +1251,7 @@ EptHookPerformPageHookMonitorAndInlineHook(VIRTUAL_MACHINE_STATE * VCpu,
}
}
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
//
// We need to split the large page to 4KB page using pre-allocated pools
@@ -2069,7 +2069,7 @@ EptHookUnHookSingleAddressHiddenBreakpoint(PEPT_HOOKED_PAGE_DETAIL H
// is the HookedEntry that should be remove (not the first one as it has the
// correct PreviousByte)
//
- for (size_t i = 0; i < HookedEntry->CountOfBreakpoints; i++)
+ for (SIZE_T i = 0; i < HookedEntry->CountOfBreakpoints; i++)
{
if (HookedEntry->BreakpointAddresses[i] == VirtualAddress)
{
@@ -2162,7 +2162,7 @@ EptHookUnHookSingleAddressHiddenBreakpoint(PEPT_HOOKED_PAGE_DETAIL H
// in the array, then we'll ignore setting the previous bit as previous bit might
// be modified for the previous command
//
- for (size_t j = 0; j < HookedEntry->CountOfBreakpoints; j++)
+ for (SIZE_T j = 0; j < HookedEntry->CountOfBreakpoints; j++)
{
if (HookedEntry->BreakpointAddresses[j] == VirtualAddress)
{
@@ -2189,7 +2189,7 @@ EptHookUnHookSingleAddressHiddenBreakpoint(PEPT_HOOKED_PAGE_DETAIL H
// all addresses to a lower array index (because one entry is
// missing and might) be in the middle of the array
//
- for (size_t j = i /* IndexToRemove */; j < HookedEntry->CountOfBreakpoints - 1; j++)
+ for (SIZE_T j = i /* IndexToRemove */; j < HookedEntry->CountOfBreakpoints - 1; j++)
{
HookedEntry->BreakpointAddresses[j] = HookedEntry->BreakpointAddresses[j + 1];
HookedEntry->PreviousBytesOnBreakpointAddresses[j] = HookedEntry->PreviousBytesOnBreakpointAddresses[j + 1];
@@ -2274,7 +2274,7 @@ EptHookPerformUnHookSingleAddress(UINT64 VirtualAdd
//
// It's a hidden breakpoint
//
- for (size_t i = 0; i < CurrEntity->CountOfBreakpoints; i++)
+ for (SIZE_T i = 0; i < CurrEntity->CountOfBreakpoints; i++)
{
if (CurrEntity->BreakpointAddresses[i] == VirtualAddress)
{
diff --git a/hyperdbg/hyperhv/code/hooks/ept-hook/ExecTrap.c b/hyperdbg/hyperhv/code/hooks/ept-hook/ExecTrap.c
index 8f837efd..8554064b 100644
--- a/hyperdbg/hyperhv/code/hooks/ept-hook/ExecTrap.c
+++ b/hyperdbg/hyperhv/code/hooks/ept-hook/ExecTrap.c
@@ -87,7 +87,7 @@ ExecTrapTraverseThroughOsPageTables(PVMM_EPT_PAGE_TABLE EptTable, CR3_TYPE Targe
return FALSE;
}
- for (size_t i = 0; i < 512; i++)
+ for (SIZE_T i = 0; i < 512; i++)
{
// LogInfo("Address of Cr3Va: %llx", Cr3Va);
@@ -125,7 +125,7 @@ ExecTrapTraverseThroughOsPageTables(PVMM_EPT_PAGE_TABLE EptTable, CR3_TYPE Targe
//
if (PdptVa != NULL)
{
- for (size_t j = 0; j < 512; j++)
+ for (SIZE_T j = 0; j < 512; j++)
{
// LogInfo("Address of PdptVa: %llx", PdptVa);
@@ -168,7 +168,7 @@ ExecTrapTraverseThroughOsPageTables(PVMM_EPT_PAGE_TABLE EptTable, CR3_TYPE Targe
//
if (PdVa != NULL)
{
- for (size_t k = 0; k < 512; k++)
+ for (SIZE_T k = 0; k < 512; k++)
{
// LogInfo("Address of PdVa: %llx", PdVa);
@@ -216,7 +216,7 @@ ExecTrapTraverseThroughOsPageTables(PVMM_EPT_PAGE_TABLE EptTable, CR3_TYPE Targe
//
if (PtVa != NULL)
{
- for (size_t l = 0; l < 512; l++)
+ for (SIZE_T l = 0; l < 512; l++)
{
// LogInfo("Address of PtVa: %llx", PtVa);
@@ -265,7 +265,7 @@ ExecTrapEnableExecuteOnlyPages(PVMM_EPT_PAGE_TABLE EptTable)
//
// Set execute access for PML4s
//
- for (size_t i = 0; i < VMM_EPT_PML4E_COUNT; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML4E_COUNT; i++)
{
//
// We only set the top-level PML4 for intercepting user-mode execution
@@ -276,7 +276,7 @@ ExecTrapEnableExecuteOnlyPages(PVMM_EPT_PAGE_TABLE EptTable)
//
// Set execute access for PML3s
//
- for (size_t i = 0; i < VMM_EPT_PML3E_COUNT; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML3E_COUNT; i++)
{
EptTable->PML3[i].UserModeExecute = TRUE;
}
@@ -284,9 +284,9 @@ ExecTrapEnableExecuteOnlyPages(PVMM_EPT_PAGE_TABLE EptTable)
//
// Set execute access for PML2s
//
- for (size_t i = 0; i < VMM_EPT_PML3E_COUNT; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML3E_COUNT; i++)
{
- for (size_t j = 0; j < VMM_EPT_PML2E_COUNT; j++)
+ for (SIZE_T j = 0; j < VMM_EPT_PML2E_COUNT; j++)
{
EptTable->PML2[i][j].UserModeExecute = TRUE;
}
@@ -295,7 +295,7 @@ ExecTrapEnableExecuteOnlyPages(PVMM_EPT_PAGE_TABLE EptTable)
//
// *** disallow read or write for certain memory only (not MMIO) EPTP pages ***
//
- for (size_t i = 0; i < MAX_PHYSICAL_RAM_RANGE_COUNT; i++)
+ for (SIZE_T i = 0; i < MAX_PHYSICAL_RAM_RANGE_COUNT; i++)
{
if (PhysicalRamRegions[i].RamPhysicalAddress != NULL64_ZERO)
{
@@ -510,7 +510,7 @@ ExecTrapChangeToUserDisabledMbecEptp(VIRTUAL_MACHINE_STATE * VCpu)
//
// Set execute access for PML4s
//
- // for (size_t i = 0; i < VMM_EPT_PML4E_COUNT; i++)
+ // for (SIZE_T i = 0; i < VMM_EPT_PML4E_COUNT; i++)
// {
VCpu->EptPageTable->PML4[0].UserModeExecute = FALSE;
@@ -551,7 +551,7 @@ ExecTrapChangeToKernelDisabledMbecEptp(VIRTUAL_MACHINE_STATE * VCpu)
//
// Set execute access for PML4s
//
- // for (size_t i = 0; i < VMM_EPT_PML4E_COUNT; i++)
+ // for (SIZE_T i = 0; i < VMM_EPT_PML4E_COUNT; i++)
// {
VCpu->EptPageTable->PML4[0].UserModeExecute = TRUE;
@@ -592,7 +592,7 @@ ExecTrapChangeToNormalMbecEptp(VIRTUAL_MACHINE_STATE * VCpu)
//
// Set execute access for PML4s
//
- // for (size_t i = 0; i < VMM_EPT_PML4E_COUNT; i++)
+ // for (SIZE_T i = 0; i < VMM_EPT_PML4E_COUNT; i++)
// {
VCpu->EptPageTable->PML4[0].UserModeExecute = TRUE;
diff --git a/hyperdbg/hyperhv/code/hooks/ept-hook/ModeBasedExecHook.c b/hyperdbg/hyperhv/code/hooks/ept-hook/ModeBasedExecHook.c
index b3265539..b8704a1f 100644
--- a/hyperdbg/hyperhv/code/hooks/ept-hook/ModeBasedExecHook.c
+++ b/hyperdbg/hyperhv/code/hooks/ept-hook/ModeBasedExecHook.c
@@ -25,7 +25,7 @@ ModeBasedExecHookDisableUserModeExecution(PVMM_EPT_PAGE_TABLE EptTable)
//
// Set execute access for PML4s
//
- for (size_t i = 0; i < VMM_EPT_PML4E_COUNT; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML4E_COUNT; i++)
{
//
// We only set the top-level PML4 for intercepting user-mode execution
@@ -36,7 +36,7 @@ ModeBasedExecHookDisableUserModeExecution(PVMM_EPT_PAGE_TABLE EptTable)
//
// Set execute access for PML3s
//
- for (size_t i = 0; i < VMM_EPT_PML3E_COUNT; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML3E_COUNT; i++)
{
EptTable->PML3[i].UserModeExecute = TRUE;
}
@@ -44,9 +44,9 @@ ModeBasedExecHookDisableUserModeExecution(PVMM_EPT_PAGE_TABLE EptTable)
//
// Set execute access for PML2s
//
- for (size_t i = 0; i < VMM_EPT_PML3E_COUNT; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML3E_COUNT; i++)
{
- for (size_t j = 0; j < VMM_EPT_PML2E_COUNT; j++)
+ for (SIZE_T j = 0; j < VMM_EPT_PML2E_COUNT; j++)
{
EptTable->PML2[i][j].UserModeExecute = TRUE;
}
@@ -77,7 +77,7 @@ ModeBasedExecHookDisableKernelModeExecution(PVMM_EPT_PAGE_TABLE EptTable)
//
// Set execute access for PML4s
//
- for (size_t i = 0; i < VMM_EPT_PML4E_COUNT; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML4E_COUNT; i++)
{
EptTable->PML4[i].UserModeExecute = TRUE;
@@ -90,7 +90,7 @@ ModeBasedExecHookDisableKernelModeExecution(PVMM_EPT_PAGE_TABLE EptTable)
//
// Set execute access for PML3s
//
- for (size_t i = 0; i < VMM_EPT_PML3E_COUNT; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML3E_COUNT; i++)
{
EptTable->PML3[i].UserModeExecute = TRUE;
}
@@ -98,9 +98,9 @@ ModeBasedExecHookDisableKernelModeExecution(PVMM_EPT_PAGE_TABLE EptTable)
//
// Set execute access for PML2s
//
- for (size_t i = 0; i < VMM_EPT_PML3E_COUNT; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML3E_COUNT; i++)
{
- for (size_t j = 0; j < VMM_EPT_PML2E_COUNT; j++)
+ for (SIZE_T j = 0; j < VMM_EPT_PML2E_COUNT; j++)
{
EptTable->PML2[i][j].UserModeExecute = TRUE;
}
@@ -123,7 +123,7 @@ ModeBasedExecHookEnableUsermodeExecution(PVMM_EPT_PAGE_TABLE EptTable)
//
// Set execute access for PML4s
//
- for (size_t i = 0; i < VMM_EPT_PML4E_COUNT; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML4E_COUNT; i++)
{
//
// We only set the top-level PML4 for intercepting user-mode execution
@@ -134,7 +134,7 @@ ModeBasedExecHookEnableUsermodeExecution(PVMM_EPT_PAGE_TABLE EptTable)
//
// Set execute access for PML3s
//
- for (size_t i = 0; i < VMM_EPT_PML3E_COUNT; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML3E_COUNT; i++)
{
EptTable->PML3[i].UserModeExecute = TRUE;
}
@@ -142,9 +142,9 @@ ModeBasedExecHookEnableUsermodeExecution(PVMM_EPT_PAGE_TABLE EptTable)
//
// Set execute access for PML2s
//
- for (size_t i = 0; i < VMM_EPT_PML3E_COUNT; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML3E_COUNT; i++)
{
- for (size_t j = 0; j < VMM_EPT_PML2E_COUNT; j++)
+ for (SIZE_T j = 0; j < VMM_EPT_PML2E_COUNT; j++)
{
EptTable->PML2[i][j].UserModeExecute = TRUE;
@@ -163,7 +163,7 @@ ModeBasedExecHookEnableUsermodeExecution(PVMM_EPT_PAGE_TABLE EptTable)
//
// Set execute access for PML1s
//
- for (size_t k = 0; k < VMM_EPT_PML1E_COUNT; k++)
+ for (SIZE_T k = 0; k < VMM_EPT_PML1E_COUNT; k++)
{
Pml1Entries[k].UserModeExecute = TRUE;
}
@@ -246,7 +246,7 @@ ModeBasedExecHookInitialize()
//
// Enable EPT user-mode execution bit for the target EPTP
//
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
ModeBasedExecHookEnableUsermodeExecution(g_GuestState[i].EptPageTable);
}
diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c
index 61163dfa..95f9a7bf 100644
--- a/hyperdbg/hyperhv/code/interface/Export.c
+++ b/hyperdbg/hyperhv/code/interface/Export.c
@@ -941,10 +941,10 @@ VmFuncEventInjectInterruption(UINT32 InterruptionType,
* @return NTSTATUS
*/
NTSTATUS
-VmFuncVmxVmcall(unsigned long long VmcallNumber,
- unsigned long long OptionalParam1,
- unsigned long long OptionalParam2,
- unsigned long long OptionalParam3)
+VmFuncVmxVmcall(UINT64 VmcallNumber,
+ UINT64 OptionalParam1,
+ UINT64 OptionalParam2,
+ UINT64 OptionalParam3)
{
return AsmVmxVmcall(VmcallNumber, OptionalParam1, OptionalParam2, OptionalParam3);
}
@@ -1045,14 +1045,14 @@ VmFuncVmxCompatibleWcsncmp(const WCHAR * Address1, const WCHAR * Address2, SIZE_
* @return INT32
*/
INT32
-VmFuncVmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, size_t Count)
+VmFuncVmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, SIZE_T Count)
{
return VmxCompatibleMemcmp(Address1, Address2, Count);
}
/**
* @brief Enables MTF and adjust external interrupt state
- * @param UINT32 CoreId
+ * @param CoreId
*
* @return VOID
*/
@@ -1065,7 +1065,7 @@ VmFuncEnableMtfAndChangeExternalInterruptState(UINT32 CoreId)
/**
* @brief Checks to enable and reinject previous interrupts
*
- * @param UINT32 CoreId
+ * @param CoreId
*
* @return VOID
*/
diff --git a/hyperdbg/hyperhv/code/memory/AddressCheck.c b/hyperdbg/hyperhv/code/memory/AddressCheck.c
index 86bbeb4a..4513ce01 100644
--- a/hyperdbg/hyperhv/code/memory/AddressCheck.c
+++ b/hyperdbg/hyperhv/code/memory/AddressCheck.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Conversion.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Functions for address checks
@@ -17,7 +17,7 @@
*
* @param Address Address to check
*
- * @param UINT32 ProcId
+ * @param ProcId
* @return BOOLEAN Returns true if the address is valid; otherwise, false
*/
BOOLEAN
@@ -210,7 +210,7 @@ CheckAccessValidityAndSafetyWrapper(UINT64 TargetAddress, UINT32 Size, UINT32 Pr
// UINT64 AlignedPage = (UINT64)PAGE_ALIGN(TargetAddress);
// UINT64 PageCount = ((TargetAddress - AlignedPage) + Size) / PAGE_SIZE;
//
- // for (size_t i = 0; i <= PageCount; i++)
+ // for (SIZE_T i = 0; i <= PageCount; i++)
// {
// UINT64 CheckAddr = AlignedPage + (PAGE_SIZE * i);
// if (!CheckAddressValidityUsingTsx(CheckAddr))
diff --git a/hyperdbg/hyperhv/code/memory/MemoryMapper.c b/hyperdbg/hyperhv/code/memory/MemoryMapper.c
index 15745212..f95b1e13 100644
--- a/hyperdbg/hyperhv/code/memory/MemoryMapper.c
+++ b/hyperdbg/hyperhv/code/memory/MemoryMapper.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file MemoryMapper.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief This file shows the functions to map memory to reserved system ranges
@@ -685,7 +685,7 @@ MemoryMapperInitialize()
//
// Set the core's id and initialize memory mapper
//
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
//
// *** Initialize memory mapper for each core ***
@@ -717,7 +717,7 @@ MemoryMapperUninitialize()
{
ULONG ProcessorsCount = KeQueryActiveProcessorCount(0);
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
//
// Unmap and free the reserved buffer
diff --git a/hyperdbg/hyperhv/code/memory/PoolManager.c b/hyperdbg/hyperhv/code/memory/PoolManager.c
index d5c5b01e..1a101067 100644
--- a/hyperdbg/hyperhv/code/memory/PoolManager.c
+++ b/hyperdbg/hyperhv/code/memory/PoolManager.c
@@ -252,7 +252,7 @@ PoolManagerRequestPool(POOL_ALLOCATION_INTENTION Intention, BOOLEAN RequestNewPo
BOOLEAN
PoolManagerAllocateAndAddToPoolTable(SIZE_T Size, UINT32 Count, POOL_ALLOCATION_INTENTION Intention)
{
- for (size_t i = 0; i < Count; i++)
+ for (SIZE_T i = 0; i < Count; i++)
{
POOL_TABLE * SinglePool = NULL;
diff --git a/hyperdbg/hyperhv/code/vmm/ept/Ept.c b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
index 90e6ea96..c07ff4f8 100644
--- a/hyperdbg/hyperhv/code/vmm/ept/Ept.c
+++ b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Ept.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @author Gbps
@@ -201,7 +201,7 @@ EptBuildMtrrMap(VOID)
const UINT32 K64Base = 0x0;
const UINT32 K64Size = 0x10000;
IA32_MTRR_FIXED_RANGE_TYPE K64Types = {CpuReadMsr(IA32_MTRR_FIX64K_00000)};
- for (unsigned int i = 0; i < 8; i++)
+ for (UINT32 i = 0; i < 8; i++)
{
Descriptor = &g_EptState->MemoryRanges[g_EptState->NumberOfEnabledMemoryRanges++];
Descriptor->MemoryType = K64Types.s.Types[i];
@@ -212,10 +212,10 @@ EptBuildMtrrMap(VOID)
const UINT32 K16Base = 0x80000;
const UINT32 K16Size = 0x4000;
- for (unsigned int i = 0; i < 2; i++)
+ for (UINT32 i = 0; i < 2; i++)
{
IA32_MTRR_FIXED_RANGE_TYPE K16Types = {CpuReadMsr(IA32_MTRR_FIX16K_80000 + i)};
- for (unsigned int j = 0; j < 8; j++)
+ for (UINT32 j = 0; j < 8; j++)
{
Descriptor = &g_EptState->MemoryRanges[g_EptState->NumberOfEnabledMemoryRanges++];
Descriptor->MemoryType = K16Types.s.Types[j];
@@ -227,11 +227,11 @@ EptBuildMtrrMap(VOID)
const UINT32 K4Base = 0xC0000;
const UINT32 K4Size = 0x1000;
- for (unsigned int i = 0; i < 8; i++)
+ for (UINT32 i = 0; i < 8; i++)
{
IA32_MTRR_FIXED_RANGE_TYPE K4Types = {CpuReadMsr(IA32_MTRR_FIX4K_C0000 + i)};
- for (unsigned int j = 0; j < 8; j++)
+ for (UINT32 j = 0; j < 8; j++)
{
Descriptor = &g_EptState->MemoryRanges[g_EptState->NumberOfEnabledMemoryRanges++];
Descriptor->MemoryType = K4Types.s.Types[j];
@@ -763,7 +763,7 @@ EptAllocateAndCreateIdentityPageTable(VOID)
//
// Copt the template into each of the 512 PML3 entry slots for the reserved entries
//
- for (size_t i = 0; i < VMM_EPT_PML4E_COUNT - 1; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML4E_COUNT - 1; i++)
{
CpuStosQ((SIZE_T *)&PageTable->PML3_RSVD[i][0], PML3TemplateLarge.AsUInt, VMM_EPT_PML3E_COUNT);
}
@@ -783,9 +783,9 @@ EptAllocateAndCreateIdentityPageTable(VOID)
//
// For each of the 512 PML3 reserved entries for reserved PML3 entries
//
- for (size_t i = 0; i < VMM_EPT_PML4E_COUNT - 1; i++)
+ for (SIZE_T i = 0; i < VMM_EPT_PML4E_COUNT - 1; i++)
{
- for (size_t j = 0; j < VMM_EPT_PML3E_COUNT; j++)
+ for (SIZE_T j = 0; j < VMM_EPT_PML3E_COUNT; j++)
{
//
// Map the 1GB PML3 reserved entry to 512 PML3 (1GB) entries to describe each large page
@@ -862,7 +862,7 @@ EptLogicalProcessorInitialize(VOID)
//
ProcessorsCount = KeQueryActiveProcessorCount(0);
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
//
// Allocate the identity mapped page table
@@ -874,7 +874,7 @@ EptLogicalProcessorInitialize(VOID)
//
// Try to deallocate previous pools (if any)
//
- for (size_t j = 0; j < ProcessorsCount; j++)
+ for (SIZE_T j = 0; j < ProcessorsCount; j++)
{
if (g_GuestState[j].EptPageTable != NULL)
{
@@ -1225,7 +1225,7 @@ EptCheckAndHandleEptHookBreakpoints(VIRTUAL_MACHINE_STATE * VCpu, UINT64 GuestRi
if (HookedEntry->IsExecutionHook)
{
- for (size_t i = 0; i < HookedEntry->CountOfBreakpoints; i++)
+ for (SIZE_T i = 0; i < HookedEntry->CountOfBreakpoints; i++)
{
if (HookedEntry->BreakpointAddresses[i] == GuestRip)
{
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
index bb0e30ec..4fe9afec 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Hv.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief This file describes the routines in Hypervisor
@@ -299,7 +299,7 @@ HvResumeToNextInstruction()
{
UINT64 ResumeRIP = NULL64_ZERO;
UINT64 CurrentRIP = NULL64_ZERO;
- size_t ExitInstructionLength = 0;
+ SIZE_T ExitInstructionLength = 0;
VmxVmread64P(VMCS_GUEST_RIP, &CurrentRIP);
VmxVmread64P(VMCS_VMEXIT_INSTRUCTION_LENGTH, &ExitInstructionLength);
@@ -519,7 +519,7 @@ HvRestoreRegisters()
VmxVmread64P(VMCS_GUEST_GDTR_BASE, &GdtrBase);
VmxVmread64P(VMCS_GUEST_GDTR_LIMIT, &GdtrLimit);
- AsmReloadGdtr((void *)GdtrBase, (unsigned long)GdtrLimit);
+ AsmReloadGdtr((PVOID)GdtrBase, (ULONG)GdtrLimit);
//
// Restore Segment Selector
@@ -539,7 +539,7 @@ HvRestoreRegisters()
VmxVmread64P(VMCS_GUEST_IDTR_BASE, &IdtrBase);
VmxVmread64P(VMCS_GUEST_IDTR_LIMIT, &IdtrLimit);
- AsmReloadIdtr((void *)IdtrBase, (unsigned long)IdtrLimit);
+ AsmReloadIdtr((PVOID)IdtrBase, (ULONG)IdtrLimit);
}
/**
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
index ffd2c6f2..2de61432 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/IdtEmulation.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file IdtEmulation.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Handlers of Guest's IDT Emulator
@@ -55,9 +55,9 @@ IdtEmulationQueryIdtEntriesRequest(PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS I
//
for (UINT32 i = 0; i < MAX_NUMBER_OF_IDT_ENTRIES; i++)
{
- IdtQueryRequest->IdtEntry[i] = (UINT64)((unsigned long long)IdtEntries[i].HighestPart << 32) |
- ((unsigned long long)IdtEntries[i].HighPart << 16) |
- (unsigned long long)IdtEntries[i].LowPart;
+ IdtQueryRequest->IdtEntry[i] = (UINT64)((UINT64)IdtEntries[i].HighestPart << 32) |
+ ((UINT64)IdtEntries[i].HighPart << 16) |
+ (UINT64)IdtEntries[i].LowPart;
}
}
@@ -132,7 +132,7 @@ IdtEmulationPrepareHostIdt(_Inout_ VIRTUAL_MACHINE_STATE * VCpu)
HOST_IDT_DESCRIPTOR_COUNT * sizeof(SEGMENT_DESCRIPTOR_INTERRUPT_GATE_64));
/*
- for (size_t i = 0; i < HOST_IDT_DESCRIPTOR_COUNT; i++)
+ for (SIZE_T i = 0; i < HOST_IDT_DESCRIPTOR_COUNT; i++)
{
SEGMENT_DESCRIPTOR_INTERRUPT_GATE_64 CurrentEntry = WindowsIdt[i];
@@ -481,7 +481,7 @@ IdtEmulationInjectInterruptWhenInterruptWindowIsOpen(_Inout_ VIRTUAL_MACHINE_STA
// We can't inject interrupt because the guest's state is not interruptible
// we have to queue it an re-inject it when the interrupt window is opened !
//
- for (size_t i = 0; i < PENDING_INTERRUPTS_BUFFER_CAPACITY; i++)
+ for (SIZE_T i = 0; i < PENDING_INTERRUPTS_BUFFER_CAPACITY; i++)
{
//
// Find an empty space
@@ -677,7 +677,7 @@ IdtEmulationHandleInterruptWindowExiting(_Inout_ VIRTUAL_MACHINE_STATE * VCpu)
//
if (!InjectPageFault)
{
- for (size_t i = 0; i < PENDING_INTERRUPTS_BUFFER_CAPACITY; i++)
+ for (SIZE_T i = 0; i < PENDING_INTERRUPTS_BUFFER_CAPACITY; i++)
{
//
// Find an empty space
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/IoHandler.c b/hyperdbg/hyperhv/code/vmm/vmx/IoHandler.c
index b506b337..77daa753 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/IoHandler.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/IoHandler.c
@@ -37,12 +37,12 @@ IoHandleIoVmExits(VIRTUAL_MACHINE_STATE * VCpu, VMX_EXIT_QUALIFICATION_IO_INSTRU
union
{
- unsigned char * AsBytePtr;
- unsigned short * AsWordPtr;
- unsigned long * AsDwordPtr;
+ UCHAR * AsBytePtr;
+ USHORT * AsWordPtr;
+ ULONG * AsDwordPtr;
- void * AsPtr;
- UINT64 AsUint64;
+ PVOID AsPtr;
+ UINT64 AsUInt64;
} PortValue;
@@ -215,11 +215,11 @@ IoHandleSetIoBitmap(VIRTUAL_MACHINE_STATE * VCpu, UINT32 Port)
{
if (Port <= 0x7FFF)
{
- SetBit(Port, (unsigned long *)VCpu->IoBitmapVirtualAddressA);
+ SetBit(Port, (ULONG *)VCpu->IoBitmapVirtualAddressA);
}
else if ((0x8000 <= Port) && (Port <= 0xFFFF))
{
- SetBit(Port - 0x8000, (unsigned long *)VCpu->IoBitmapVirtualAddressB);
+ SetBit(Port - 0x8000, (ULONG *)VCpu->IoBitmapVirtualAddressB);
}
else
{
@@ -245,8 +245,8 @@ IoHandlePerformIoBitmapChange(VIRTUAL_MACHINE_STATE * VCpu, UINT32 Port)
//
// Means all the bitmaps should be put to 1
//
- memset((void *)VCpu->IoBitmapVirtualAddressA, 0xFF, PAGE_SIZE);
- memset((void *)VCpu->IoBitmapVirtualAddressB, 0xFF, PAGE_SIZE);
+ memset((PVOID)VCpu->IoBitmapVirtualAddressA, 0xFF, PAGE_SIZE);
+ memset((PVOID)VCpu->IoBitmapVirtualAddressB, 0xFF, PAGE_SIZE);
}
else
{
@@ -270,6 +270,6 @@ IoHandlePerformIoBitmapReset(VIRTUAL_MACHINE_STATE * VCpu)
//
// Means all the bitmaps should be put to 0
//
- memset((void *)VCpu->IoBitmapVirtualAddressA, 0x0, PAGE_SIZE);
- memset((void *)VCpu->IoBitmapVirtualAddressB, 0x0, PAGE_SIZE);
+ memset((PVOID)VCpu->IoBitmapVirtualAddressA, 0x0, PAGE_SIZE);
+ memset((PVOID)VCpu->IoBitmapVirtualAddressB, 0x0, PAGE_SIZE);
}
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/MsrHandlers.c b/hyperdbg/hyperhv/code/vmm/vmx/MsrHandlers.c
index 8c8a9d1c..177f5a16 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/MsrHandlers.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/MsrHandlers.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file MsrHandlers.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Handle for MSR-related tasks in VMX-root
@@ -114,7 +114,7 @@ MsrHandleRdmsrVmexit(VIRTUAL_MACHINE_STATE * VCpu)
//
// Check whether the MSR should cause #GP or not
//
- if (TargetMsr <= 0xfff && TestBit(TargetMsr, (unsigned long *)g_MsrBitmapInvalidMsrs) != NULL64_ZERO)
+ if (TargetMsr <= 0xfff && TestBit(TargetMsr, (ULONG *)g_MsrBitmapInvalidMsrs) != NULL64_ZERO)
{
//
// Invalid MSR between 0x0 to 0xfff
@@ -278,7 +278,7 @@ MsrHandleWrmsrVmexit(VIRTUAL_MACHINE_STATE * VCpu)
//
// Perform the WRMSR
//
- CpuWriteMsr((unsigned long)GuestRegs->rcx, Msr.Flags);
+ CpuWriteMsr((ULONG)GuestRegs->rcx, Msr.Flags);
break;
}
@@ -317,22 +317,22 @@ MsrHandleSetMsrBitmap(VIRTUAL_MACHINE_STATE * VCpu, UINT32 Msr, BOOLEAN ReadDete
{
if (ReadDetection)
{
- SetBit(Msr, (unsigned long *)VCpu->MsrBitmapVirtualAddress);
+ SetBit(Msr, (ULONG *)VCpu->MsrBitmapVirtualAddress);
}
if (WriteDetection)
{
- SetBit(Msr, (unsigned long *)VCpu->MsrBitmapVirtualAddress + 2048);
+ SetBit(Msr, (ULONG *)VCpu->MsrBitmapVirtualAddress + 2048);
}
}
else if ((0xC0000000 <= Msr) && (Msr <= 0xC0001FFF))
{
if (ReadDetection)
{
- SetBit(Msr - 0xC0000000, (unsigned long *)(VCpu->MsrBitmapVirtualAddress + 1024));
+ SetBit(Msr - 0xC0000000, (ULONG *)(VCpu->MsrBitmapVirtualAddress + 1024));
}
if (WriteDetection)
{
- SetBit(Msr - 0xC0000000, (unsigned long *)(VCpu->MsrBitmapVirtualAddress + 3072));
+ SetBit(Msr - 0xC0000000, (ULONG *)(VCpu->MsrBitmapVirtualAddress + 3072));
}
}
else
@@ -366,22 +366,22 @@ MsrHandleUnSetMsrBitmap(VIRTUAL_MACHINE_STATE * VCpu, UINT32 Msr, BOOLEAN ReadDe
{
if (ReadDetection)
{
- ClearBit(Msr, (unsigned long *)VCpu->MsrBitmapVirtualAddress);
+ ClearBit(Msr, (ULONG *)VCpu->MsrBitmapVirtualAddress);
}
if (WriteDetection)
{
- ClearBit(Msr, (unsigned long *)(VCpu->MsrBitmapVirtualAddress + 2048));
+ ClearBit(Msr, (ULONG *)(VCpu->MsrBitmapVirtualAddress + 2048));
}
}
else if ((0xC0000000 <= Msr) && (Msr <= 0xC0001FFF))
{
if (ReadDetection)
{
- ClearBit(Msr - 0xC0000000, (unsigned long *)(VCpu->MsrBitmapVirtualAddress + 1024));
+ ClearBit(Msr - 0xC0000000, (ULONG *)(VCpu->MsrBitmapVirtualAddress + 1024));
}
if (WriteDetection)
{
- ClearBit(Msr - 0xC0000000, (unsigned long *)(VCpu->MsrBitmapVirtualAddress + 3072));
+ ClearBit(Msr - 0xC0000000, (ULONG *)(VCpu->MsrBitmapVirtualAddress + 3072));
}
}
else
@@ -404,13 +404,13 @@ MsrHandleFilterMsrReadBitmap(VIRTUAL_MACHINE_STATE * VCpu)
//
// Ignore IA32_KERNEL_GSBASE (0xC0000102)
//
- ClearBit(0x102, (unsigned long *)(VCpu->MsrBitmapVirtualAddress + 1024));
+ ClearBit(0x102, (ULONG *)(VCpu->MsrBitmapVirtualAddress + 1024));
//
// Ignore IA32_MPERF (0x000000e7), and IA32_APERF (0x000000e8)
//
- ClearBit(0xe7, (unsigned long *)VCpu->MsrBitmapVirtualAddress);
- ClearBit(0xe8, (unsigned long *)VCpu->MsrBitmapVirtualAddress);
+ ClearBit(0xe7, (ULONG *)VCpu->MsrBitmapVirtualAddress);
+ ClearBit(0xe8, (ULONG *)VCpu->MsrBitmapVirtualAddress);
}
/**
@@ -426,19 +426,19 @@ MsrHandleFilterMsrWriteBitmap(VIRTUAL_MACHINE_STATE * VCpu)
//
// Ignore IA32_KERNEL_GSBASE (0xC0000102)
//
- ClearBit(0x102, (unsigned long *)(VCpu->MsrBitmapVirtualAddress + 3072));
+ ClearBit(0x102, (ULONG *)(VCpu->MsrBitmapVirtualAddress + 3072));
//
// Ignore IA32_MPERF (0x000000e7), and IA32_APERF (0x000000e8)
//
- ClearBit(0xe7, (unsigned long *)(VCpu->MsrBitmapVirtualAddress + 2048));
- ClearBit(0xe8, (unsigned long *)(VCpu->MsrBitmapVirtualAddress + 2048));
+ ClearBit(0xe7, (ULONG *)(VCpu->MsrBitmapVirtualAddress + 2048));
+ ClearBit(0xe8, (ULONG *)(VCpu->MsrBitmapVirtualAddress + 2048));
//
// Ignore IA32_SPEC_CTRL (0x00000048), and IA32_PRED_CMD (0x00000049)
//
- ClearBit(0x48, (unsigned long *)(VCpu->MsrBitmapVirtualAddress + 2048));
- ClearBit(0x49, (unsigned long *)(VCpu->MsrBitmapVirtualAddress + 2048));
+ ClearBit(0x48, (ULONG *)(VCpu->MsrBitmapVirtualAddress + 2048));
+ ClearBit(0x49, (ULONG *)(VCpu->MsrBitmapVirtualAddress + 2048));
}
/**
@@ -457,7 +457,7 @@ MsrHandlePerformMsrBitmapReadChange(VIRTUAL_MACHINE_STATE * VCpu, UINT32 MsrMask
//
// Means all the bitmaps should be put to 1
//
- memset((void *)VCpu->MsrBitmapVirtualAddress, 0xff, 2048);
+ memset((PVOID)VCpu->MsrBitmapVirtualAddress, 0xff, 2048);
//
// Filter MSR Bitmap for special MSRs
@@ -486,7 +486,7 @@ MsrHandlePerformMsrBitmapReadReset(VIRTUAL_MACHINE_STATE * VCpu)
//
// Means all the bitmaps should be put to 0
//
- memset((void *)VCpu->MsrBitmapVirtualAddress, 0x0, 2048);
+ memset((PVOID)VCpu->MsrBitmapVirtualAddress, 0x0, 2048);
}
/**
* @brief Change MSR Bitmap for write
@@ -504,7 +504,7 @@ MsrHandlePerformMsrBitmapWriteChange(VIRTUAL_MACHINE_STATE * VCpu, UINT32 MsrMas
//
// Means all the bitmaps should be put to 1
//
- memset((void *)((UINT64)VCpu->MsrBitmapVirtualAddress + 2048), 0xff, 2048);
+ memset((PVOID)((UINT64)VCpu->MsrBitmapVirtualAddress + 2048), 0xff, 2048);
//
// Filter MSR Bitmap for special MSRs
@@ -533,5 +533,5 @@ MsrHandlePerformMsrBitmapWriteReset(VIRTUAL_MACHINE_STATE * VCpu)
//
// Means all the bitmaps should be put to 0
//
- memset((void *)((UINT64)VCpu->MsrBitmapVirtualAddress + 2048), 0x0, 2048);
+ memset((PVOID)((UINT64)VCpu->MsrBitmapVirtualAddress + 2048), 0x0, 2048);
}
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
index ad09ecda..ef43a11e 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file Vmx.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief VMX Instructions and VMX Related Functions
@@ -25,7 +25,7 @@ VmxCheckVmxSupport()
//
// Gets Processor Info and Feature Bits
//
- CpuCpuId((int *)&Data, 1);
+ CpuCpuId((INT *)&Data, 1);
//
// Check For VMX Bit CPUID.ECX[5]
@@ -132,7 +132,7 @@ VmxInitialize()
ProcessorsCount = KeQueryActiveProcessorCount(0);
- for (size_t ProcessorID = 0; ProcessorID < ProcessorsCount; ProcessorID++)
+ for (SIZE_T ProcessorID = 0; ProcessorID < ProcessorsCount; ProcessorID++)
{
//
// *** Launching VM for Test (in the all logical processor) ***
@@ -1034,7 +1034,7 @@ VmxPerformVmxoff(VIRTUAL_MACHINE_STATE * VCpu)
// since immediately after vmxoff, an interrupt might occur and context switch
// might change the XMM registers
//
- AsmVmxoffRestoreXmmRegs((unsigned long long)VCpu->XmmRegs);
+ AsmVmxoffRestoreXmmRegs((UINT64)VCpu->XmmRegs);
//
// Before using vmxoff, you first need to use vmclear on any VMCSes that you want to be able to use again.
@@ -1142,7 +1142,7 @@ VmxPerformTermination()
//
// Free Identity Page Table
//
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
if (g_GuestState[i].EptPageTable != NULL)
{
@@ -1273,9 +1273,9 @@ VmxCompatibleStrlen(const CHAR * S)
* string
*/
UINT32
-VmxCompatibleWcslen(const wchar_t * S)
+VmxCompatibleWcslen(const WCHAR * S)
{
- wchar_t Temp = NULL_ZERO;
+ WCHAR Temp = NULL_ZERO;
UINT32 Count = 0;
UINT64 AlignedAddress;
CR3_TYPE GuestCr3;
@@ -1299,7 +1299,7 @@ VmxCompatibleWcslen(const wchar_t * S)
//
// First check
//
- if (!CheckAccessValidityAndSafety(AlignedAddress, sizeof(wchar_t)))
+ if (!CheckAccessValidityAndSafety(AlignedAddress, sizeof(WCHAR)))
{
//
// Error
@@ -1317,7 +1317,7 @@ VmxCompatibleWcslen(const wchar_t * S)
/*
Temp = *S;
*/
- MemoryMapperReadMemorySafe((UINT64)S, &Temp, sizeof(wchar_t));
+ MemoryMapperReadMemorySafe((UINT64)S, &Temp, sizeof(WCHAR));
if (Temp != '\0\0')
{
@@ -1335,7 +1335,7 @@ VmxCompatibleWcslen(const wchar_t * S)
if (!((UINT64)S & (PAGE_SIZE - 1)))
{
- if (!CheckAccessValidityAndSafety((UINT64)S, sizeof(wchar_t)))
+ if (!CheckAccessValidityAndSafety((UINT64)S, sizeof(WCHAR)))
{
//
// Error
@@ -1528,12 +1528,12 @@ VmxCompatibleStrcmp(const CHAR * Address1,
* @return INT32 0x2 indicates error, otherwise the same result as wcscmp in string.h
*/
INT32
-VmxCompatibleWcscmp(const wchar_t * Address1,
- const wchar_t * Address2,
- SIZE_T Num,
- BOOLEAN IsWcsncmp)
+VmxCompatibleWcscmp(const WCHAR * Address1,
+ const WCHAR * Address2,
+ SIZE_T Num,
+ BOOLEAN IsWcsncmp)
{
- wchar_t C1 = NULL_ZERO, C2 = NULL_ZERO;
+ WCHAR C1 = NULL_ZERO, C2 = NULL_ZERO;
INT32 Result = 0;
UINT32 Count = 0;
UINT64 AlignedAddress1, AlignedAddress2;
@@ -1557,7 +1557,7 @@ VmxCompatibleWcscmp(const wchar_t * Address1,
//
// First check
//
- if (!CheckAccessValidityAndSafety(AlignedAddress1, sizeof(wchar_t)) || !CheckAccessValidityAndSafety(AlignedAddress2, sizeof(wchar_t)))
+ if (!CheckAccessValidityAndSafety(AlignedAddress1, sizeof(WCHAR)) || !CheckAccessValidityAndSafety(AlignedAddress2, sizeof(WCHAR)))
{
//
// Error
@@ -1596,19 +1596,19 @@ VmxCompatibleWcscmp(const wchar_t * Address1,
/*
C1 = *Address1;
*/
- MemoryMapperReadMemorySafe((UINT64)Address1, &C1, sizeof(wchar_t));
+ MemoryMapperReadMemorySafe((UINT64)Address1, &C1, sizeof(WCHAR));
/*
C2 = *Address2;
*/
- MemoryMapperReadMemorySafe((UINT64)Address2, &C2, sizeof(wchar_t));
+ MemoryMapperReadMemorySafe((UINT64)Address2, &C2, sizeof(WCHAR));
Address1++;
Address2++;
if (!((UINT64)AlignedAddress1 & (PAGE_SIZE - 1)))
{
- if (!CheckAccessValidityAndSafety((UINT64)AlignedAddress1, sizeof(wchar_t)))
+ if (!CheckAccessValidityAndSafety((UINT64)AlignedAddress1, sizeof(WCHAR)))
{
//
// Error
@@ -1624,7 +1624,7 @@ VmxCompatibleWcscmp(const wchar_t * Address1,
if (!((UINT64)AlignedAddress2 & (PAGE_SIZE - 1)))
{
- if (!CheckAccessValidityAndSafety((UINT64)AlignedAddress2, sizeof(wchar_t)))
+ if (!CheckAccessValidityAndSafety((UINT64)AlignedAddress2, sizeof(WCHAR)))
{
//
// Error
@@ -1666,7 +1666,7 @@ VmxCompatibleWcscmp(const wchar_t * Address1,
* @return INT32 0x2 indicates error, otherwise the same result as memcmp in string.h
*/
INT32
-VmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, size_t Count)
+VmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, SIZE_T Count)
{
CHAR C1 = NULL_ZERO, C2 = NULL_ZERO;
INT32 Result = 0;
@@ -1691,7 +1691,7 @@ VmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, size_t Count)
//
// First check
//
- if (!CheckAccessValidityAndSafety(AlignedAddress1, sizeof(wchar_t)) || !CheckAccessValidityAndSafety(AlignedAddress2, sizeof(wchar_t)))
+ if (!CheckAccessValidityAndSafety(AlignedAddress1, sizeof(WCHAR)) || !CheckAccessValidityAndSafety(AlignedAddress2, sizeof(WCHAR)))
{
//
// Error
@@ -1721,7 +1721,7 @@ VmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, size_t Count)
if (!((UINT64)AlignedAddress1 & (PAGE_SIZE - 1)))
{
- if (!CheckAccessValidityAndSafety((UINT64)AlignedAddress1, sizeof(wchar_t)))
+ if (!CheckAccessValidityAndSafety((UINT64)AlignedAddress1, sizeof(WCHAR)))
{
//
// Error
@@ -1737,7 +1737,7 @@ VmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, size_t Count)
if (!((UINT64)AlignedAddress2 & (PAGE_SIZE - 1)))
{
- if (!CheckAccessValidityAndSafety((UINT64)AlignedAddress2, sizeof(wchar_t)))
+ if (!CheckAccessValidityAndSafety((UINT64)AlignedAddress2, sizeof(WCHAR)))
{
//
// Error
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/VmxBroadcast.c b/hyperdbg/hyperhv/code/vmm/vmx/VmxBroadcast.c
index 6c17d923..6b23c7fa 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/VmxBroadcast.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/VmxBroadcast.c
@@ -157,7 +157,7 @@ VmxBroadcastNmi(VIRTUAL_MACHINE_STATE * VCpu, NMI_BROADCAST_ACTION_TYPE VmxBroad
//
// Indicate that we're waiting for NMI
//
- for (size_t i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
if (i != VCpu->CoreId)
{
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c b/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c
index 7fbb08fd..5d008d3f 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/VmxRegions.c
@@ -1,4 +1,4 @@
-/**
+/**
* @file VmxRegions.c
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief Implement allocations for VMX Regions (VMXON Region, VMCS, MSR Bitmap and etc.)
@@ -281,7 +281,7 @@ VmxAllocateInvalidMsrBimap()
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
- SetBit(i, (unsigned long *)InvalidMsrBitmap);
+ SetBit(i, (ULONG *)InvalidMsrBitmap);
}
}
diff --git a/hyperdbg/hyperhv/header/assembly/InlineAsm.h b/hyperdbg/hyperhv/header/assembly/InlineAsm.h
index 0f73671c..1ad0d1ce 100644
--- a/hyperdbg/hyperhv/header/assembly/InlineAsm.h
+++ b/hyperdbg/hyperhv/header/assembly/InlineAsm.h
@@ -20,13 +20,13 @@
* @brief Enable VMX Operation
*
*/
-extern void inline AsmEnableVmxOperation();
+extern VOID inline AsmEnableVmxOperation();
/**
* @brief Restore in vmxoff state
*
*/
-extern void inline AsmRestoreToVmxOffState();
+extern VOID inline AsmRestoreToVmxOffState();
/**
* @brief Request Vmcall
@@ -37,18 +37,18 @@ extern void inline AsmRestoreToVmxOffState();
* @param OptionalParam3
* @return NTSTATUS
*/
-extern NTSTATUS inline AsmVmxVmcall(unsigned long long VmcallNumber,
- unsigned long long OptionalParam1,
- unsigned long long OptionalParam2,
- long long OptionalParam3);
+extern NTSTATUS inline AsmVmxVmcall(UINT64 VmcallNumber,
+ UINT64 OptionalParam1,
+ UINT64 OptionalParam2,
+ INT64 OptionalParam3);
/**
* @brief Hyper-v vmcall handler
*
* @param GuestRegisters
- * @return void
+ * @return VOID
*/
-extern void inline AsmHypervVmcall(unsigned long long GuestRegisters);
+extern VOID inline AsmHypervVmcall(UINT64 GuestRegisters);
/**
* @brief VMFUNC instruction
@@ -56,9 +56,9 @@ extern void inline AsmHypervVmcall(unsigned long long GuestRegisters);
* @param EptpIndex
* @param Function
*
- * @return unsigned long long I'm not sure what it returns
+ * @return UINT64 I'm not sure what it returns
*/
-extern unsigned long long inline AsmVmfunc(unsigned long EptpIndex, unsigned long Function);
+extern UINT64 inline AsmVmfunc(ULONG EptpIndex, ULONG Function);
//
// ==================== Vmx Context State Operations ====================
@@ -69,14 +69,14 @@ extern unsigned long long inline AsmVmfunc(unsigned long EptpIndex, unsigned lon
* @brief Save state on vmx
*
*/
-extern void
+extern VOID
AsmVmxSaveState();
/**
* @brief Restore state on vmx
*
*/
-extern void
+extern VOID
AsmVmxRestoreState();
//
@@ -88,20 +88,20 @@ AsmVmxRestoreState();
* @brief Vm-exit handler
*
*/
-extern void
+extern VOID
AsmVmexitHandler();
/**
* @brief Save vmxoff state
*
*/
-extern void inline AsmSaveVmxOffState();
+extern VOID inline AsmSaveVmxOffState();
/**
* @brief Restore XMM registers
*
*/
-extern void inline AsmVmxoffRestoreXmmRegs(unsigned long long XmmRegs);
+extern VOID inline AsmVmxoffRestoreXmmRegs(UINT64 XmmRegs);
//
// ==================== Extended Page Tables ====================
@@ -113,18 +113,18 @@ extern void inline AsmVmxoffRestoreXmmRegs(unsigned long long XmmRegs);
*
* @param Type
* @param Descriptors
- * @return unsigned char
+ * @return UCHAR
*/
-extern unsigned char inline AsmInvept(unsigned long Type, void * Descriptors);
+extern UCHAR inline AsmInvept(ULONG Type, PVOID Descriptors);
/**
* @brief INVVPID wrapper
*
* @param Type
* @param Descriptors
- * @return unsigned char
+ * @return UCHAR
*/
-extern unsigned char inline AsmInvvpid(unsigned long Type, void * Descriptors);
+extern UCHAR inline AsmInvvpid(ULONG Type, PVOID Descriptors);
//
// ==================== Get segment registers ====================
@@ -136,77 +136,77 @@ extern unsigned char inline AsmInvvpid(unsigned long Type, void * Descriptors);
/**
* @brief Get CS Register
*
- * @return unsigned short
+ * @return UINT16
*/
-extern unsigned short
+extern UINT16
AsmGetCs();
/**
* @brief Get DS Register
*
- * @return unsigned short
+ * @return UINT16
*/
-extern unsigned short
+extern UINT16
AsmGetDs();
-extern void
-AsmSetDs(unsigned short DsSelector);
+extern VOID
+AsmSetDs(UINT16 DsSelector);
/**
* @brief Get ES Register
*
- * @return unsigned short
+ * @return UINT16
*/
-extern unsigned short
+extern UINT16
AsmGetEs();
-extern void
-AsmSetEs(unsigned short EsSelector);
+extern VOID
+AsmSetEs(UINT16 EsSelector);
/**
* @brief Get SS Register
*
- * @return unsigned short
+ * @return UINT16
*/
-extern unsigned short
+extern UINT16
AsmGetSs();
-extern void
-AsmSetSs(unsigned short SsSelector);
+extern VOID
+AsmSetSs(UINT16 SsSelector);
/**
* @brief Get FS Register
*
- * @return unsigned short
+ * @return UINT16
*/
-extern unsigned short
+extern UINT16
AsmGetFs();
-extern void
-AsmSetFs(unsigned short FsSelector);
+extern VOID
+AsmSetFs(UINT16 FsSelector);
/**
* @brief Get GS Register
*
- * @return unsigned short
+ * @return UINT16
*/
-extern unsigned short
+extern UINT16
AsmGetGs();
/**
* @brief Get LDTR Register
*
- * @return unsigned short
+ * @return UINT16
*/
-extern unsigned short
+extern UINT16
AsmGetLdtr();
/**
* @brief Get TR Register
*
- * @return unsigned short
+ * @return UINT16
*/
-extern unsigned short
+extern UINT16
AsmGetTr();
/* ******* Gdt related functions ******* */
@@ -214,16 +214,16 @@ AsmGetTr();
/**
* @brief get GDT base
*
- * @return unsigned long long
+ * @return UINT64
*/
-extern unsigned long long inline AsmGetGdtBase();
+extern UINT64 inline AsmGetGdtBase();
/**
* @brief Get GDT Limit
*
- * @return unsigned short
+ * @return UINT16
*/
-extern unsigned short
+extern UINT16
AsmGetGdtLimit();
/* ******* Idt related functions ******* */
@@ -231,20 +231,20 @@ AsmGetGdtLimit();
/**
* @brief Get IDT base
*
- * @return unsigned long long
+ * @return UINT64
*/
-extern unsigned long long inline AsmGetIdtBase();
+extern UINT64 inline AsmGetIdtBase();
/**
* @brief Get IDT limit
*
- * @return unsigned short
+ * @return UINT16
*/
-extern unsigned short
+extern UINT16
AsmGetIdtLimit();
extern UINT32
-AsmGetAccessRights(unsigned short Selector);
+AsmGetAccessRights(UINT16 Selector);
//
// ==================== Common Functions ====================
// File : AsmCommon.asm
@@ -253,22 +253,22 @@ AsmGetAccessRights(unsigned short Selector);
/**
* @brief Get R/EFLAGS
*
- * @return unsigned short
+ * @return UINT16
*/
-extern unsigned short
+extern UINT16
AsmGetRflags();
/**
* @brief Run CLI Instruction
*
*/
-extern void inline AsmCliInstruction();
+extern VOID inline AsmCliInstruction();
/**
* @brief Run STI Instruction
*
*/
-extern void inline AsmStiInstruction();
+extern VOID inline AsmStiInstruction();
/**
* @brief Reload new GDTR
@@ -276,23 +276,24 @@ extern void inline AsmStiInstruction();
* @param GdtBase
* @param GdtLimit
*/
-extern void
-AsmReloadGdtr(void * GdtBase, unsigned long GdtLimit);
+extern VOID
+AsmReloadGdtr(PVOID GdtBase, ULONG GdtLimit);
/**
* @brief Reload new IDTR
*
- * @param GdtBase
- * @param GdtLimit
+ * @param IdtrBase
+ * @param IdtrLimit
*/
-extern void
-AsmReloadIdtr(void * GdtBase, unsigned long GdtLimit);
+extern VOID
+AsmReloadIdtr(PVOID IdtrBase, ULONG IdtrLimit);
/**
* @brief Read SSP
*
+ * @return UINT64
*/
-extern unsigned long long
+extern UINT64
AsmReadSsp();
//
@@ -304,8 +305,8 @@ AsmReadSsp();
* @brief Detour hook handler
*
*/
-extern void
-AsmGeneralDetourHook(void);
+extern VOID
+ AsmGeneralDetourHook(VOID);
//
// ==================== Kernel Test Functions ====================
@@ -316,11 +317,11 @@ AsmGeneralDetourHook(void);
* @brief Tests with test tags wrapper
*
*/
-extern unsigned long long
-AsmTestWrapperWithTestTags(unsigned long long Param1,
- unsigned long long Param2,
- unsigned long long Param3,
- unsigned long long Param4);
+extern UINT64
+AsmTestWrapperWithTestTags(UINT64 Param1,
+ UINT64 Param2,
+ UINT64 Param3,
+ UINT64 Param4);
//
// ==================== Interrupt Handler Functions ====================
@@ -331,215 +332,215 @@ AsmTestWrapperWithTestTags(unsigned long long Param1,
* @brief The 0th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler0();
/**
* @brief The 1st entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler1();
/**
* @brief The 2nd entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler2();
/**
* @brief The 3rd entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler3();
/**
* @brief The 4th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler4();
/**
* @brief The 5th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler5();
/**
* @brief The 6th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler6();
/**
* @brief The 7th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler7();
/**
* @brief The 8th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler8();
/**
* @brief The 9th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler9();
/**
* @brief The 10th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler10();
/**
* @brief The 11th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler11();
/**
* @brief The 12th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler12();
/**
* @brief The 13th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler13();
/**
* @brief The 14th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler14();
/**
* @brief The 15th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler15();
/**
* @brief The 16th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler16();
/**
* @brief The 17th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler17();
/**
* @brief The 18th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler18();
/**
* @brief The 19th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler19();
/**
* @brief The 20th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler20();
/**
* @brief The 21st entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler21();
/**
* @brief The 22nd entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler22();
/**
* @brief The 23rd entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler23();
/**
* @brief The 24th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler24();
/**
* @brief The 25th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler25();
/**
* @brief The 26th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler26();
/**
* @brief The 27th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler27();
/**
* @brief The 28th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler28();
/**
* @brief The 29th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler29();
/**
* @brief The 30th entry in IDT
*
*/
-extern void
+extern VOID
InterruptHandler30();
diff --git a/hyperdbg/hyperhv/header/common/Bitwise.h b/hyperdbg/hyperhv/header/common/Bitwise.h
index 5e5e674a..13601671 100644
--- a/hyperdbg/hyperhv/header/common/Bitwise.h
+++ b/hyperdbg/hyperhv/header/common/Bitwise.h
@@ -15,11 +15,11 @@
// Functions //
//////////////////////////////////////////////////
-int
-TestBit(int BitNumber, unsigned long * Addr);
+INT
+TestBit(INT BitNumber, ULONG * Addr);
-void
-ClearBit(int BitNumber, unsigned long * Addr);
+VOID
+ClearBit(INT BitNumber, ULONG * Addr);
-void
-SetBit(int BitNumber, unsigned long * Addr);
+VOID
+SetBit(INT BitNumber, ULONG * Addr);
diff --git a/hyperdbg/hyperhv/header/common/Common.h b/hyperdbg/hyperhv/header/common/Common.h
index c7bc92f3..317e841c 100644
--- a/hyperdbg/hyperhv/header/common/Common.h
+++ b/hyperdbg/hyperhv/header/common/Common.h
@@ -42,8 +42,8 @@
*/
#define RPL_MASK 3
-#define BITS_PER_LONG (sizeof(unsigned long) * 8)
-#define ORDER_LONG (sizeof(unsigned long) == 4 ? 5 : 6)
+#define BITS_PER_LONG (sizeof(ULONG) * 8)
+#define ORDER_LONG (sizeof(ULONG) == 4 ? 5 : 6)
#define BITMAP_ENTRY(_nr, _bmap) ((_bmap))[(_nr) / BITS_PER_LONG]
#define BITMAP_SHIFT(_nr) ((_nr) % BITS_PER_LONG)
@@ -82,10 +82,10 @@ typedef SEGMENT_DESCRIPTOR_32 * PSEGMENT_DESCRIPTOR;
*/
typedef struct _CPUID
{
- int eax;
- int ebx;
- int ecx;
- int edx;
+ INT eax;
+ INT ebx;
+ INT ecx;
+ INT edx;
} CPUID, *PCPUID;
typedef union _CR_FIXED
@@ -94,8 +94,8 @@ typedef union _CR_FIXED
struct
{
- unsigned long Low;
- long High;
+ ULONG Low;
+ LONG High;
} Fields;
@@ -125,7 +125,7 @@ typedef struct _NT_KPROCESS
* @brief Prototype to run a function on a logical core
*
*/
-typedef void (*RunOnLogicalCoreFunc)(ULONG ProcessorId);
+typedef VOID (*RunOnLogicalCoreFunc)(ULONG ProcessorId);
//////////////////////////////////////////////////
// External Functions //
@@ -153,7 +153,7 @@ BOOLEAN
CommonAffinityBroadcastToProcessors(_In_ ULONG ProcessorNumber, _In_ RunOnLogicalCoreFunc Routine);
BOOLEAN
-CommonIsStringStartsWith(const char * pre, const char * str);
+CommonIsStringStartsWith(const CHAR * pre, const CHAR * str);
BOOLEAN
CommonIsGuestOnUsermode32Bit();
@@ -162,7 +162,7 @@ PCHAR
CommonGetProcessNameFromProcessControlBlock(PEPROCESS eprocess);
VOID
-CommonCpuidInstruction(UINT32 Func, UINT32 SubFunc, int * CpuInfo);
+CommonCpuidInstruction(UINT32 Func, UINT32 SubFunc, INT * CpuInfo);
VOID
CommonWriteDebugInformation(VIRTUAL_MACHINE_STATE * VCpu);
diff --git a/hyperdbg/hyperhv/header/common/UnloadDll.h b/hyperdbg/hyperhv/header/common/UnloadDll.h
index c6388ac7..2dc53a57 100644
--- a/hyperdbg/hyperhv/header/common/UnloadDll.h
+++ b/hyperdbg/hyperhv/header/common/UnloadDll.h
@@ -15,6 +15,7 @@
// Exported Functions //
//////////////////////////////////////////////////
-__declspec(dllexport) NTSTATUS DllInitialize(_In_ PUNICODE_STRING RegistryPath);
+__declspec(dllexport) NTSTATUS
+DllInitialize(_In_ PUNICODE_STRING RegistryPath);
-__declspec(dllexport) NTSTATUS DllUnload(void);
+__declspec(dllexport) NTSTATUS DllUnload(VOID);
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/IoHandler.h b/hyperdbg/hyperhv/header/vmm/vmx/IoHandler.h
index b879897c..20b698f6 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/IoHandler.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/IoHandler.h
@@ -57,55 +57,55 @@ IoInDword(UINT16 port)
return CpuIoInDword(port);
}
-inline void
+inline VOID
IoInByteString(UINT16 port, UINT8 * data, UINT32 size)
{
CpuIoInByteString(port, data, size);
}
-inline void
+inline VOID
IoInWordString(UINT16 port, UINT16 * data, UINT32 size)
{
CpuIoInWordString(port, data, size);
}
-inline void
+inline VOID
IoInDwordString(UINT16 port, UINT32 * data, UINT32 size)
{
CpuIoInDwordString(port, data, size);
}
-inline void
+inline VOID
IoOutByte(UINT16 port, UINT8 value)
{
CpuIoOutByte(port, value);
}
-inline void
+inline VOID
IoOutWord(UINT16 port, UINT16 value)
{
CpuIoOutWord(port, value);
}
-inline void
+inline VOID
IoOutDword(UINT16 port, UINT32 value)
{
CpuIoOutDword(port, value);
}
-inline void
+inline VOID
IoOutByteString(UINT16 port, UINT8 * data, UINT32 count)
{
CpuIoOutByteString(port, data, count);
}
-inline void
+inline VOID
IoOutWordString(UINT16 port, UINT16 * data, UINT32 count)
{
CpuIoOutWordString(port, data, count);
}
-inline void
+inline VOID
IoOutDwordString(UINT16 port, UINT32 * data, UINT32 count)
{
CpuIoOutDwordString(port, data, count);
diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h b/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h
index c6b69ea2..0ff36878 100644
--- a/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h
+++ b/hyperdbg/hyperhv/header/vmm/vmx/Vmx.h
@@ -302,7 +302,7 @@ UINT32
VmxCompatibleStrlen(const CHAR * S);
UINT32
-VmxCompatibleWcslen(const wchar_t * S);
+VmxCompatibleWcslen(const WCHAR * S);
INT32
VmxCompatibleStrcmp(const CHAR * Address1,
@@ -311,12 +311,12 @@ VmxCompatibleStrcmp(const CHAR * Address1,
BOOLEAN IsStrncmp);
INT32
-VmxCompatibleWcscmp(const wchar_t * Address1,
- const wchar_t * Address2,
- SIZE_T Num,
- BOOLEAN IsWcsncmp);
+VmxCompatibleWcscmp(const WCHAR * Address1,
+ const WCHAR * Address2,
+ SIZE_T Num,
+ BOOLEAN IsWcsncmp);
INT32
VmxCompatibleMemcmp(const CHAR * Address1,
const CHAR * Address2,
- size_t Count);
+ SIZE_T Count);
From 0cd11e136bdcd24026df189d6133776bab651f7a Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 31 May 2026 19:58:18 +0200
Subject: [PATCH 206/323] Fix build issues of the Intel PT in hypertrace
---
hyperdbg/hyperdbg.sln | 1 +
hyperdbg/hyperhv/header/assembly/InlineAsm.h | 2 +-
hyperdbg/hypertrace/code/api/PtApi.c | 2 +-
hyperdbg/hypertrace/code/pt/Pt.c | 16 +--
hyperdbg/hypertrace/header/pch.h | 28 ++---
hyperdbg/include/SDK/headers/PtDefinitions.h | 104 +++++++++---------
.../include/SDK/headers/RequestStructures.h | 4 +-
7 files changed, 73 insertions(+), 84 deletions(-)
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index ad1af362..0fc1d07d 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -62,6 +62,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "headers", "headers", "{D67D
include\SDK\Headers\Ioctls.h = include\SDK\Headers\Ioctls.h
include\SDK\headers\LbrDefinitions.h = include\SDK\headers\LbrDefinitions.h
include\SDK\headers\Pcie.h = include\SDK\headers\Pcie.h
+ include\SDK\headers\PtDefinitions.h = include\SDK\headers\PtDefinitions.h
include\SDK\Headers\RequestStructures.h = include\SDK\Headers\RequestStructures.h
include\SDK\Headers\ScriptEngineCommonDefinitions.h = include\SDK\Headers\ScriptEngineCommonDefinitions.h
include\SDK\Headers\Symbols.h = include\SDK\Headers\Symbols.h
diff --git a/hyperdbg/hyperhv/header/assembly/InlineAsm.h b/hyperdbg/hyperhv/header/assembly/InlineAsm.h
index 1ad0d1ce..8bc23ba7 100644
--- a/hyperdbg/hyperhv/header/assembly/InlineAsm.h
+++ b/hyperdbg/hyperhv/header/assembly/InlineAsm.h
@@ -40,7 +40,7 @@ extern VOID inline AsmRestoreToVmxOffState();
extern NTSTATUS inline AsmVmxVmcall(UINT64 VmcallNumber,
UINT64 OptionalParam1,
UINT64 OptionalParam2,
- INT64 OptionalParam3);
+ UINT64 OptionalParam3);
/**
* @brief Hyper-v vmcall handler
diff --git a/hyperdbg/hypertrace/code/api/PtApi.c b/hyperdbg/hypertrace/code/api/PtApi.c
index c68ce1c5..054b5d64 100644
--- a/hyperdbg/hypertrace/code/api/PtApi.c
+++ b/hyperdbg/hypertrace/code/api/PtApi.c
@@ -405,7 +405,7 @@ HyperTracePtFlush(HYPERTRACE_PT_OPERATION_PACKETS * HyperTraceOperationRequest)
BOOLEAN
HyperTracePtFilter(HYPERTRACE_PT_OPERATION_PACKETS * Req)
{
- PT_FILTER_OPTIONS FilterOptions = {0};
+ PT_FILTER_OPTIONS FilterOptions = {0};
BOOLEAN WasEnabled = g_ProcessorTraceEnabled;
BOOLEAN BufferChanged = FALSE;
UINT64 ExistingSize = 0;
diff --git a/hyperdbg/hypertrace/code/pt/Pt.c b/hyperdbg/hypertrace/code/pt/Pt.c
index 11bff50d..d575dbab 100644
--- a/hyperdbg/hypertrace/code/pt/Pt.c
+++ b/hyperdbg/hypertrace/code/pt/Pt.c
@@ -109,12 +109,12 @@ PtVaToPa(PVOID Va)
* @return INT32 0 on success, -1 on failure (outputs untouched).
*/
static INT32
-PtMmapCpuRegionToUser(PVOID MainVa,
- UINT64 MainPhysical,
- SIZE_T MainSize,
- UINT64 OverflowPhysical,
- SIZE_T OverflowSize,
- PMDL * OutMdl,
+PtMmapCpuRegionToUser(PVOID MainVa,
+ UINT64 MainPhysical,
+ SIZE_T MainSize,
+ UINT64 OverflowPhysical,
+ SIZE_T OverflowSize,
+ PMDL * OutMdl,
PVOID * OutUserVa)
{
SIZE_T TotalSize = MainSize + OverflowSize;
@@ -1429,8 +1429,8 @@ PtFilter(const PT_FILTER_OPTIONS * FilterOptions)
//
// Apply only the user-tunable fields to this CPU's per-CPU config.
//
- Cpu->Config.TraceUser = FilterOptions->TraceUser;
- Cpu->Config.TraceKernel = FilterOptions->TraceKernel;
+ Cpu->Config.TraceUser = FilterOptions->TraceUser;
+ Cpu->Config.TraceKernel = FilterOptions->TraceKernel;
if (FilterOptions->TargetCr3 != 0 && !Caps.Cr3Filtering)
{
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index 871e2aed..e855144b 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -67,6 +67,14 @@
#include "platform/kernel/header/PlatformIo.h"
#include "platform/kernel/header/PlatformEvent.h"
+//
+// Definition of tracing types and structures (Processor Trace).
+// Pt.h must come before broadcast/Broadcast.h because Broadcast.h
+// references PT_FILTER_OPTIONS in its function signatures.
+//
+#include "pt/Pt.h"
+#include "api/PtApi.h"
+
//
// DPC and broadcasting function headers
//
@@ -105,26 +113,6 @@
#include "lbr/Lbr.h"
#include "api/LbrApi.h"
-//
-// Definition of tracing types and structures (Processor Trace).
-// Pt.h must come before broadcast/Broadcast.h because Broadcast.h
-// references PT_FILTER_OPTIONS in its function signatures.
-//
-#include "pt/Pt.h"
-#include "api/PtApi.h"
-
-//
-// DPC and broadcasting function headers
-//
-#include "broadcast/Dpc.h"
-#include "broadcast/DpcRoutines.h"
-#include "broadcast/Broadcast.h"
-
-//
-// Unload function (to be called when the driver is unloaded)
-//
-#include "common/UnloadDll.h"
-
//
// Export functions
//
diff --git a/hyperdbg/include/SDK/headers/PtDefinitions.h b/hyperdbg/include/SDK/headers/PtDefinitions.h
index ee02d613..da93f642 100644
--- a/hyperdbg/include/SDK/headers/PtDefinitions.h
+++ b/hyperdbg/include/SDK/headers/PtDefinitions.h
@@ -91,30 +91,30 @@ typedef union _PT_RTIT_CTL_REGISTER
{
struct
{
- UINT64 TraceEn : 1; /* [0] Enable tracing */
- UINT64 CycEn : 1; /* [1] CYC packets */
- UINT64 Os : 1; /* [2] Trace CPL 0 */
- UINT64 User : 1; /* [3] Trace CPL > 0 */
- UINT64 PwrEvtEn : 1; /* [4] Power event trace */
- UINT64 FupOnPtw : 1; /* [5] FUP on PTWRITE */
- UINT64 FabricEn : 1; /* [6] Trace to fabric (must be 0) */
+ UINT64 TraceEn : 1; /* [0] Enable tracing */
+ UINT64 CycEn : 1; /* [1] CYC packets */
+ UINT64 Os : 1; /* [2] Trace CPL 0 */
+ UINT64 User : 1; /* [3] Trace CPL > 0 */
+ UINT64 PwrEvtEn : 1; /* [4] Power event trace */
+ UINT64 FupOnPtw : 1; /* [5] FUP on PTWRITE */
+ UINT64 FabricEn : 1; /* [6] Trace to fabric (must be 0) */
UINT64 Cr3Filter : 1; /* [7] Filter by CR3 */
- UINT64 ToPA : 1; /* [8] Use ToPA output scheme */
- UINT64 MtcEn : 1; /* [9] MTC packets */
- UINT64 TscEn : 1; /* [10] TSC packets */
- UINT64 DisRetc : 1; /* [11] Disable RET compression */
- UINT64 PtwEn : 1; /* [12] PTWRITE packets */
- UINT64 BranchEn : 1; /* [13] Branch trace (TNT, TIP, FUP) */
- UINT64 MtcFreq : 4; /* [14:17] MTC frequency */
+ UINT64 ToPA : 1; /* [8] Use ToPA output scheme */
+ UINT64 MtcEn : 1; /* [9] MTC packets */
+ UINT64 TscEn : 1; /* [10] TSC packets */
+ UINT64 DisRetc : 1; /* [11] Disable RET compression */
+ UINT64 PtwEn : 1; /* [12] PTWRITE packets */
+ UINT64 BranchEn : 1; /* [13] Branch trace (TNT, TIP, FUP) */
+ UINT64 MtcFreq : 4; /* [14:17] MTC frequency */
UINT64 Reserved0 : 1; /* [18] Must be 0 */
UINT64 CycThresh : 4; /* [19:22] CYC threshold */
UINT64 Reserved1 : 1; /* [23] Must be 0 */
- UINT64 PsbFreq : 4; /* [24:27] PSB frequency */
+ UINT64 PsbFreq : 4; /* [24:27] PSB frequency */
UINT64 Reserved2 : 4; /* [28:31] Must be 0 */
- UINT64 Addr0Cfg : 4; /* [32:35] Range 0 mode (1=filter / 2=stop) */
- UINT64 Addr1Cfg : 4; /* [36:39] Range 1 mode */
- UINT64 Addr2Cfg : 4; /* [40:43] Range 2 mode */
- UINT64 Addr3Cfg : 4; /* [44:47] Range 3 mode */
+ UINT64 Addr0Cfg : 4; /* [32:35] Range 0 mode (1=filter / 2=stop) */
+ UINT64 Addr1Cfg : 4; /* [36:39] Range 1 mode */
+ UINT64 Addr2Cfg : 4; /* [40:43] Range 2 mode */
+ UINT64 Addr3Cfg : 4; /* [44:47] Range 3 mode */
UINT64 Reserved3 : 16; /* [48:63] Must be 0 */
};
UINT64 Value;
@@ -128,17 +128,17 @@ typedef union _PT_RTIT_STATUS_REGISTER
{
struct
{
- UINT64 FilterEn : 1; /* [0] RO: IP filter allowing trace */
- UINT64 ContextEn : 1; /* [1] RO: Context (CR3) allowing trace */
- UINT64 TriggerEn : 1; /* [2] RO: Trigger conditions met */
- UINT64 Reserved0 : 1; /* [3] Must be 0 */
- UINT64 Error : 1; /* [4] RO/Sticky: Operational error */
- UINT64 Stopped : 1; /* [5] RO: TraceStop hit */
- UINT64 PendTopaPmi : 1; /* [6] RW: ToPA PMI pending — clear this */
- UINT64 PendPsbPmi : 1; /* [7] RW: PSB+ PMI pending — clear this */
- UINT64 Reserved1 : 24; /* [8:31] Must be 0 */
+ UINT64 FilterEn : 1; /* [0] RO: IP filter allowing trace */
+ UINT64 ContextEn : 1; /* [1] RO: Context (CR3) allowing trace */
+ UINT64 TriggerEn : 1; /* [2] RO: Trigger conditions met */
+ UINT64 Reserved0 : 1; /* [3] Must be 0 */
+ UINT64 Error : 1; /* [4] RO/Sticky: Operational error */
+ UINT64 Stopped : 1; /* [5] RO: TraceStop hit */
+ UINT64 PendTopaPmi : 1; /* [6] RW: ToPA PMI pending — clear this */
+ UINT64 PendPsbPmi : 1; /* [7] RW: PSB+ PMI pending — clear this */
+ UINT64 Reserved1 : 24; /* [8:31] Must be 0 */
UINT64 PacketByteCnt : 17; /* [32:48] Bytes since last PSB */
- UINT64 Reserved2 : 15; /* [49:63] Must be 0 */
+ UINT64 Reserved2 : 15; /* [49:63] Must be 0 */
};
UINT64 Value;
} PT_RTIT_STATUS_REGISTER, *PPT_RTIT_STATUS_REGISTER;
@@ -151,9 +151,9 @@ typedef union _PT_OUTPUT_MASK_PTRS_REGISTER
{
struct
{
- UINT64 LowerMask : 7; /* [0:6] Forced to 0x7F */
+ UINT64 LowerMask : 7; /* [0:6] Forced to 0x7F */
UINT64 MaskOrTableOffset : 25; /* [7:31] ToPA: table entry index */
- UINT64 OutputOffset : 32; /* [32:63] Byte offset in current entry */
+ UINT64 OutputOffset : 32; /* [32:63] Byte offset in current entry */
};
UINT64 Value;
} PT_OUTPUT_MASK_PTRS_REGISTER, *PPT_OUTPUT_MASK_PTRS_REGISTER;
@@ -166,15 +166,15 @@ typedef union _PT_TOPA_ENTRY
{
struct
{
- UINT64 End : 1; /* [0] Last entry — wraps to next table */
+ UINT64 End : 1; /* [0] Last entry — wraps to next table */
UINT64 Reserved0 : 1; /* [1] Must be 0 */
- UINT64 Int : 1; /* [2] Generate PMI when region fills */
+ UINT64 Int : 1; /* [2] Generate PMI when region fills */
UINT64 Reserved1 : 1; /* [3] Must be 0 */
- UINT64 Stop : 1; /* [4] Stop tracing when region fills */
+ UINT64 Stop : 1; /* [4] Stop tracing when region fills */
UINT64 Reserved2 : 1; /* [5] Must be 0 */
- UINT64 Size : 4; /* [6:9] Region size (4K*2^N) */
+ UINT64 Size : 4; /* [6:9] Region size (4K*2^N) */
UINT64 Reserved3 : 2; /* [10:11] Must be 0 */
- UINT64 BaseAddr : 36; /* [12:47] Physical address >> 12 */
+ UINT64 BaseAddr : 36; /* [12:47] Physical address >> 12 */
UINT64 Reserved4 : 16; /* [48:63] Must be 0 */
};
UINT64 Value;
@@ -189,24 +189,24 @@ typedef union _PT_TOPA_ENTRY
*/
typedef struct _PT_CAPABILITIES
{
- UINT32 Cr3Filtering : 1; /* Can filter by process CR3 */
+ UINT32 Cr3Filtering : 1; /* Can filter by process CR3 */
UINT32 PsbCycConfigurable : 1; /* PSBFreq and CYC configurable */
- UINT32 IpFiltering : 1; /* IP filtering and TraceStop supported */
- UINT32 MtcSupport : 1; /* MTC packets supported */
- UINT32 PtwriteSupport : 1; /* PTWRITE instruction supported */
- UINT32 PowerEventTrace : 1; /* Power event trace supported */
- UINT32 VmxSupport : 1; /* PT works in VMX operations */
- UINT32 TopaOutput : 1; /* ToPA output scheme supported */
- UINT32 TopaMultiEntry : 1; /* ToPA tables can have >1 entry */
- UINT32 SingleRangeOutput : 1; /* Single contiguous range output */
- UINT32 TransportOutput : 1; /* Trace transport subsystem output */
- UINT32 IpPayloadsAreLip : 1; /* IP payloads are LIP (not RIP) */
- UINT32 Reserved : 20;
+ UINT32 IpFiltering : 1; /* IP filtering and TraceStop supported */
+ UINT32 MtcSupport : 1; /* MTC packets supported */
+ UINT32 PtwriteSupport : 1; /* PTWRITE instruction supported */
+ UINT32 PowerEventTrace : 1; /* Power event trace supported */
+ UINT32 VmxSupport : 1; /* PT works in VMX operations */
+ UINT32 TopaOutput : 1; /* ToPA output scheme supported */
+ UINT32 TopaMultiEntry : 1; /* ToPA tables can have >1 entry */
+ UINT32 SingleRangeOutput : 1; /* Single contiguous range output */
+ UINT32 TransportOutput : 1; /* Trace transport subsystem output */
+ UINT32 IpPayloadsAreLip : 1; /* IP payloads are LIP (not RIP) */
+ UINT32 Reserved : 20;
- UINT32 NumAddrRanges; /* Number of ADDRn_CFG pairs (0-4) */
- UINT16 MtcPeriodBitmap; /* Supported MTC period values */
- UINT16 CycThresholdBitmap; /* Supported CYC threshold values */
- UINT16 PsbFreqBitmap; /* Supported PSB frequency values */
+ UINT32 NumAddrRanges; /* Number of ADDRn_CFG pairs (0-4) */
+ UINT16 MtcPeriodBitmap; /* Supported MTC period values */
+ UINT16 CycThresholdBitmap; /* Supported CYC threshold values */
+ UINT16 PsbFreqBitmap; /* Supported PSB frequency values */
} PT_CAPABILITIES, *PPT_CAPABILITIES;
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index 192a43c5..ef219991 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -1394,8 +1394,8 @@ typedef struct _HYPERTRACE_PT_OPERATION_PACKETS
//
// SIZE output: per-CPU bytes-written snapshot
//
- UINT32 NumCpus; /* CPUs populated in BytesPerCpu */
- UINT32 Reserved2; /* Padding to 8-align the array */
+ UINT32 NumCpus; /* CPUs populated in BytesPerCpu */
+ UINT32 Reserved2; /* Padding to 8-align the array */
UINT64 BytesPerCpu[PT_MAX_CPUS_FOR_MMAP];
} HYPERTRACE_PT_OPERATION_PACKETS, *PHYPERTRACE_PT_OPERATION_PACKETS;
From e0af5afd4f23e5a196b9287c79a3d46e309fd8be Mon Sep 17 00:00:00 2001
From: sina
Date: Sun, 31 May 2026 21:03:02 +0200
Subject: [PATCH 207/323] fix independently unloading the kd module
---
.../SDK/imports/user/HyperDbgLibImports.h | 5 +++-
hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 29 +++++++++++++++----
.../commands/debugging-commands/exit.cpp | 8 +++++
.../commands/debugging-commands/unload.cpp | 14 +++++++--
hyperdbg/libhyperdbg/code/export/export.cpp | 19 +++++++++---
hyperdbg/libhyperdbg/header/libhyperdbg.h | 5 +++-
6 files changed, 66 insertions(+), 14 deletions(-)
diff --git a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
index ca498404..467a3bd7 100644
--- a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
+++ b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
@@ -42,6 +42,9 @@ hyperdbg_u_load_vmm();
IMPORT_EXPORT_LIBHYPERDBG INT
hyperdbg_u_unload_vmm();
+IMPORT_EXPORT_LIBHYPERDBG INT
+hyperdbg_u_unload_kd();
+
IMPORT_EXPORT_LIBHYPERDBG INT
hyperdbg_u_install_kd_driver();
@@ -49,7 +52,7 @@ IMPORT_EXPORT_LIBHYPERDBG INT
hyperdbg_u_uninstall_kd_driver();
IMPORT_EXPORT_LIBHYPERDBG INT
-hyperdbg_u_stop_vmm_driver();
+hyperdbg_u_stop_kd_driver();
IMPORT_EXPORT_LIBHYPERDBG GENERIC_PROCESSOR_VENDOR
hyperdbg_u_get_processor_vendor();
diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
index 82239fde..cb099b32 100644
--- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
+++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
@@ -108,13 +108,12 @@ HyperDbgStopDriver(LPCTSTR DriverName)
}
/**
- * @brief Stop VMM driver
+ * @brief Stop KD driver
*
- * @return INT return zero if it was successful or non-zero if there
- * was error
+ * @return INT return zero if it was successful or non-zero if there was error
*/
INT
-HyperDbgStopVmmDriver()
+HyperDbgStopKdDriver()
{
return HyperDbgStopDriver(g_DriverName);
}
@@ -423,7 +422,25 @@ HyperDbgUnloadVmm()
//
g_IsVmxOffProcessStart = TRUE;
- Sleep(1000); // Wait so next thread can return from IRP Pending
+ //
+ // Hypervisor (VMM) module is not loaded anymore
+ //
+ g_IsVmmModuleLoaded = FALSE;
+
+ ShowMessages("you're not on HyperDbg's hypervisor anymore!\n");
+
+ return 0;
+}
+
+/**
+ * @brief Unload KD driver
+ *
+ * @return INT return zero if it was successful or non-zero if there was error
+ */
+INT
+HyperDbgUnloadKd()
+{
+ AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnOne);
//
// Send IRP_MJ_CLOSE to driver to terminate Vmxs
@@ -450,7 +467,7 @@ HyperDbgUnloadVmm()
//
SymbolDeleteSymTable();
- ShowMessages("you're not on HyperDbg's hypervisor anymore!\n");
+ ShowMessages("the debugger module is unloaded!\n");
return 0;
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/exit.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/exit.cpp
index 45f315e5..00c74c82 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/exit.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/exit.cpp
@@ -62,7 +62,15 @@ CommandExit(vector CommandTokens, string Command)
//
if (g_DeviceHandle)
{
+ //
+ // Unload the VMM module first because it is using the driver and then unload the KD module
+ //
HyperDbgUnloadVmm();
+
+ //
+ // Unload the KD module
+ //
+ HyperDbgUnloadKd();
}
}
else if (g_IsSerialConnectedToRemoteDebuggee)
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp
index 25b37947..255e91ce 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/unload.cpp
@@ -16,6 +16,7 @@
//
extern BOOLEAN g_IsConnectedToHyperDbgLocally;
extern BOOLEAN g_IsKdModuleLoaded;
+extern BOOLEAN g_IsVmmModuleLoaded;
extern BOOLEAN g_IsSerialConnectedToRemoteDebuggee;
extern BOOLEAN g_IsSerialConnectedToRemoteDebugger;
@@ -81,7 +82,7 @@ CommandUnload(vector CommandTokens, string Command)
return;
}
- if (g_IsKdModuleLoaded)
+ if (g_IsVmmModuleLoaded)
{
HyperDbgUnloadVmm();
}
@@ -95,10 +96,19 @@ CommandUnload(vector CommandTokens, string Command)
//
if (CompareLowerCaseStrings(CommandTokens.at(1), "remove"))
{
+ //
+ // Unload the KD module
+ //
+ if (HyperDbgUnloadKd())
+ {
+ ShowMessages("err, failed to unload the kd (kernel debugger) driver\n");
+ return;
+ }
+
//
// Stop the driver
//
- if (HyperDbgStopVmmDriver())
+ if (HyperDbgStopKdDriver())
{
ShowMessages("err, failed to stop driver\n");
return;
diff --git a/hyperdbg/libhyperdbg/code/export/export.cpp b/hyperdbg/libhyperdbg/code/export/export.cpp
index 71cb064d..8328e978 100644
--- a/hyperdbg/libhyperdbg/code/export/export.cpp
+++ b/hyperdbg/libhyperdbg/code/export/export.cpp
@@ -53,7 +53,7 @@ hyperdbg_u_load_vmm()
}
/**
- * @brief Unload the VMM
+ * @brief Unload the VMM module
*
* @return INT Returns 0 if it was successful and 1 if it was failed
*/
@@ -63,6 +63,17 @@ hyperdbg_u_unload_vmm()
return HyperDbgUnloadVmm();
}
+/**
+ * @brief Unload the KD module
+ *
+ * @return INT Returns 0 if it was successful and 1 if it was failed
+ */
+INT
+hyperdbg_u_unload_kd()
+{
+ return HyperDbgUnloadKd();
+}
+
/**
* @brief Install the KD driver
*
@@ -86,14 +97,14 @@ hyperdbg_u_uninstall_kd_driver()
}
/**
- * @brief Stop the VMM driver
+ * @brief Stop the KD driver
*
* @return INT Returns 0 if it was successful and 1 if it was failed
*/
INT
-hyperdbg_u_stop_vmm_driver()
+hyperdbg_u_stop_kd_driver()
{
- return HyperDbgStopVmmDriver();
+ return HyperDbgStopKdDriver();
}
/**
diff --git a/hyperdbg/libhyperdbg/header/libhyperdbg.h b/hyperdbg/libhyperdbg/header/libhyperdbg.h
index 2a112eed..6d83b73c 100644
--- a/hyperdbg/libhyperdbg/header/libhyperdbg.h
+++ b/hyperdbg/libhyperdbg/header/libhyperdbg.h
@@ -21,6 +21,9 @@ HyperDbgInitHyperTraceModule();
INT
HyperDbgUnloadVmm();
+INT
+HyperDbgUnloadKd();
+
INT
HyperDbgInstallKdDriver();
@@ -37,7 +40,7 @@ INT
HyperDbgLoadHyperTraceModule();
INT
-HyperDbgStopVmmDriver();
+HyperDbgStopKdDriver();
INT
HyperDbgInterpreter(CHAR * Command);
From 7592b1297962399f5869d6eb6c6584c207e58a86 Mon Sep 17 00:00:00 2001
From: maxraulea
Date: Thu, 28 May 2026 21:39:18 +0200
Subject: [PATCH 208/323] SDK export Linux compatibility
---
.../SDK/imports/user/HyperDbgLibImports.h | 17 +++++++++++++----
.../SDK/imports/user/HyperDbgScriptImports.h | 16 +++++++++++++---
.../SDK/imports/user/HyperDbgSymImports.h | 16 +++++++++++++---
3 files changed, 39 insertions(+), 10 deletions(-)
diff --git a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
index 467a3bd7..0a3dea02 100644
--- a/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
+++ b/hyperdbg/include/SDK/imports/user/HyperDbgLibImports.h
@@ -10,12 +10,21 @@
*/
#pragma once
-#ifdef HYPERDBG_LIBHYPERDBG
-# define IMPORT_EXPORT_LIBHYPERDBG __declspec(dllexport)
+#ifdef _WIN32
+ // MSVC (Windows)
+# ifdef HYPERDBG_LIBHYPERDBG
+# define IMPORT_EXPORT_LIBHYPERDBG __declspec(dllexport)
+# else
+# define IMPORT_EXPORT_LIBHYPERDBG __declspec(dllimport)
+# endif
#else
-# define IMPORT_EXPORT_LIBHYPERDBG __declspec(dllimport)
+ // GCC/Clang (Linux)
+# ifdef HYPERDBG_LIBHYPERDBG
+# define IMPORT_EXPORT_LIBHYPERDBG __attribute__((visibility("default")))
+# else
+# define IMPORT_EXPORT_LIBHYPERDBG
+# endif
#endif
-
//
// Header file of libhyperdbg
// Imports
diff --git a/hyperdbg/include/SDK/imports/user/HyperDbgScriptImports.h b/hyperdbg/include/SDK/imports/user/HyperDbgScriptImports.h
index 29f188fc..c40e2ff2 100644
--- a/hyperdbg/include/SDK/imports/user/HyperDbgScriptImports.h
+++ b/hyperdbg/include/SDK/imports/user/HyperDbgScriptImports.h
@@ -10,10 +10,20 @@
*/
#pragma once
-#ifdef HYPERDBG_SCRIPT_ENGINE
-# define IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE __declspec(dllexport)
+#ifdef _WIN32
+ // MSVC (Windows)
+# ifdef HYPERDBG_SCRIPT_ENGINE
+# define IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE __declspec(dllexport)
+# else
+# define IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE __declspec(dllimport)
+# endif
#else
-# define IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE __declspec(dllimport)
+ // GCC/Clang (Linux)
+# ifdef HYPERDBG_SCRIPT_ENGINE
+# define IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE __attribute__((visibility("default")))
+# else
+# define IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE
+# endif
#endif
//
diff --git a/hyperdbg/include/SDK/imports/user/HyperDbgSymImports.h b/hyperdbg/include/SDK/imports/user/HyperDbgSymImports.h
index 98d97b53..ca5db507 100644
--- a/hyperdbg/include/SDK/imports/user/HyperDbgSymImports.h
+++ b/hyperdbg/include/SDK/imports/user/HyperDbgSymImports.h
@@ -10,10 +10,20 @@
*/
#pragma once
-#ifdef HYPERDBG_SYMBOL_PARSER
-# define IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER __declspec(dllexport)
+#ifdef _WIN32
+ // MSVC (Windows)
+# ifdef HYPERDBG_SYMBOL_PARSER
+# define IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER __declspec(dllexport)
+# else
+# define IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER __declspec(dllimport)
+# endif
#else
-# define IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER __declspec(dllimport)
+ // GCC/Clang (Linux)
+# ifdef HYPERDBG_SYMBOL_PARSER
+# define IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER __attribute__((visibility("default")))
+# else
+# define IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER
+# endif
#endif
//
From bca5a245a7a16fbfd531c119705c2edc38f409ce Mon Sep 17 00:00:00 2001
From: maxraulea
Date: Thu, 28 May 2026 21:45:22 +0200
Subject: [PATCH 209/323] Linux Compatibility hyperdbg-cli.cpp
---
hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp b/hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp
index 802a76e1..98a76774 100644
--- a/hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp
+++ b/hyperdbg/hyperdbg-cli/hyperdbg-cli.cpp
@@ -10,11 +10,15 @@
*
*/
+#ifdef _WIN32
#include
-#include
#include
+#endif
+
+#include
#include
#include
+#include
#include "SDK/HyperDbgSdk.h"
#include "SDK/imports/user/HyperDbgLibImports.h"
@@ -38,7 +42,9 @@ main(int argc, char * argv[])
//
// Set console output code page to UTF-8
//
+#ifdef _WIN32
SetConsoleOutputCP(CP_UTF8);
+#endif
printf("HyperDbg Debugger [version: %s, build: %s]\n", CompleteVersion, BuildVersion);
printf("Please visit https://docs.hyperdbg.org for more information...\n");
From 6b0ebd3e47135680ff367742cdd4436e7621adfe Mon Sep 17 00:00:00 2001
From: maxraulea
Date: Thu, 28 May 2026 21:46:55 +0200
Subject: [PATCH 210/323] Linux Compatibility script-engine headers
---
hyperdbg/script-engine/header/pch.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hyperdbg/script-engine/header/pch.h b/hyperdbg/script-engine/header/pch.h
index 2b4f8f30..5d52c1cf 100644
--- a/hyperdbg/script-engine/header/pch.h
+++ b/hyperdbg/script-engine/header/pch.h
@@ -29,7 +29,10 @@
//
// Windows Header Files
//
+#ifdef _WIN32
#include
+#endif
+
#include
#include
#include
From 25371439df3c22169386f76ca7c00d66906c0cd5 Mon Sep 17 00:00:00 2001
From: maxraulea
Date: Sun, 31 May 2026 21:17:03 +0200
Subject: [PATCH 211/323] Added Linux distinction for generating build files
---
hyperdbg/CMakeLists.txt | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/hyperdbg/CMakeLists.txt b/hyperdbg/CMakeLists.txt
index 8b460c13..dce26678 100644
--- a/hyperdbg/CMakeLists.txt
+++ b/hyperdbg/CMakeLists.txt
@@ -5,7 +5,12 @@ set(CMAKE_CXX_STANDARD 23)
enable_language(ASM_MASM)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
+if(LINUX)
+
+ add_subdirectory(script-engine)
+ message(STATUS "Building on Linux")
+elseif(WIN32)
+ message(STATUS "Building on Windows")
find_package(WDK REQUIRED)
include_directories(
@@ -55,7 +60,6 @@ add_subdirectory(symbol-parser)
target_link_libraries(symbol-parser pdbex)
-add_subdirectory(script-engine)
target_link_libraries(script-engine symbol-parser)
link_directories(libraries/zydis/user libraries/keystone/release-lib)
@@ -65,6 +69,21 @@ target_link_libraries(libhyperdbg Zycore Zydis script-engine keystone)
add_subdirectory(hyperdbg-test)
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
+
+add_subdirectory(symbol-parser)
+target_link_libraries(symbol-parser pdbex)
+
+
+add_subdirectory(script-engine)
+target_link_libraries(script-engine symbol-parser)
+
+link_directories(libraries/zydis/user libraries/keystone/release-lib)
+add_subdirectory(libhyperdbg)
+target_link_libraries(libhyperdbg Zycore Zydis script-engine keystone)
+endif()
+
+
add_subdirectory(hyperdbg-cli)
target_link_libraries(hyperdbg-cli libhyperdbg)
From d6f56065d5f73d34cda558543545b21379dfdb65 Mon Sep 17 00:00:00 2001
From: Masoud Rahimi Jafari
Date: Mon, 1 Jun 2026 11:21:00 +0200
Subject: [PATCH 212/323] Changed intel pt files author email
---
hyperdbg/hypertrace/code/api/PtApi.c | 2 +-
hyperdbg/hypertrace/code/pt/Pt.c | 2 +-
hyperdbg/hypertrace/header/api/PtApi.h | 2 +-
hyperdbg/hypertrace/header/pt/Pt.h | 2 +-
hyperdbg/include/SDK/headers/PtDefinitions.h | 2 +-
.../code/debugger/commands/extension-commands/pt.cpp | 2 +-
6 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/hyperdbg/hypertrace/code/api/PtApi.c b/hyperdbg/hypertrace/code/api/PtApi.c
index d1c2297a..c09b295b 100644
--- a/hyperdbg/hypertrace/code/api/PtApi.c
+++ b/hyperdbg/hypertrace/code/api/PtApi.c
@@ -1,6 +1,6 @@
/**
* @file PtApi.c
- * @author Sina Karvandi (sina@hyperdbg.org)
+ * @author Masoud Rahimi Jafari (Masoodrahimy1379@gmail.com)
* @brief Tracing routines for HyperTrace module (Intel Processor Trace)
* @details
* @version 0.19
diff --git a/hyperdbg/hypertrace/code/pt/Pt.c b/hyperdbg/hypertrace/code/pt/Pt.c
index 11bff50d..97c66007 100644
--- a/hyperdbg/hypertrace/code/pt/Pt.c
+++ b/hyperdbg/hypertrace/code/pt/Pt.c
@@ -1,6 +1,6 @@
/**
* @file Pt.c
- * @author Sina Karvandi (sina@hyperdbg.org)
+ * @author Masoud Rahimi Jafari (Masoodrahimy1379@gmail.com)
* @brief Processor Trace (PT) tracing implementation for HyperTrace module
* @details Programs Intel PT MSRs and manages per-CPU ToPA / output buffers.
* The engine half (PtEngine*) deals with a single PT_PER_CPU at a
diff --git a/hyperdbg/hypertrace/header/api/PtApi.h b/hyperdbg/hypertrace/header/api/PtApi.h
index 10e4cba1..d75ea2b0 100644
--- a/hyperdbg/hypertrace/header/api/PtApi.h
+++ b/hyperdbg/hypertrace/header/api/PtApi.h
@@ -1,6 +1,6 @@
/**
* @file PtApi.h
- * @author Sina Karvandi (sina@hyperdbg.org)
+ * @author Masoud Rahimi Jafari (Masoodrahimy1379@gmail.com)
* @brief Header for PT tracing routines for HyperTrace module (Intel Processor Trace)
* @details
* @version 0.19
diff --git a/hyperdbg/hypertrace/header/pt/Pt.h b/hyperdbg/hypertrace/header/pt/Pt.h
index ceb5c98d..07a10506 100644
--- a/hyperdbg/hypertrace/header/pt/Pt.h
+++ b/hyperdbg/hypertrace/header/pt/Pt.h
@@ -1,6 +1,6 @@
/**
* @file Pt.h
- * @author Sina Karvandi (sina@hyperdbg.org)
+ * @author Masoud Rahimi Jafari (Masoodrahimy1379@gmail.com)
* @brief Header for Processor Trace (PT) tracing routines for HyperTrace module
* @details Engine that programs Intel PT MSRs from VMX root or kernel context.
* Buffer / ToPA management is kept here; user-visible PT structures
diff --git a/hyperdbg/include/SDK/headers/PtDefinitions.h b/hyperdbg/include/SDK/headers/PtDefinitions.h
index ee02d613..a4751cd3 100644
--- a/hyperdbg/include/SDK/headers/PtDefinitions.h
+++ b/hyperdbg/include/SDK/headers/PtDefinitions.h
@@ -1,6 +1,6 @@
/**
* @file PtDefinitions.h
- * @author Sina Karvandi (sina@hyperdbg.org)
+ * @author Masoud Rahimi Jafari (Masoodrahimy1379@gmail.com)
* @brief Intel Processor Trace (PT) related data structures and hardware
* definitions shared between the kernel and user-mode components.
* @details
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp
index 5c5d6d9f..a4323e84 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/pt.cpp
@@ -1,6 +1,6 @@
/**
* @file pt.cpp
- * @author Sina Karvandi (sina@hyperdbg.org)
+ * @author Masoud Rahimi Jafari (Masoodrahimy1379@gmail.com)
* @brief !pt command
* @details
* @version 0.19
From 83b507e67278e40d04388d286c995db1bcd2bf0a Mon Sep 17 00:00:00 2001
From: jtaw5649 <213313463+jtaw5649@users.noreply.github.com>
Date: Mon, 1 Jun 2026 11:46:43 +0100
Subject: [PATCH 213/323] fix: correct HyperEvade hide guard
---
hyperdbg/hyperevade/code/SyscallFootprints.c | 6 ++++--
hyperdbg/hyperevade/code/Transparency.c | 2 +-
hyperdbg/hyperevade/header/SyscallFootprints.h | 2 +-
hyperdbg/hyperevade/header/pch.h | 7 -------
hyperdbg/include/config/Configuration.h | 2 +-
.../code/debugger/commands/extension-commands/hide.cpp | 10 ++++++++--
6 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/hyperdbg/hyperevade/code/SyscallFootprints.c b/hyperdbg/hyperevade/code/SyscallFootprints.c
index 75305a82..33273254 100644
--- a/hyperdbg/hyperevade/code/SyscallFootprints.c
+++ b/hyperdbg/hyperevade/code/SyscallFootprints.c
@@ -11,6 +11,8 @@
*/
#include "pch.h"
+#if ActivateHyperEvadeProject != TRUE
+
/**
* @brief Handle The triggered hook on KiSystemCall64 system call handler
* when the Transparency mode is disabled
@@ -50,7 +52,7 @@ TransparentCallbackHandleAfterSyscall(GUEST_REGS * Regs,
UNREFERENCED_PARAMETER(Params);
}
-#if DISABLE_HYPERDBG_HYPEREVADE == FALSE
+#else // ActivateHyperEvadeProject != TRUE
/**
* @brief Handle The triggered hook on KiSystemCall64 system call handler
@@ -1968,4 +1970,4 @@ TransparentCallbackHandleAfterSyscall(GUEST_REGS * Regs,
Params->OptionalParam4);
}
}
-#endif
+#endif // ActivateHyperEvadeProject != TRUE
diff --git a/hyperdbg/hyperevade/code/Transparency.c b/hyperdbg/hyperevade/code/Transparency.c
index 62b40b10..ee68a703 100644
--- a/hyperdbg/hyperevade/code/Transparency.c
+++ b/hyperdbg/hyperevade/code/Transparency.c
@@ -54,7 +54,7 @@ TransparentHideDebugger(HYPEREVADE_CALLBACKS * Hyperevade
RtlCopyBytes(&g_SystemCallNumbersInformation,
&TransparentModeRequest->SystemCallNumbersInformation,
sizeof(SYSTEM_CALL_NUMBERS_INFORMATION));
-#if DISABLE_HYPERDBG_HYPEREVADE == FALSE
+#if ActivateHyperEvadeProject == TRUE
//
// Choose a random genuine vendor string to replace hypervisor vendor data
//
diff --git a/hyperdbg/hyperevade/header/SyscallFootprints.h b/hyperdbg/hyperevade/header/SyscallFootprints.h
index 25acd6b5..40ab41dc 100644
--- a/hyperdbg/hyperevade/header/SyscallFootprints.h
+++ b/hyperdbg/hyperevade/header/SyscallFootprints.h
@@ -161,7 +161,7 @@ SYSTEM_CALL_NUMBERS_INFORMATION g_SystemCallNumbersInformation;
// Constants //
//////////////////////////////////////////////////
-#if DISABLE_HYPERDBG_HYPEREVADE == FALSE
+#if ActivateHyperEvadeProject == TRUE
/**
* @brief A list of windows processes, for which to ignore systemcall requests
diff --git a/hyperdbg/hyperevade/header/pch.h b/hyperdbg/hyperevade/header/pch.h
index c0144bb0..fb9bccaf 100644
--- a/hyperdbg/hyperevade/header/pch.h
+++ b/hyperdbg/hyperevade/header/pch.h
@@ -23,13 +23,6 @@
#ifdef HYPERDBG_ENV_WINDOWS
-//
-// The DLL is flagged by antivirus software, since it contains anti-debugging and anti-hypervisor methods
-// as well as different anti-debugging strings
-// For now, we disable the HyperDbg Hyperevade module
-//
-# define DISABLE_HYPERDBG_HYPEREVADE TRUE
-
//
// Windows defined functions
//
diff --git a/hyperdbg/include/config/Configuration.h b/hyperdbg/include/config/Configuration.h
index e0e4dec3..9a78bc41 100644
--- a/hyperdbg/include/config/Configuration.h
+++ b/hyperdbg/include/config/Configuration.h
@@ -77,4 +77,4 @@
/**
* @brief Activates the hyperevade project
*/
-#define ActivateHyperEvadeProject TRUE
+#define ActivateHyperEvadeProject FALSE
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/hide.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/hide.cpp
index 8a3c989b..cedeee31 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/hide.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/extension-commands/hide.cpp
@@ -217,7 +217,7 @@ CommandHideFillSystemCalls(SYSTEM_CALL_NUMBERS_INFORMATION * SyscallNumberDetail
Result = FALSE;
}
- return TRUE;
+ return Result;
}
/**
@@ -267,6 +267,12 @@ HyperDbgEnableTransparentMode(UINT32 ProcessId, CHAR * ProcessName, BOOLEAN IsPr
RequestBufferSize = sizeof(DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE) + HideRequest.LengthOfProcessName;
}
+ if (!CommandHideFillSystemCalls(&HideRequest.SystemCallNumbersInformation))
+ {
+ ShowMessages("warning, failed to resolve one or more syscall numbers for transparent-mode\n");
+ return FALSE;
+ }
+
//
// Allocate the requested buffer
//
@@ -365,7 +371,7 @@ CommandHide(vector CommandTokens, string Command)
UINT32 TargetPid;
BOOLEAN TrueIfProcessIdAndFalseIfProcessName;
-#if ActivateHyperEvadeProject == TRUE
+#if ActivateHyperEvadeProject != TRUE
ShowMessages("warning, the !hide command (hyperevade project) is in the Beta phase and is not yet well-tested, "
"so it is disabled in this version. If you want to test, you can enable it "
From dd44025ddea6dd18e18da3862ca7978e4d4ebfd6 Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 1 Jun 2026 14:07:01 +0200
Subject: [PATCH 214/323] refactor doxygen, variables, function names 7
---
CHANGELOG.md | 15 +++--
hyperdbg/include/SDK/headers/Constants.h | 8 +--
.../include/SDK/headers/RequestStructures.h | 4 +-
.../imports/kernel/HyperDbgHyperLogImports.h | 4 +-
.../SDK/imports/kernel/HyperDbgVmmImports.h | 10 +--
.../SDK/imports/user/HyperDbgScriptImports.h | 36 +++++-----
.../SDK/imports/user/HyperDbgSymImports.h | 32 ++++-----
hyperdbg/include/SDK/modules/HyperEvade.h | 2 +-
hyperdbg/include/SDK/modules/HyperTrace.h | 2 +-
hyperdbg/include/SDK/modules/VMM.h | 2 +-
.../components/interface/HyperLogCallback.c | 2 +-
.../components/interface/HyperLogCallback.h | 2 +-
.../optimizations/code/InsertionSort.c | 2 +-
.../components/spinlock/code/Spinlock.c | 67 ++++++++++---------
.../components/spinlock/header/Spinlock.h | 10 +--
15 files changed, 103 insertions(+), 95 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d8d75f22..53f81c7b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,7 @@ New release of the HyperDbg Debugger.
- Added the 'kd' module in the 'load' command ([link](https://docs.hyperdbg.org/commands/debugging-commands/load))
- Added the 'trace' module in the 'load' command ([link](https://docs.hyperdbg.org/commands/debugging-commands/load))
- Exported SDK API for detecting CPU vendors
+- Initial codes for the HyperTrace project by using Intel Processor Trace (PT), thanks to [@masoudrahimi01](https://github.com/masoudrahimi01) ([link](https://github.com/HyperDbg/HyperDbg/pull/589))
- Exported SDK APIs for loading the 'kd' and the 'trace' modules
### Changed
@@ -32,14 +33,16 @@ New release of the HyperDbg Debugger.
- VMX instructions are ported to platform-independent files to support Linux
- All CPU-related intrinsic instructions are ported to platform-independent files to support Linux
- HyperDbg SDK now compiles on Linux (GCC) for both user-mode and kernel-mode
-- Fix the 'wrmsr' command IOCTL checks by receiving output the buffer ([link](https://docs.hyperdbg.org/commands/debugging-commands/wrmsr))
-- Extensive refactoring of codes (doxygen, variables, function names)
+- Fix the 'wrmsr' command IOCTL checks by receiving output in the buffer ([link](https://docs.hyperdbg.org/commands/debugging-commands/wrmsr))
+- Extensive refactoring of code base (doxygen, variables, function names)
+- Building certain modules on Linux and fixing CMake files thanks to [@maxraulea](https://github.com/maxraulea) ([link](https://github.com/HyperDbg/HyperDbg/pull/592))
+- Fix the '!hide' command's HyperEvade activation guard thanks to [@jtaw5649](https://github.com/jtaw5649) ([link](https://github.com/HyperDbg/HyperDbg/pull/593))
## [0.18.1.0] - 2026-04-09
New release of the HyperDbg Debugger.
### Added
-- Hypertrace now works with HyperDbg VMM ([link](https://github.com/HyperDbg/HyperDbg/pull/568))
+- HyperTrace now works with HyperDbg VMM ([link](https://github.com/HyperDbg/HyperDbg/pull/568))
- Progress on implementing Last Branch Recode (LBR) ([link](https://github.com/HyperDbg/HyperDbg/commit/1dd73675e9cd78737e013ffb35bc712f385f387e))
- Applying LBR registers on the VMCS instead of the DEBUGCTL MSR ([link](https://github.com/HyperDbg/HyperDbg/commit/15f8b3cca15448acd18d7e198740464a19ce4fe2))
@@ -47,7 +50,7 @@ New release of the HyperDbg Debugger.
- Fix the problem of the '!epthook' not finding the PML1 entry ([link](https://docs.hyperdbg.org/commands/extension-commands/epthook))
- Fix the problem of getting the PML1 entry of the target address on Intel Core Ultra processors (#567) ([link](https://github.com/HyperDbg/HyperDbg/issues/567))
- Fix the '.clang-format' formatting error
-- Restructure of the hypertrace project
+- Restructure of the HyperTrace project
- Add starting structure for supporting Intel Processor Trace (PT)
## [0.18.0.0] - 2026-02-16
@@ -55,8 +58,8 @@ New release of the HyperDbg Debugger.
### Added
- Script engine now supports writing libraries using the '#include' keyword thanks to [@xmaple555](https://github.com/xmaple555) ([link](https://docs.hyperdbg.org/commands/scripting-language/casting-and-inclusion))([link](https://github.com/HyperDbg/HyperDbg/issues/557))([link](https://github.com/HyperDbg/HyperDbg/pull/561))
-- Initial codes for the hypertrace project by using Intel Last Branch Record (LBR) and Branch Trace Store (BTS) thanks to [@harimishal1](https://github.com/harimishal1) ([link](https://github.com/HyperDbg/HyperDbg/tree/master/hyperdbg/hypertrace))
-- The hypertrace project is now linked to the hyperkd
+- Initial codes for the HyperTrace project by using Intel Last Branch Record (LBR) and Branch Trace Store (BTS) thanks to [@harimishal1](https://github.com/harimishal1) ([link](https://github.com/HyperDbg/HyperDbg/tree/master/hyperdbg/hypertrace))
+- The HyperTrace project is now linked to the hyperkd
- Initial efforts to port HyperDbg to Linux have started thanks to [@Alish14](https://github.com/Alish14) ([link](https://github.com/HyperDbg/HyperDbg/pull/563))
### Changed
diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h
index 94a4252f..c44a3922 100644
--- a/hyperdbg/include/SDK/headers/Constants.h
+++ b/hyperdbg/include/SDK/headers/Constants.h
@@ -78,7 +78,7 @@
#ifdef __cplusplus // because it's not valid in C
-const unsigned char BuildDateTime[] = {
+const UCHAR BuildDateTime[] = {
BUILD_YEAR_CH0,
BUILD_YEAR_CH1,
BUILD_YEAR_CH2,
@@ -108,9 +108,9 @@ const unsigned char BuildDateTime[] = {
// Complete version as a string
# define HYPERDBG_COMPLETE_VERSION "v" TOSTRING(VERSION_MAJOR) "." TOSTRING(VERSION_MINOR) "." TOSTRING(VERSION_PATCH) "\0"
-const unsigned char CompleteVersion[] = HYPERDBG_COMPLETE_VERSION;
+const UCHAR CompleteVersion[] = HYPERDBG_COMPLETE_VERSION;
-const unsigned char BuildVersion[] = {
+const UCHAR BuildVersion[] = {
BUILD_YEAR_CH0,
BUILD_YEAR_CH1,
BUILD_YEAR_CH2,
@@ -127,7 +127,7 @@ const unsigned char BuildVersion[] = {
'\0'};
-const unsigned char BuildSignature[] = {
+const UCHAR BuildSignature[] = {
TOSTRING(VERSION_MAJOR)[0],
'.',
TOSTRING(VERSION_MINOR)[0],
diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h
index ef219991..a44b86cf 100644
--- a/hyperdbg/include/SDK/headers/RequestStructures.h
+++ b/hyperdbg/include/SDK/headers/RequestStructures.h
@@ -161,13 +161,13 @@ typedef struct _REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST
*/
typedef struct _DEBUGGER_DT_COMMAND_OPTIONS
{
- const char * TypeName;
+ const CHAR * TypeName;
UINT64 SizeOfTypeName;
UINT64 Address;
BOOLEAN IsStruct;
PVOID BufferAddress;
UINT32 TargetPid;
- const char * AdditionalParameters;
+ const CHAR * AdditionalParameters;
} DEBUGGER_DT_COMMAND_OPTIONS, *PDEBUGGER_DT_COMMAND_OPTIONS;
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperLogImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperLogImports.h
index 7324ed8d..f3a388a3 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperLogImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperLogImports.h
@@ -34,7 +34,7 @@ LogCallbackPrepareAndSendMessageToQueue(UINT32 OperationCode,
BOOLEAN IsImmediateMessage,
BOOLEAN ShowCurrentSystemTime,
BOOLEAN Priority,
- const char * Fmt,
+ const CHAR * Fmt,
...);
IMPORT_EXPORT_HYPERLOG BOOLEAN
@@ -42,7 +42,7 @@ LogCallbackPrepareAndSendMessageToQueueWrapper(UINT32 OperationCode,
BOOLEAN IsImmediateMessage,
BOOLEAN ShowCurrentSystemTime,
BOOLEAN Priority,
- const char * Fmt,
+ const CHAR * Fmt,
va_list ArgList);
IMPORT_EXPORT_HYPERLOG BOOLEAN
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
index e1748e63..b24083d5 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
@@ -21,10 +21,10 @@
//////////////////////////////////////////////////
IMPORT_EXPORT_VMM NTSTATUS
-VmFuncVmxVmcall(unsigned long long VmcallNumber,
- unsigned long long OptionalParam1,
- unsigned long long OptionalParam2,
- unsigned long long OptionalParam3);
+VmFuncVmxVmcall(UINT64 VmcallNumber,
+ UINT64 OptionalParam1,
+ UINT64 OptionalParam2,
+ UINT64 OptionalParam3);
IMPORT_EXPORT_VMM VOID
VmFuncPerformRipIncrement(UINT32 CoreId);
@@ -284,7 +284,7 @@ IMPORT_EXPORT_VMM INT32
VmFuncVmxCompatibleWcsncmp(const WCHAR * Address1, const WCHAR * Address2, SIZE_T Num);
IMPORT_EXPORT_VMM INT32
-VmFuncVmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, size_t Count);
+VmFuncVmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, SIZE_T Count);
IMPORT_EXPORT_VMM BOOLEAN
VmFuncApicStoreLocalApicFields(PLAPIC_PAGE LocalApicBuffer, PBOOLEAN IsUsingX2APIC);
diff --git a/hyperdbg/include/SDK/imports/user/HyperDbgScriptImports.h b/hyperdbg/include/SDK/imports/user/HyperDbgScriptImports.h
index 29f188fc..c06a7f48 100644
--- a/hyperdbg/include/SDK/imports/user/HyperDbgScriptImports.h
+++ b/hyperdbg/include/SDK/imports/user/HyperDbgScriptImports.h
@@ -40,53 +40,53 @@ HardwareScriptInterpreterCheckScriptBufferWithScriptCapabilities(HWDBG_INSTANCE_
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN
HardwareScriptInterpreterCompressBuffer(UINT64 * Buffer,
- size_t BufferLength,
+ SIZE_T BufferLength,
UINT32 ScriptVariableLength,
UINT32 BramDataWidth,
- size_t * NewBufferSize,
- size_t * NumberOfBytesPerChunk);
+ SIZE_T * NewBufferSize,
+ SIZE_T * NumberOfBytesPerChunk);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN
HardwareScriptInterpreterConvertSymbolToHwdbgShortSymbolBuffer(
HWDBG_INSTANCE_INFORMATION * InstanceInfo,
SYMBOL * SymbolBuffer,
- size_t SymbolBufferLength,
+ SIZE_T SymbolBufferLength,
UINT32 NumberOfStages,
HWDBG_SHORT_SYMBOL ** NewShortSymbolBuffer,
- size_t * NewBufferSize);
+ SIZE_T * NewBufferSize);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE VOID
HardwareScriptInterpreterFreeHwdbgShortSymbolBuffer(HWDBG_SHORT_SYMBOL * NewShortSymbolBuffer);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE PVOID
-ScriptEngineParse(char * str);
+ScriptEngineParse(CHAR * Str);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN
ScriptEngineSetHwdbgInstanceInfo(HWDBG_INSTANCE_INFORMATION * InstancInfo);
-IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE void
+IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE VOID
PrintSymbolBuffer(const PVOID SymbolBuffer);
-IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE void
+IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE VOID
RemoveSymbolBuffer(PVOID SymbolBuffer);
-IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE void
+IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE VOID
PrintSymbol(PVOID Symbol);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE UINT64
-ScriptEngineConvertNameToAddress(const char * FunctionOrVariableName, PBOOLEAN WasFound);
+ScriptEngineConvertNameToAddress(const CHAR * FunctionOrVariableName, PBOOLEAN WasFound);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE UINT32
-ScriptEngineLoadFileSymbol(UINT64 BaseAddress, const char * PdbFileName, const char * CustomModuleName);
+ScriptEngineLoadFileSymbol(UINT64 BaseAddress, const CHAR * PdbFileName, const CHAR * CustomModuleName);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE UINT32
ScriptEngineUnloadAllSymbols();
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE UINT32
-ScriptEngineUnloadModuleSymbol(char * ModuleName);
+ScriptEngineUnloadModuleSymbol(CHAR * ModuleName);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE UINT32
-ScriptEngineSearchSymbolForMask(const char * SearchMask);
+ScriptEngineSearchSymbolForMask(const CHAR * SearchMask);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN
ScriptEngineGetFieldOffset(CHAR * TypeName, CHAR * FieldName, UINT32 * FieldOffset);
@@ -95,19 +95,19 @@ IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN
ScriptEngineGetDataTypeSize(CHAR * TypeName, UINT64 * TypeSize);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN
-ScriptEngineCreateSymbolTableForDisassembler(void * CallbackFunction);
+ScriptEngineCreateSymbolTableForDisassembler(PVOID CallbackFunction);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN
-ScriptEngineConvertFileToPdbPath(const char * LocalFilePath, char * ResultPath, size_t ResultPathSize);
+ScriptEngineConvertFileToPdbPath(const CHAR * LocalFilePath, CHAR * ResultPath, SIZE_T ResultPathSize);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN
-ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetails(const char * LocalFilePath, char * PdbFilePath, char * GuidAndAgeDetails, BOOLEAN Is32BitModule);
+ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetails(const CHAR * LocalFilePath, CHAR * PdbFilePath, CHAR * GuidAndAgeDetails, BOOLEAN Is32BitModule);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN
-ScriptEngineSymbolInitLoad(PVOID BufferToStoreDetails, UINT32 StoredLength, BOOLEAN DownloadIfAvailable, const char * SymbolPath, BOOLEAN IsSilentLoad);
+ScriptEngineSymbolInitLoad(PVOID BufferToStoreDetails, UINT32 StoredLength, BOOLEAN DownloadIfAvailable, const CHAR * SymbolPath, BOOLEAN IsSilentLoad);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN
-ScriptEngineShowDataBasedOnSymbolTypes(const char * TypeName, UINT64 Address, BOOLEAN IsStruct, PVOID BufferAddress, const char * AdditionalParameters);
+ScriptEngineShowDataBasedOnSymbolTypes(const CHAR * TypeName, UINT64 Address, BOOLEAN IsStruct, PVOID BufferAddress, const CHAR * AdditionalParameters);
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE VOID
ScriptEngineSymbolAbortLoading();
diff --git a/hyperdbg/include/SDK/imports/user/HyperDbgSymImports.h b/hyperdbg/include/SDK/imports/user/HyperDbgSymImports.h
index 98d97b53..d4874719 100644
--- a/hyperdbg/include/SDK/imports/user/HyperDbgSymImports.h
+++ b/hyperdbg/include/SDK/imports/user/HyperDbgSymImports.h
@@ -31,19 +31,19 @@ IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER VOID
SymbolAbortLoading();
IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER UINT64
-SymConvertNameToAddress(const char * FunctionOrVariableName, PBOOLEAN WasFound);
+SymConvertNameToAddress(const CHAR * FunctionOrVariableName, PBOOLEAN WasFound);
IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER UINT32
-SymLoadFileSymbol(UINT64 BaseAddress, const char * PdbFileName, const char * CustomModuleName);
+SymLoadFileSymbol(UINT64 BaseAddress, const CHAR * PdbFileName, const CHAR * CustomModuleName);
IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER UINT32
SymUnloadAllSymbols();
IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER UINT32
-SymUnloadModuleSymbol(char * ModuleName);
+SymUnloadModuleSymbol(CHAR * ModuleName);
IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER UINT32
-SymSearchSymbolForMask(const char * SearchMask);
+SymSearchSymbolForMask(const CHAR * SearchMask);
IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER BOOLEAN
SymGetFieldOffset(CHAR * TypeName, CHAR * FieldName, UINT32 * FieldOffset);
@@ -52,39 +52,39 @@ IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER BOOLEAN
SymGetDataTypeSize(CHAR * TypeName, UINT64 * TypeSize);
IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER BOOLEAN
-SymCreateSymbolTableForDisassembler(void * CallbackFunction);
+SymCreateSymbolTableForDisassembler(PVOID CallbackFunction);
IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER BOOLEAN
-SymConvertFileToPdbPath(const char * LocalFilePath, char * ResultPath, size_t ResultPathSize);
+SymConvertFileToPdbPath(const CHAR * LocalFilePath, CHAR * ResultPath, SIZE_T ResultPathSize);
IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER BOOLEAN
-SymConvertFileToPdbFileAndGuidAndAgeDetails(const char * LocalFilePath,
- char * PdbFilePath,
- char * GuidAndAgeDetails,
+SymConvertFileToPdbFileAndGuidAndAgeDetails(const CHAR * LocalFilePath,
+ CHAR * PdbFilePath,
+ CHAR * GuidAndAgeDetails,
BOOLEAN Is32BitModule);
IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER BOOLEAN
SymbolInitLoad(PVOID BufferToStoreDetails,
UINT32 StoredLength,
BOOLEAN DownloadIfAvailable,
- const char * SymbolPath,
+ const CHAR * SymbolPath,
BOOLEAN IsSilentLoad);
IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER BOOLEAN
-SymShowDataBasedOnSymbolTypes(const char * TypeName,
+SymShowDataBasedOnSymbolTypes(const CHAR * TypeName,
UINT64 Address,
BOOLEAN IsStruct,
PVOID BufferAddress,
- const char * AdditionalParameters);
+ const CHAR * AdditionalParameters);
IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER BOOLEAN
-SymQuerySizeof(_In_ const char * StructNameOrTypeName, _Out_ UINT32 * SizeOfField);
+SymQuerySizeof(_In_ const CHAR * StructNameOrTypeName, _Out_ UINT32 * SizeOfField);
IMPORT_EXPORT_HYPERDBG_SYMBOL_PARSER BOOLEAN
-SymCastingQueryForFiledsAndTypes(_In_ const char * StructName,
- _In_ const char * FiledOfStructName,
+SymCastingQueryForFiledsAndTypes(_In_ const CHAR * StructName,
+ _In_ const CHAR * FiledOfStructName,
_Out_ PBOOLEAN IsStructNamePointerOrNot,
_Out_ PBOOLEAN IsFiledOfStructNamePointerOrNot,
- _Out_ char ** NewStructOrTypeName,
+ _Out_ CHAR ** NewStructOrTypeName,
_Out_ UINT32 * OffsetOfFieldFromTop,
_Out_ UINT32 * SizeOfField);
diff --git a/hyperdbg/include/SDK/modules/HyperEvade.h b/hyperdbg/include/SDK/modules/HyperEvade.h
index 4b3828be..e09c7e0a 100644
--- a/hyperdbg/include/SDK/modules/HyperEvade.h
+++ b/hyperdbg/include/SDK/modules/HyperEvade.h
@@ -24,7 +24,7 @@ typedef BOOLEAN (*LOG_CALLBACK_PREPARE_AND_SEND_MESSAGE_TO_QUEUE)(UINT32 O
BOOLEAN IsImmediateMessage,
BOOLEAN ShowCurrentSystemTime,
BOOLEAN Priority,
- const char * Fmt,
+ const CHAR * Fmt,
va_list ArgList);
/**
diff --git a/hyperdbg/include/SDK/modules/HyperTrace.h b/hyperdbg/include/SDK/modules/HyperTrace.h
index 83eb4523..17ace198 100644
--- a/hyperdbg/include/SDK/modules/HyperTrace.h
+++ b/hyperdbg/include/SDK/modules/HyperTrace.h
@@ -24,7 +24,7 @@ typedef BOOLEAN (*LOG_CALLBACK_PREPARE_AND_SEND_MESSAGE_TO_QUEUE)(UINT32 O
BOOLEAN IsImmediateMessage,
BOOLEAN ShowCurrentSystemTime,
BOOLEAN Priority,
- const char * Fmt,
+ const CHAR * Fmt,
va_list ArgList);
/**
diff --git a/hyperdbg/include/SDK/modules/VMM.h b/hyperdbg/include/SDK/modules/VMM.h
index 11c29e19..ed20c43c 100644
--- a/hyperdbg/include/SDK/modules/VMM.h
+++ b/hyperdbg/include/SDK/modules/VMM.h
@@ -24,7 +24,7 @@ typedef BOOLEAN (*LOG_CALLBACK_PREPARE_AND_SEND_MESSAGE_TO_QUEUE)(UINT32 O
BOOLEAN IsImmediateMessage,
BOOLEAN ShowCurrentSystemTime,
BOOLEAN Priority,
- const char * Fmt,
+ const CHAR * Fmt,
va_list ArgList);
/**
diff --git a/hyperdbg/include/components/interface/HyperLogCallback.c b/hyperdbg/include/components/interface/HyperLogCallback.c
index 935cb571..2d77def5 100644
--- a/hyperdbg/include/components/interface/HyperLogCallback.c
+++ b/hyperdbg/include/components/interface/HyperLogCallback.c
@@ -29,7 +29,7 @@ LogCallbackPrepareAndSendMessageToQueue(UINT32 OperationCode,
BOOLEAN IsImmediateMessage,
BOOLEAN ShowCurrentSystemTime,
BOOLEAN Priority,
- const char * Fmt,
+ const CHAR * Fmt,
...)
{
BOOLEAN Result;
diff --git a/hyperdbg/include/components/interface/HyperLogCallback.h b/hyperdbg/include/components/interface/HyperLogCallback.h
index 95812f1e..b7906988 100644
--- a/hyperdbg/include/components/interface/HyperLogCallback.h
+++ b/hyperdbg/include/components/interface/HyperLogCallback.h
@@ -21,7 +21,7 @@ LogCallbackPrepareAndSendMessageToQueue(UINT32 OperationCode,
BOOLEAN IsImmediateMessage,
BOOLEAN ShowCurrentSystemTime,
BOOLEAN Priority,
- const char * Fmt,
+ const CHAR * Fmt,
...);
BOOLEAN
diff --git a/hyperdbg/include/components/optimizations/code/InsertionSort.c b/hyperdbg/include/components/optimizations/code/InsertionSort.c
index b6d75e00..949f79b2 100644
--- a/hyperdbg/include/components/optimizations/code/InsertionSort.c
+++ b/hyperdbg/include/components/optimizations/code/InsertionSort.c
@@ -76,7 +76,7 @@ InsertionSortDeleteItem(UINT64 ArrayPtr[], UINT32 * NumberOfItems, UINT32 Index)
return FALSE;
}
- for (size_t i = Index + 1; i < *NumberOfItems; i++)
+ for (SIZE_T i = Index + 1; i < *NumberOfItems; i++)
{
ArrayPtr[i - 1] = ArrayPtr[i];
}
diff --git a/hyperdbg/include/components/spinlock/code/Spinlock.c b/hyperdbg/include/components/spinlock/code/Spinlock.c
index 53c47c8b..4b3e908b 100644
--- a/hyperdbg/include/components/spinlock/code/Spinlock.c
+++ b/hyperdbg/include/components/spinlock/code/Spinlock.c
@@ -26,15 +26,15 @@
#include "pch.h"
/**
- * @brief The maximum wait before PAUSE
+ * @brief The maximum Wait before PAUSE
*
*/
-static unsigned MaxWait = 65536;
+static UINT32 g_MaxWait = 65536;
/**
* @brief Tries to get the lock otherwise returns
*
- * @param LONG Lock variable
+ * @param Lock Lock variable
* @return BOOLEAN If it was successful on getting the lock
*/
BOOLEAN
@@ -46,32 +46,33 @@ SpinlockTryLock(volatile LONG * Lock)
/**
* @brief Tries to get the lock and won't return until successfully get the lock
*
- * @param LONG Lock variable
+ * @param Lock Lock variable
+ * @return VOID
*/
-void
+VOID
SpinlockLock(volatile LONG * Lock)
{
- unsigned wait = 1;
+ UINT32 Wait = 1;
while (!SpinlockTryLock(Lock))
{
- for (unsigned i = 0; i < wait; ++i)
+ for (UINT32 i = 0; i < Wait; ++i)
{
_mm_pause();
}
//
- // Don't call "pause" too many times. If the wait becomes too big,
+ // Don't call "pause" too many times. If the Wait becomes too big,
// clamp it to the MaxWait.
//
- if (wait * 2 > MaxWait)
+ if (Wait * 2 > g_MaxWait)
{
- wait = MaxWait;
+ Wait = g_MaxWait;
}
else
{
- wait = wait * 2;
+ Wait = Wait * 2;
}
}
}
@@ -83,34 +84,35 @@ SpinlockLock(volatile LONG * Lock)
* @param Destination A pointer to the destination value
* @param Exchange The exchange value
* @param Comperand The value to compare to Destination
+ * @return VOID
*/
-void
+VOID
SpinlockInterlockedCompareExchange(
LONG volatile * Destination,
LONG Exchange,
LONG Comperand)
{
- unsigned wait = 1;
+ UINT32 Wait = 1;
while (InterlockedCompareExchange(Destination, Exchange, Comperand) != Comperand)
{
- for (unsigned i = 0; i < wait; ++i)
+ for (UINT32 i = 0; i < Wait; ++i)
{
_mm_pause();
}
//
- // Don't call "pause" too many times. If the wait becomes too big,
+ // Don't call "pause" too many times. If the Wait becomes too big,
// clamp it to the MaxWait.
//
- if (wait * 2 > MaxWait)
+ if (Wait * 2 > g_MaxWait)
{
- wait = MaxWait;
+ Wait = g_MaxWait;
}
else
{
- wait = wait * 2;
+ Wait = Wait * 2;
}
}
}
@@ -118,33 +120,34 @@ SpinlockInterlockedCompareExchange(
/**
* @brief Tries to get the lock and won't return until successfully get the lock
*
- * @param LONG Lock variable
- * @param LONG MaxWait Maximum wait (pause) count
+ * @param Lock Lock variable
+ * @param MaximumWait Maximum wait (pause) count
+ * @return VOID
*/
-void
-SpinlockLockWithCustomWait(volatile LONG * Lock, unsigned MaximumWait)
+VOID
+SpinlockLockWithCustomWait(volatile LONG * Lock, UINT32 MaximumWait)
{
- unsigned wait = 1;
+ UINT32 Wait = 1;
while (!SpinlockTryLock(Lock))
{
- for (unsigned i = 0; i < wait; ++i)
+ for (UINT32 i = 0; i < Wait; ++i)
{
_mm_pause();
}
//
- // Don't call "pause" too many times. If the wait becomes too big,
+ // Don't call "pause" too many times. If the Wait becomes too big,
// clamp it to the MaxWait.
//
- if (wait * 2 > MaximumWait)
+ if (Wait * 2 > MaximumWait)
{
- wait = MaximumWait;
+ Wait = MaximumWait;
}
else
{
- wait = wait * 2;
+ Wait = Wait * 2;
}
}
}
@@ -152,9 +155,10 @@ SpinlockLockWithCustomWait(volatile LONG * Lock, unsigned MaximumWait)
/**
* @brief Release the lock
*
- * @param LONG Lock variable
+ * @param Lock Lock variable
+ * @return VOID
*/
-void
+VOID
SpinlockUnlock(volatile LONG * Lock)
{
*Lock = 0;
@@ -163,7 +167,8 @@ SpinlockUnlock(volatile LONG * Lock)
/**
* @brief Check the lock without changing the state
*
- * @param LONG Lock variable
+ * @param Lock Lock variable
+ * @return BOOLEAN Whether the lock is acquired or not
*/
BOOLEAN
SpinlockCheckLock(volatile LONG * Lock)
diff --git a/hyperdbg/include/components/spinlock/header/Spinlock.h b/hyperdbg/include/components/spinlock/header/Spinlock.h
index bd3f2d0a..13cdf22b 100644
--- a/hyperdbg/include/components/spinlock/header/Spinlock.h
+++ b/hyperdbg/include/components/spinlock/header/Spinlock.h
@@ -21,16 +21,16 @@ SpinlockTryLock(volatile LONG * Lock);
BOOLEAN
SpinlockCheckLock(volatile LONG * Lock);
-void
+VOID
SpinlockLock(volatile LONG * Lock);
-void
-SpinlockLockWithCustomWait(volatile LONG * Lock, unsigned MaxWait);
+VOID
+SpinlockLockWithCustomWait(volatile LONG * Lock, UINT32 MaxWait);
-void
+VOID
SpinlockUnlock(volatile LONG * Lock);
-void
+VOID
SpinlockInterlockedCompareExchange(
LONG volatile * Destination,
LONG Exchange,
From bf2f7521164961fee6971809b231d7a2fec441dd Mon Sep 17 00:00:00 2001
From: sina
Date: Mon, 1 Jun 2026 15:35:55 +0200
Subject: [PATCH 215/323] Fix hyperlog callback path in the project
---
hyperdbg/hyperdbg.sln | 15 ++++++++++
hyperdbg/hyperevade/header/pch.h | 2 +-
hyperdbg/hyperevade/hyperevade.vcxproj | 4 +--
.../hyperevade/hyperevade.vcxproj.filters | 23 +++++++-------
hyperdbg/hyperhv/hyperhv.vcxproj | 4 +--
hyperdbg/hyperhv/hyperhv.vcxproj.filters | 18 +++++++----
hyperdbg/hyperhv/pch.h | 2 +-
hyperdbg/hypertrace/header/pch.h | 2 +-
hyperdbg/hypertrace/hypertrace.vcxproj | 4 +--
.../hypertrace/hypertrace.vcxproj.filters | 30 +++++++++++--------
.../kernel/HyperDbgHyperLogIntrinsics.h | 4 +--
.../code}/HyperLogCallback.c | 0
.../header}/HyperLogCallback.h | 0
13 files changed, 69 insertions(+), 39 deletions(-)
rename hyperdbg/include/components/{interface => callback/code}/HyperLogCallback.c (100%)
rename hyperdbg/include/components/{interface => callback/header}/HyperLogCallback.h (100%)
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 0fc1d07d..22c5e3ce 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -302,6 +302,18 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "windows-only", "windows-onl
include\platform\user\code\windows-only\windows-privilege.c = include\platform\user\code\windows-only\windows-privilege.c
EndProjectSection
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "callback", "callback", "{1AA10217-07BF-490B-A688-1D1D6A267D52}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{78821DCF-DCFE-45B7-A9DD-3543BDF1FB9E}"
+ ProjectSection(SolutionItems) = preProject
+ include\components\callback\hyperlog\code\HyperLogCallback.c = include\components\callback\hyperlog\code\HyperLogCallback.c
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{AD02B952-0D75-47FE-8FF7-18B3E081E2C1}"
+ ProjectSection(SolutionItems) = preProject
+ include\components\callback\hyperlog\header\HyperLogCallback.h = include\components\callback\hyperlog\header\HyperLogCallback.h
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug|x64 = debug|x64
@@ -403,6 +415,9 @@ Global
{09E02C0A-6A6C-408A-8136-C787FDC58A5F} = {770B65D6-5307-478C-A9EB-3E4A64B67225}
{C95E342A-9622-4351-8177-CDA43A52E7B2} = {DBE32379-8D5A-4454-A1B6-ACC407881898}
{45ABB14F-86B9-40BE-9C0F-213653CE6A93} = {4BF590C3-1032-4DD2-BF87-BB9E5781977C}
+ {1AA10217-07BF-490B-A688-1D1D6A267D52} = {DF15E9D4-976B-4E1D-B68F-9B67F93654BF}
+ {78821DCF-DCFE-45B7-A9DD-3543BDF1FB9E} = {1AA10217-07BF-490B-A688-1D1D6A267D52}
+ {AD02B952-0D75-47FE-8FF7-18B3E081E2C1} = {1AA10217-07BF-490B-A688-1D1D6A267D52}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1444BEC7-11CE-4CA6-B77C-5F98AC9BFAEB}
diff --git a/hyperdbg/hyperevade/header/pch.h b/hyperdbg/hyperevade/header/pch.h
index fb9bccaf..60a4e99b 100644
--- a/hyperdbg/hyperevade/header/pch.h
+++ b/hyperdbg/hyperevade/header/pch.h
@@ -61,7 +61,7 @@
//
// Hyperlog headers
//
-#include "components/interface/HyperLogCallback.h"
+#include "components/callback/header/HyperLogCallback.h"
#include "SDK/imports/kernel/HyperDbgHyperLogIntrinsics.h"
//
diff --git a/hyperdbg/hyperevade/hyperevade.vcxproj b/hyperdbg/hyperevade/hyperevade.vcxproj
index 6599c703..5acb9c74 100644
--- a/hyperdbg/hyperevade/hyperevade.vcxproj
+++ b/hyperdbg/hyperevade/hyperevade.vcxproj
@@ -100,7 +100,7 @@
-
+
@@ -114,7 +114,7 @@
-
+
diff --git a/hyperdbg/hyperevade/hyperevade.vcxproj.filters b/hyperdbg/hyperevade/hyperevade.vcxproj.filters
index be4630b9..d96f4ba2 100644
--- a/hyperdbg/hyperevade/hyperevade.vcxproj.filters
+++ b/hyperdbg/hyperevade/hyperevade.vcxproj.filters
@@ -28,11 +28,14 @@
{da60b9fe-3816-4f3c-a6a9-21accd463156}
-
- {895edb89-17e8-4a1e-a648-b0ea360e98f8}
+
+ {0e801893-09df-4299-a572-6e63049d4f9f}
-
- {7c6fe4d9-4baf-4fd2-93e0-ee395cbc2ee9}
+
+ {78b7809e-ea12-450d-af96-8e658087628d}
+
+
+ {28025c67-f68b-437b-bcda-d23c9a752d42}
@@ -60,9 +63,6 @@
code\components\optimizations
-
- code\interface
-
code
@@ -72,6 +72,9 @@
code\platform
+
+ code\components\callback
+
@@ -83,9 +86,6 @@
header\platform
-
- header\interface
-
header
@@ -95,5 +95,8 @@
header\platform
+
+ header\components\callback
+
\ No newline at end of file
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj b/hyperdbg/hyperhv/hyperhv.vcxproj
index e81659f7..b007446c 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj
@@ -126,7 +126,7 @@
-
+
@@ -234,7 +234,7 @@
-
+
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj.filters b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
index ab96d623..2ef34332 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj.filters
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
@@ -141,6 +141,12 @@
{c310c4a9-c337-454d-94ca-4c6b1216cf41}
+
+ {20e523af-8b6d-4293-bd6d-ce6087f2d4a2}
+
+
+ {58bb81a8-dd12-4e47-b6c8-7d61981fef62}
+
@@ -314,9 +320,6 @@
code\mmio
-
- code\interface
-
code\hooks\syscall-hook
@@ -338,6 +341,9 @@
code\platform
+
+ code\components\callback
+
@@ -601,9 +607,6 @@
header\mmio
-
- header\interface
-
header\hooks
@@ -622,6 +625,9 @@
header\platform
+
+ header\components\callback
+
diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h
index 5e809dde..c988ebad 100644
--- a/hyperdbg/hyperhv/pch.h
+++ b/hyperdbg/hyperhv/pch.h
@@ -176,7 +176,7 @@
//
#include "SDK/modules/HyperLog.h"
#include "SDK/imports/kernel/HyperDbgHyperLogIntrinsics.h"
-#include "components/interface/HyperLogCallback.h"
+#include "components/callback/header/HyperLogCallback.h"
//
// Transparent-mode (hyperevade) headers
diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h
index e855144b..51424dde 100644
--- a/hyperdbg/hypertrace/header/pch.h
+++ b/hyperdbg/hypertrace/header/pch.h
@@ -89,7 +89,7 @@
//
// Hyperlog headers
//
-#include "components/interface/HyperLogCallback.h"
+#include "components/callback/header/HyperLogCallback.h"
#include "SDK/imports/kernel/HyperDbgHyperLogIntrinsics.h"
//
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj b/hyperdbg/hypertrace/hypertrace.vcxproj
index 804c776e..794cfc67 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj
@@ -100,7 +100,7 @@
-
+
@@ -115,7 +115,7 @@
-
+
diff --git a/hyperdbg/hypertrace/hypertrace.vcxproj.filters b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
index c81ca949..80bfb9ae 100644
--- a/hyperdbg/hypertrace/hypertrace.vcxproj.filters
+++ b/hyperdbg/hypertrace/hypertrace.vcxproj.filters
@@ -15,12 +15,6 @@
{21f0281e-fc2a-4e13-97ac-e4b35a05a31e}
-
- {a78ce9ac-3c19-4f57-889a-3c5ec3234cb4}
-
-
- {50dcf65c-eea2-4bf3-b57e-d6689999b39d}
-
{09d5457a-bade-4a3f-a171-641110492d57}
@@ -54,14 +48,23 @@
{7d49a3f4-a2eb-48b1-8f41-220b9ccf30dc}
+
+ {4f62540b-d186-479e-83a0-1b550134f487}
+
+
+ {9fe877a7-e261-4579-9752-a3156b6e69d9}
+
+
+ {8bc2336a-b1c5-4e93-9793-23a5cfdc741d}
+
+
+ {fc73555b-2be3-4898-bcdb-df83fa3e1388}
+
code\platform
-
- code\interface
-
code\api
@@ -95,6 +98,9 @@
code\platform
+
+ code\components\callback
+
@@ -103,9 +109,6 @@
header\platform
-
- header\interface
-
header\api
@@ -142,5 +145,8 @@
header\platform
+
+ header\components\callback
+
\ No newline at end of file
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperLogIntrinsics.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperLogIntrinsics.h
index 6819bc26..837fb661 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperLogIntrinsics.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgHyperLogIntrinsics.h
@@ -52,7 +52,7 @@ typedef enum _LOG_TYPE
DbgPrint("[!] Error (%s:%d) | " format "\n", \
__func__, \
__LINE__, \
- ##__VA_ARGS__); \
+ ##__VA_ARGS__); \
DbgBreakPoint()
/**
@@ -118,7 +118,7 @@ typedef enum _LOG_TYPE
"[!] Error (%s:%d) | " format "\n", \
__func__, \
__LINE__, \
- ##__VA_ARGS__); \
+ ##__VA_ARGS__); \
if (DebugMode) \
DbgBreakPoint()
diff --git a/hyperdbg/include/components/interface/HyperLogCallback.c b/hyperdbg/include/components/callback/code/HyperLogCallback.c
similarity index 100%
rename from hyperdbg/include/components/interface/HyperLogCallback.c
rename to hyperdbg/include/components/callback/code/HyperLogCallback.c
diff --git a/hyperdbg/include/components/interface/HyperLogCallback.h b/hyperdbg/include/components/callback/header/HyperLogCallback.h
similarity index 100%
rename from hyperdbg/include/components/interface/HyperLogCallback.h
rename to hyperdbg/include/components/callback/header/HyperLogCallback.h
From 8711881d3cf7ab7f4d9295e674943f7177659d32 Mon Sep 17 00:00:00 2001
From: jtaw5649 <213313463+jtaw5649@users.noreply.github.com>
Date: Mon, 1 Jun 2026 20:30:31 +0100
Subject: [PATCH 216/323] fix: use synchronous debugger device handles
---
hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 15 +++++++++------
hyperdbg/libhyperdbg/code/app/packets.cpp | 11 ++++-------
.../debugger/commands/debugging-commands/e.cpp | 3 ++-
.../debugger/commands/debugging-commands/s.cpp | 3 ++-
4 files changed, 17 insertions(+), 15 deletions(-)
diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
index cb099b32..47f0a72b 100644
--- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
+++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp
@@ -162,6 +162,7 @@ INT
HyperDbgInitHyperTraceModule()
{
BOOL Status;
+ DWORD BytesReturned;
DEBUGGER_INIT_HYPERTRACE_PACKET InitHyperTracePacket = {0};
AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnOne);
@@ -175,7 +176,7 @@ HyperDbgInitHyperTraceModule()
SIZEOF_DEBUGGER_INIT_HYPERTRACE_PACKET, // Length of input buffer in bytes.
&InitHyperTracePacket, // Output Buffer from driver.
SIZEOF_DEBUGGER_INIT_HYPERTRACE_PACKET, // Length of output buffer in bytes.
- NULL, // Bytes placed in buffer.
+ &BytesReturned, // Bytes placed in buffer.
NULL // synchronous call
);
@@ -210,6 +211,7 @@ INT
HyperDbgInitVmmModule()
{
BOOL Status;
+ DWORD BytesReturned;
DEBUGGER_INIT_VMM_PACKET InitVmmPacket = {0};
AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnOne);
@@ -228,7 +230,7 @@ HyperDbgInitVmmModule()
SIZEOF_DEBUGGER_INIT_VMM_PACKET, // Length of input buffer in bytes.
&InitVmmPacket, // Output Buffer from driver.
SIZEOF_DEBUGGER_INIT_VMM_PACKET, // Length of output buffer in bytes.
- NULL, // Bytes placed in buffer.
+ &BytesReturned, // Bytes placed in buffer.
NULL // synchronous call
);
@@ -305,7 +307,7 @@ HyperDbgCreateHandleFromKdModule()
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, /// lpSecurityAttirbutes
OPEN_EXISTING,
- FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
+ FILE_ATTRIBUTE_NORMAL,
NULL); /// lpTemplateFile
if (g_DeviceHandle == INVALID_HANDLE_VALUE)
@@ -357,7 +359,8 @@ HyperDbgCreateHandleFromKdModule()
INT
HyperDbgUnloadVmm()
{
- BOOL Status;
+ BOOL Status;
+ DWORD BytesReturned;
AssertShowMessageReturnStmt(g_DeviceHandle, ASSERT_MESSAGE_DRIVER_NOT_LOADED, AssertReturnOne);
@@ -378,7 +381,7 @@ HyperDbgUnloadVmm()
// as the driver is x64 and has 64 bit values)
NULL, // Output Buffer from driver.
0, // Length of output buffer in bytes.
- NULL, // Bytes placed in buffer.
+ &BytesReturned, // Bytes placed in buffer.
NULL // synchronous call
);
@@ -404,7 +407,7 @@ HyperDbgUnloadVmm()
// driver is x64 and has 64 bit values)
NULL, // Output Buffer from driver.
0, // Length of output buffer in bytes.
- NULL, // Bytes placed in buffer.
+ &BytesReturned, // Bytes placed in buffer.
NULL // synchronous call
);
diff --git a/hyperdbg/libhyperdbg/code/app/packets.cpp b/hyperdbg/libhyperdbg/code/app/packets.cpp
index 55679001..3d74854d 100644
--- a/hyperdbg/libhyperdbg/code/app/packets.cpp
+++ b/hyperdbg/libhyperdbg/code/app/packets.cpp
@@ -42,12 +42,9 @@ ReadIrpBasedBuffer()
RegisterEvent.Type = IRP_BASED;
//
- // Create another handle to be used in for reading kernel messages,
- // it is because I noticed that if I use a same handle for IRP Pending
- // and other IOCTLs then if I complete that IOCTL then both of the current
- // IOCTL and the Pending IRP are completed and return to user mode,
- // even if it's odd but that what happens, so this way we can solve it
- // if you know why this problem happens, then contact me !
+ // Keep the packet reader on a dedicated synchronous handle. It blocks on
+ // a pending IOCTL while the main debugger handle continues sending other
+ // synchronous IOCTLs.
//
Handle = CreateFileA(
"\\\\.\\HyperDbgDebuggerDevice",
@@ -55,7 +52,7 @@ ReadIrpBasedBuffer()
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, /// lpSecurityAttirbutes
OPEN_EXISTING,
- FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
+ FILE_ATTRIBUTE_NORMAL,
NULL); /// lpTemplateFile
if (Handle == INVALID_HANDLE_VALUE)
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/e.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/e.cpp
index 2d78acfc..df1ce1d0 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/e.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/e.cpp
@@ -69,6 +69,7 @@ WriteMemoryContent(UINT64 AddressToEdit,
UINT64 * BufferToEdit)
{
BOOL Status;
+ DWORD BytesReturned;
BOOLEAN StatusReturn = FALSE;
DEBUGGER_EDIT_MEMORY * FinalBuffer;
DEBUGGER_EDIT_MEMORY EditMemoryRequest = {0};
@@ -147,7 +148,7 @@ WriteMemoryContent(UINT64 AddressToEdit,
FinalSize, // Input buffer length
FinalBuffer, // Output Buffer from driver.
SIZEOF_DEBUGGER_EDIT_MEMORY, // Length of output buffer in bytes.
- NULL, // Bytes placed in buffer.
+ &BytesReturned, // Bytes placed in buffer.
NULL // synchronous call
);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/s.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/s.cpp
index 80f99f70..7d71af03 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/s.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/s.cpp
@@ -62,6 +62,7 @@ VOID
CommandSearchSendRequest(UINT64 * BufferToSendAsIoctl, UINT32 BufferToSendAsIoctlSize)
{
BOOL Status;
+ DWORD BytesReturned;
UINT64 CurrentValue;
PUINT64 ResultsBuffer = NULL;
@@ -87,7 +88,7 @@ CommandSearchSendRequest(UINT64 * BufferToSendAsIoctl, UINT32 BufferToSendAsIoct
ResultsBuffer, // Output Buffer from driver.
MaximumSearchResults *
sizeof(UINT64), // Length of output buffer in bytes.
- NULL, // Bytes placed in buffer.
+ &BytesReturned, // Bytes placed in buffer.
NULL // synchronous call
);
From 453537dc3310ef2791fcdc2fa9f85d125a497b27 Mon Sep 17 00:00:00 2001
From: maxraulea
Date: Mon, 1 Jun 2026 22:28:03 +0200
Subject: [PATCH 217/323] update paths
---
hyperdbg/hyperdbg-cli/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hyperdbg/hyperdbg-cli/CMakeLists.txt b/hyperdbg/hyperdbg-cli/CMakeLists.txt
index b7293ad3..8eb54082 100644
--- a/hyperdbg/hyperdbg-cli/CMakeLists.txt
+++ b/hyperdbg/hyperdbg-cli/CMakeLists.txt
@@ -1,7 +1,7 @@
# Code generated by Visual Studio kit, DO NOT EDIT.
set(SourceFiles
"hyperdbg-cli.cpp"
- "../include/platform/user/header/Environment.h"
+ "../include/platform/general/header/Environment.h"
)
include_directories(
"../include"
From 3d5ee41bb6ce24e2634b2eb3611dd8de36ff387e Mon Sep 17 00:00:00 2001
From: maxraulea
Date: Mon, 1 Jun 2026 22:28:46 +0200
Subject: [PATCH 218/323] change order for compilation gcc
---
hyperdbg/include/SDK/HyperDbgSdk.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hyperdbg/include/SDK/HyperDbgSdk.h b/hyperdbg/include/SDK/HyperDbgSdk.h
index ac5d6cfc..fc53dd57 100644
--- a/hyperdbg/include/SDK/HyperDbgSdk.h
+++ b/hyperdbg/include/SDK/HyperDbgSdk.h
@@ -3,8 +3,8 @@
//
// General SDK Headers
//
-#include "SDK/headers/Constants.h"
#include "SDK/headers/BasicTypes.h"
+#include "SDK/headers/Constants.h"
#include "SDK/headers/ErrorCodes.h"
#include "SDK/headers/Connection.h"
#include "SDK/headers/DataTypes.h"
From 2d1293ff51b07d0bfc0d5ec0186cffbb50f1e471 Mon Sep 17 00:00:00 2001
From: maxraulea
Date: Mon, 1 Jun 2026 22:34:11 +0200
Subject: [PATCH 219/323] Add argument to Newtemp for gcc compatibility
---
hyperdbg/script-engine/code/script-engine.c | 25 +++++++++++----------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/hyperdbg/script-engine/code/script-engine.c b/hyperdbg/script-engine/code/script-engine.c
index cb461888..01f13fd2 100644
--- a/hyperdbg/script-engine/code/script-engine.c
+++ b/hyperdbg/script-engine/code/script-engine.c
@@ -11,6 +11,7 @@
*
*/
#include "pch.h"
+#include "platform/user/header/platform-lib-calls.h"
// #define _SCRIPT_ENGINE_LALR_DBG_EN
// #define _SCRIPT_ENGINE_LL1_DBG_EN
@@ -44,7 +45,7 @@ ShowMessages(const char * Fmt, ...)
{
char TempMessage[COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT] = {0};
va_start(ArgList, Fmt);
- INT SprintfResult = vsprintf_s(TempMessage, COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT, Fmt, ArgList);
+ INT SprintfResult = PlatformVsnprintf(TempMessage, COMMUNICATION_BUFFER_SIZE + TCP_END_OF_BUFFER_CHARS_COUNT, Fmt, ArgList);
va_end(ArgList);
if (SprintfResult != -1)
@@ -309,15 +310,15 @@ ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetails(const char * LocalFilePath,
PVOID
ScriptEngineParse(char * str)
{
- char * ScriptSource = _strdup(str);
+ char * ScriptSource = PlatformStrDup(str);
PSCRIPT_ENGINE_TOKEN_LIST Stack = NewTokenList();
PSCRIPT_ENGINE_TOKEN_LIST MatchedStack = NewTokenList();
PSYMBOL_BUFFER CodeBuffer = NewSymbolBuffer();
UserDefinedFunctionHead = malloc(sizeof(USER_DEFINED_FUNCTION_NODE));
- RtlZeroMemory(UserDefinedFunctionHead, sizeof(USER_DEFINED_FUNCTION_NODE));
- UserDefinedFunctionHead->Name = _strdup("main");
+ PlatformZeroMemory(UserDefinedFunctionHead, sizeof(USER_DEFINED_FUNCTION_NODE));
+ UserDefinedFunctionHead->Name = PlatformStrDup("main");
UserDefinedFunctionHead->IdTable = (unsigned long long)NewTokenList();
UserDefinedFunctionHead->FunctionParameterIdTable = (unsigned long long)NewTokenList();
UserDefinedFunctionHead->TempMap = calloc(MAX_TEMP_COUNT, 1);
@@ -739,7 +740,7 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
if (!IncludeHead)
{
IncludeHead = calloc(sizeof(INCLUDE_NODE), 1);
- IncludeHead->FilePath = _strdup(FullPath);
+ IncludeHead->FilePath = PlatformStrDup(FullPath);
}
else
{
@@ -757,7 +758,7 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
if (!IncludedPath && PrevNode)
{
PrevNode->NextNode = calloc(sizeof(INCLUDE_NODE), 1);
- PrevNode->NextNode->FilePath = _strdup(FullPath);
+ PrevNode->NextNode->FilePath = PlatformStrDup(FullPath);
}
}
@@ -803,10 +804,10 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
Node = Node->NextNode;
}
Node->NextNode = malloc(sizeof(USER_DEFINED_FUNCTION_NODE));
- RtlZeroMemory(Node->NextNode, sizeof(USER_DEFINED_FUNCTION_NODE));
+ PlatformZeroMemory(Node->NextNode, sizeof(USER_DEFINED_FUNCTION_NODE));
CurrentUserDefinedFunction = Node->NextNode;
- CurrentUserDefinedFunction->Name = _strdup(Op0->Value);
+ CurrentUserDefinedFunction->Name = PlatformStrDup(Op0->Value);
CurrentUserDefinedFunction->Address = CodeBuffer->Pointer; // CurrentPointer
CurrentUserDefinedFunction->VariableType = (long long unsigned)VariableType;
CurrentUserDefinedFunction->IdTable = (unsigned long long)NewTokenList();
@@ -1362,9 +1363,9 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
}
VariableType = (VARIABLE_TYPE *)IdToken->VariableType;
- Temp = NewTemp();
+ Temp = NewTemp(Error);
TempSymbol = ToSymbol(Temp, Error);
- OffsetToken = NewTemp();
+ OffsetToken = NewTemp(Error);
OffsetSymbol = ToSymbol(OffsetToken, Error);
Symbol = NewSymbol();
@@ -1718,7 +1719,7 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
Symbol->Value = ArrayElementCount;
PushSymbol(CodeBuffer, Symbol);
- Temp = NewTemp();
+ Temp = NewTemp(Error);
TempSymbol = ToSymbol(Temp, Error);
PushSymbol(CodeBuffer, TempSymbol);
@@ -1784,7 +1785,7 @@ CodeGen(PSCRIPT_ENGINE_TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, PSCRI
Symbol->Value = ArrayElementCount;
PushSymbol(CodeBuffer, Symbol);
- Temp = NewTemp();
+ Temp = NewTemp(Error);
TempSymbol = ToSymbol(Temp, Error);
PushSymbol(CodeBuffer, TempSymbol);
From b19432ee53fd3e3a55929b0bb7e916294c0bf269 Mon Sep 17 00:00:00 2001
From: maxraulea
Date: Mon, 1 Jun 2026 22:37:38 +0200
Subject: [PATCH 220/323] Cross platform API for platform specific functions in
script-engine
---
.../platform/user/code/platform-lib-calls.c | 69 +++++++++++++++++++
.../platform/user/header/platform-lib-calls.h | 37 ++++++++++
2 files changed, 106 insertions(+)
create mode 100644 hyperdbg/include/platform/user/code/platform-lib-calls.c
create mode 100644 hyperdbg/include/platform/user/header/platform-lib-calls.h
diff --git a/hyperdbg/include/platform/user/code/platform-lib-calls.c b/hyperdbg/include/platform/user/code/platform-lib-calls.c
new file mode 100644
index 00000000..56f78020
--- /dev/null
+++ b/hyperdbg/include/platform/user/code/platform-lib-calls.c
@@ -0,0 +1,69 @@
+/**
+ * @file platform-lib-calls.c
+ * @author Max Raulea (max.raulea@gmail.com)
+ * @brief User mode Cross platform APIs for platofrm dependend library calls
+ * @details
+ * @version 0.19
+ * @date 2026-06-01
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "platform/user/header/platform-lib-calls.h"
+
+/**
+ * @brief Platform independent wrapper for vsprintf_s / vsnprintf
+ *
+ * @param Buffer output buffer
+ * @param BufferSize size of the output buffer
+ * @param Format format string
+ * @param ArgList variadic argument list
+ * @return INT number of characters written, or -1 on error
+ */
+INT
+PlatformVsnprintf(char * Buffer, SIZE_T BufferSize, const char * Format, va_list ArgList)
+{
+#if defined(_WIN32)
+ return vsprintf_s(Buffer, BufferSize, Format, ArgList);
+#elif defined(__linux__)
+ return vsnprintf(Buffer, BufferSize, Format, ArgList);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Platform independent wrapper for _strdup / strdup
+ *
+ * @param Str string to duplicate
+ * @return char * pointer to the duplicated string, or NULL on failure
+ */
+char *
+PlatformStrDup(const char * Str)
+{
+#if defined(_WIN32)
+ return _strdup(Str);
+#elif defined(__linux__)
+ return strdup(Str);
+#else
+# error "Unsupported platform"
+#endif
+}
+
+/**
+ * @brief Platform independent wrapper for RtlZeroMemory / memset
+ *
+ * @param Buffer pointer to the memory region to zero
+ * @param Size number of bytes to zero
+ */
+VOID
+PlatformZeroMemory(PVOID Buffer, SIZE_T Size)
+{
+#if defined(_WIN32)
+ RtlZeroMemory(Buffer, Size);
+#elif defined(__linux__)
+ memset(Buffer, 0, Size);
+#else
+# error "Unsupported platform"
+#endif
+}
diff --git a/hyperdbg/include/platform/user/header/platform-lib-calls.h b/hyperdbg/include/platform/user/header/platform-lib-calls.h
new file mode 100644
index 00000000..a449758c
--- /dev/null
+++ b/hyperdbg/include/platform/user/header/platform-lib-calls.h
@@ -0,0 +1,37 @@
+/**
+ * @file platform-lib-calls.h
+ * @author Max Raulea (max.raulea@gmail.com)
+ * @brief User mode Cross platform APIs for platofrm dependend library calls
+ * @details
+ * @version 0.19
+ * @date 2026-06-01
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+#if defined(__linux__)
+# include "../../../../include/SDK/HyperDbgSdk.h"
+#endif // defined(__linux__)
+
+#include
+#include
+
+//
+// VSNPRINTF
+//
+INT
+PlatformVsnprintf(char * Buffer, SIZE_T BufferSize, const char * Format, va_list ArgList);
+
+//
+// STRDUP
+//
+char *
+PlatformStrDup(const char * Str);
+
+//
+// SET MEMORY TO ZERO
+//
+VOID
+PlatformZeroMemory(PVOID Buffer, SIZE_T Size);
From 7e002af3a9949546014a237dda599fa41d2632ca Mon Sep 17 00:00:00 2001
From: maxraulea
Date: Mon, 1 Jun 2026 22:38:53 +0200
Subject: [PATCH 221/323] Definitions not present on Linux, so created empty
stub
---
hyperdbg/include/platform/general/header/Environment.h | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/hyperdbg/include/platform/general/header/Environment.h b/hyperdbg/include/platform/general/header/Environment.h
index 6b1cc80a..55c5f29a 100644
--- a/hyperdbg/include/platform/general/header/Environment.h
+++ b/hyperdbg/include/platform/general/header/Environment.h
@@ -29,3 +29,12 @@
#else
# error "This code cannot compile on non-Windows, non-Linux, and non-BSD platforms"
#endif
+
+
+
+// Windows source annotation language (SAL) not present in Linux, so defining them here for the compiler
+#ifdef HYPERDBG_ENV_LINUX
+# define _In_
+# define _Out_
+# define _Inout_
+#endif
From d3fe58bcc744e636d311899651cc25113755aee0 Mon Sep 17 00:00:00 2001
From: maxraulea
Date: Mon, 1 Jun 2026 22:44:34 +0200
Subject: [PATCH 222/323] Added extern keyword for globals for linux
compilation
---
hyperdbg/script-engine/code/globals.c | 12 ++++++++++++
hyperdbg/script-engine/header/globals.h | 6 +++---
hyperdbg/script-engine/header/scanner.h | 16 ++++++++--------
3 files changed, 23 insertions(+), 11 deletions(-)
diff --git a/hyperdbg/script-engine/code/globals.c b/hyperdbg/script-engine/code/globals.c
index ac0c47de..af68d655 100644
--- a/hyperdbg/script-engine/code/globals.c
+++ b/hyperdbg/script-engine/code/globals.c
@@ -10,3 +10,15 @@
*
*/
#include "pch.h"
+
+PSCRIPT_ENGINE_TOKEN_LIST GlobalIdTable;
+PUSER_DEFINED_FUNCTION_NODE UserDefinedFunctionHead;
+PUSER_DEFINED_FUNCTION_NODE CurrentUserDefinedFunction;
+PINCLUDE_NODE IncludeHead;
+unsigned int InputIdx;
+unsigned int CurrentLine;
+unsigned int CurrentLineIdx;
+unsigned int CurrentTokenIdx;
+HWDBG_INSTANCE_INFORMATION g_HwdbgInstanceInfo;
+BOOLEAN g_HwdbgInstanceInfoIsValid;
+PVOID g_MessageHandler;
diff --git a/hyperdbg/script-engine/header/globals.h b/hyperdbg/script-engine/header/globals.h
index 846ced28..d8855032 100644
--- a/hyperdbg/script-engine/header/globals.h
+++ b/hyperdbg/script-engine/header/globals.h
@@ -21,16 +21,16 @@
* @brief Instance information of the current hwdbg debuggee
*
*/
-HWDBG_INSTANCE_INFORMATION g_HwdbgInstanceInfo;
+extern HWDBG_INSTANCE_INFORMATION g_HwdbgInstanceInfo;
/**
* @brief Shows whether the instance info is valid (received) or not
*
*/
-BOOLEAN g_HwdbgInstanceInfoIsValid;
+extern BOOLEAN g_HwdbgInstanceInfoIsValid;
/**
* @brief Message handler function
*
*/
-PVOID g_MessageHandler;
+extern PVOID g_MessageHandler;
diff --git a/hyperdbg/script-engine/header/scanner.h b/hyperdbg/script-engine/header/scanner.h
index 99894a64..20c9589b 100644
--- a/hyperdbg/script-engine/header/scanner.h
+++ b/hyperdbg/script-engine/header/scanner.h
@@ -17,36 +17,36 @@
/**
* @brief lookup table for storing global Ids
*/
-PSCRIPT_ENGINE_TOKEN_LIST GlobalIdTable;
+extern PSCRIPT_ENGINE_TOKEN_LIST GlobalIdTable;
/**
* @brief
*/
-PUSER_DEFINED_FUNCTION_NODE UserDefinedFunctionHead;
+extern PUSER_DEFINED_FUNCTION_NODE UserDefinedFunctionHead;
-PUSER_DEFINED_FUNCTION_NODE CurrentUserDefinedFunction;
+extern PUSER_DEFINED_FUNCTION_NODE CurrentUserDefinedFunction;
-PINCLUDE_NODE IncludeHead;
+extern PINCLUDE_NODE IncludeHead;
/**
* @brief number of read characters from input
*/
-unsigned int InputIdx;
+extern unsigned int InputIdx;
/**
* @brief number of current reading line
*/
-unsigned int CurrentLine;
+extern unsigned int CurrentLine;
/*
* @brief current line start position
*/
-unsigned int CurrentLineIdx;
+extern unsigned int CurrentLineIdx;
/*
* @brief current PTOKEN start position
*/
-unsigned int CurrentTokenIdx;
+extern unsigned int CurrentTokenIdx;
////////////////////////////////////////////////////
// Interfacing functions //
From e923ec451ee93d6e8d1338a3ce388c0d7d440e26 Mon Sep 17 00:00:00 2001
From: maxraulea
Date: Mon, 1 Jun 2026 22:45:49 +0200
Subject: [PATCH 223/323] Fix paths
---
hyperdbg/script-engine/CMakeLists.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/hyperdbg/script-engine/CMakeLists.txt b/hyperdbg/script-engine/CMakeLists.txt
index 367a8b7b..85623bea 100644
--- a/hyperdbg/script-engine/CMakeLists.txt
+++ b/hyperdbg/script-engine/CMakeLists.txt
@@ -1,20 +1,20 @@
# Code generated by Visual Studio kit, DO NOT EDIT.
set(SourceFiles
- "../include/platform/user/header/Environment.h"
+ "../include/platform/general/header/Environment.h"
"header/common.h"
"header/globals.h"
"header/parse-table.h"
"header/scanner.h"
"header/script-engine.h"
"header/type.h"
- "pch.h"
+ "header/pch.h"
"code/common.c"
"code/globals.c"
"code/parse-table.c"
"code/scanner.c"
"code/script-engine.c"
"code/type.c"
- "pch.c"
+ "code/pch.c"
)
include_directories(
"header"
From b56f970e0a087aae48744b1b92c76daa1079b16f Mon Sep 17 00:00:00 2001
From: maxraulea
Date: Mon, 1 Jun 2026 22:47:00 +0200
Subject: [PATCH 224/323] Added headers for linux compilation
---
hyperdbg/script-engine/header/pch.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hyperdbg/script-engine/header/pch.h b/hyperdbg/script-engine/header/pch.h
index 5d52c1cf..aed90315 100644
--- a/hyperdbg/script-engine/header/pch.h
+++ b/hyperdbg/script-engine/header/pch.h
@@ -33,6 +33,9 @@
#include
#endif
+#include
+#include
+
#include
#include
#include
From 757738bf2374a850abe9aef20d42b89f524ef72c Mon Sep 17 00:00:00 2001
From: maxraulea
Date: Mon, 1 Jun 2026 22:48:12 +0200
Subject: [PATCH 225/323] Fix for cyclic dependency that broke gcc compilation
---
hyperdbg/script-engine/header/script-engine.h | 14 --------------
hyperdbg/script-engine/header/type.h | 15 +++++++++++++++
2 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/hyperdbg/script-engine/header/script-engine.h b/hyperdbg/script-engine/header/script-engine.h
index 6807d80e..2fa1996c 100644
--- a/hyperdbg/script-engine/header/script-engine.h
+++ b/hyperdbg/script-engine/header/script-engine.h
@@ -16,20 +16,6 @@
#ifndef SCRIPT_ENGINE_H
# define SCRIPT_ENGINE_H
-typedef enum _SCRIPT_ENGINE_ERROR_TYPE
-{
- SCRIPT_ENGINE_ERROR_FREE,
- SCRIPT_ENGINE_ERROR_SYNTAX,
- SCRIPT_ENGINE_ERROR_UNKNOWN_TOKEN,
- SCRIPT_ENGINE_ERROR_UNRESOLVED_VARIABLE,
- SCRIPT_ENGINE_ERROR_UNHANDLED_SEMANTIC_RULE,
- SCRIPT_ENGINE_ERROR_TEMP_LIST_FULL,
- SCRIPT_ENGINE_ERROR_UNDEFINED_FUNCTION,
- SCRIPT_ENGINE_ERROR_UNDEFINED_VARIABLE_TYPE,
- SCRIPT_ENGINE_ERROR_VOID_FUNCTION_RETURNING_VALUE,
- SCRIPT_ENGINE_ERROR_NON_VOID_FUNCTION_NOT_RETURNING_VALUE
-} SCRIPT_ENGINE_ERROR_TYPE,
- *PSCRIPT_ENGINE_ERROR_TYPE;
VOID
ShowMessages(const char * Fmt, ...);
diff --git a/hyperdbg/script-engine/header/type.h b/hyperdbg/script-engine/header/type.h
index fa2ac3e6..02cfdca7 100644
--- a/hyperdbg/script-engine/header/type.h
+++ b/hyperdbg/script-engine/header/type.h
@@ -65,4 +65,19 @@ extern VARIABLE_TYPE * VARIABLE_TYPE_FLOAT;
extern VARIABLE_TYPE * VARIABLE_TYPE_DOUBLE;
extern VARIABLE_TYPE * VARIABLE_TYPE_LDOUBLE;
+typedef enum _SCRIPT_ENGINE_ERROR_TYPE
+{
+ SCRIPT_ENGINE_ERROR_FREE,
+ SCRIPT_ENGINE_ERROR_SYNTAX,
+ SCRIPT_ENGINE_ERROR_UNKNOWN_TOKEN,
+ SCRIPT_ENGINE_ERROR_UNRESOLVED_VARIABLE,
+ SCRIPT_ENGINE_ERROR_UNHANDLED_SEMANTIC_RULE,
+ SCRIPT_ENGINE_ERROR_TEMP_LIST_FULL,
+ SCRIPT_ENGINE_ERROR_UNDEFINED_FUNCTION,
+ SCRIPT_ENGINE_ERROR_UNDEFINED_VARIABLE_TYPE,
+ SCRIPT_ENGINE_ERROR_VOID_FUNCTION_RETURNING_VALUE,
+ SCRIPT_ENGINE_ERROR_NON_VOID_FUNCTION_NOT_RETURNING_VALUE
+} SCRIPT_ENGINE_ERROR_TYPE,
+ *PSCRIPT_ENGINE_ERROR_TYPE;
+
#endif
From ab9f508ffcc1370e70ddacd06c16b98ea8f9fd65 Mon Sep 17 00:00:00 2001
From: jtaw5649 <213313463+jtaw5649@users.noreply.github.com>
Date: Tue, 2 Jun 2026 11:20:05 +0100
Subject: [PATCH 226/323] refactor(pe): add bounded image reader
---
hyperdbg/hyperdbg-test/code/main.cpp | 17 +-
.../code/tests/test-pe-parser.cpp | 178 +++++++++++++
hyperdbg/hyperdbg-test/header/testcases.h | 3 +
hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj | 7 +-
.../hyperdbg-test.vcxproj.filters | 11 +-
hyperdbg/include/config/Definition.h | 5 +
.../commands/debugging-commands/test.cpp | 9 +
.../debugger/user-level/pe-image-reader.cpp | 239 ++++++++++++++++++
.../code/debugger/user-level/pe-parser.cpp | 203 ++++++++++-----
hyperdbg/libhyperdbg/header/pe-image-reader.h | 47 ++++
hyperdbg/libhyperdbg/header/pe-parser.h | 2 +-
hyperdbg/libhyperdbg/libhyperdbg.vcxproj | 2 +
.../libhyperdbg/libhyperdbg.vcxproj.filters | 8 +-
13 files changed, 665 insertions(+), 66 deletions(-)
create mode 100644 hyperdbg/hyperdbg-test/code/tests/test-pe-parser.cpp
create mode 100644 hyperdbg/libhyperdbg/code/debugger/user-level/pe-image-reader.cpp
create mode 100644 hyperdbg/libhyperdbg/header/pe-image-reader.h
diff --git a/hyperdbg/hyperdbg-test/code/main.cpp b/hyperdbg/hyperdbg-test/code/main.cpp
index 1238f94b..62c3bc15 100644
--- a/hyperdbg/hyperdbg-test/code/main.cpp
+++ b/hyperdbg/hyperdbg-test/code/main.cpp
@@ -43,10 +43,25 @@ main(int argc, char * argv[])
printf("\n[x] The main command parser test cases failed\n");
}
}
- else if (!strcmp(argv[1], TEST_CASE_PARAMETER_FOR_SCRIPT_SEMANTIC_TEST_CASES))
+ else if (!strcmp(argv[1], TEST_CASE_PARAMETER_FOR_PE_PARSER))
{
//
// # Test case 2
+ // Testing PE parser helpers
+ //
+ if (TestPeParser())
+ {
+ printf("\n[*] The PE parser test cases passed successfully\n");
+ }
+ else
+ {
+ printf("\n[x] The PE parser test cases failed\n");
+ }
+ }
+ else if (!strcmp(argv[1], TEST_CASE_PARAMETER_FOR_SCRIPT_SEMANTIC_TEST_CASES))
+ {
+ //
+ // # Test case 3
// Testing script semantic test cases
//
if (TestSemanticScripts())
diff --git a/hyperdbg/hyperdbg-test/code/tests/test-pe-parser.cpp b/hyperdbg/hyperdbg-test/code/tests/test-pe-parser.cpp
new file mode 100644
index 00000000..382eb9a3
--- /dev/null
+++ b/hyperdbg/hyperdbg-test/code/tests/test-pe-parser.cpp
@@ -0,0 +1,178 @@
+/**
+ * @file test-pe-parser.cpp
+ * @author jtaw5649
+ * @brief Test cases for PE parser helpers
+ * @details
+ * @version 0.11
+ * @date 2026-06-01
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#include "header/pe-image-reader.h"
+
+static constexpr SIZE_T PeFixtureSize = 0x200;
+static constexpr LONG PeHeaderOffset = 0x80;
+
+static SIZE_T
+PeOptionalHeaderOffset()
+{
+ return PeHeaderOffset + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER);
+}
+
+static SIZE_T
+PeSectionHeaderOffset()
+{
+ return PeOptionalHeaderOffset() + sizeof(IMAGE_OPTIONAL_HEADER64);
+}
+
+static VOID
+WriteWord(BYTE * Buffer, SIZE_T Offset, WORD Value)
+{
+ Buffer[Offset] = (BYTE)(Value & 0xff);
+ Buffer[Offset + 1] = (BYTE)((Value >> 8) & 0xff);
+}
+
+static VOID
+WriteDword(BYTE * Buffer, SIZE_T Offset, DWORD Value)
+{
+ Buffer[Offset] = (BYTE)(Value & 0xff);
+ Buffer[Offset + 1] = (BYTE)((Value >> 8) & 0xff);
+ Buffer[Offset + 2] = (BYTE)((Value >> 16) & 0xff);
+ Buffer[Offset + 3] = (BYTE)((Value >> 24) & 0xff);
+}
+
+static VOID
+BuildMinimalPe64(BYTE * Buffer)
+{
+ ZeroMemory(Buffer, PeFixtureSize);
+
+ WriteWord(Buffer, 0, IMAGE_DOS_SIGNATURE);
+ WriteDword(Buffer, offsetof(IMAGE_DOS_HEADER, e_lfanew), PeHeaderOffset);
+
+ WriteDword(Buffer, PeHeaderOffset, IMAGE_NT_SIGNATURE);
+ WriteWord(Buffer, PeHeaderOffset + sizeof(DWORD) + offsetof(IMAGE_FILE_HEADER, Machine), IMAGE_FILE_MACHINE_AMD64);
+ WriteWord(Buffer, PeHeaderOffset + sizeof(DWORD) + offsetof(IMAGE_FILE_HEADER, NumberOfSections), 1);
+ WriteWord(Buffer,
+ PeHeaderOffset + sizeof(DWORD) + offsetof(IMAGE_FILE_HEADER, SizeOfOptionalHeader),
+ sizeof(IMAGE_OPTIONAL_HEADER64));
+ WriteWord(Buffer,
+ PeHeaderOffset + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER),
+ IMAGE_NT_OPTIONAL_HDR64_MAGIC);
+}
+
+static VOID
+SetOptionalHeaderSizeOfHeaders(BYTE * Buffer, DWORD SizeOfHeaders)
+{
+ SIZE_T Offset = PeOptionalHeaderOffset() + offsetof(IMAGE_OPTIONAL_HEADER64, SizeOfHeaders);
+
+ WriteDword(Buffer, Offset, SizeOfHeaders);
+}
+
+static IMAGE_SECTION_HEADER *
+GetFixtureSectionHeader(BYTE * Buffer)
+{
+ return (IMAGE_SECTION_HEADER *)(Buffer + PeSectionHeaderOffset());
+}
+
+static VOID
+ConfigureTextSection(BYTE * Buffer, DWORD VirtualAddress, DWORD VirtualSize, DWORD PointerToRawData, DWORD SizeOfRawData)
+{
+ IMAGE_SECTION_HEADER * SectionHeader = GetFixtureSectionHeader(Buffer);
+
+ ZeroMemory(SectionHeader, sizeof(*SectionHeader));
+ CopyMemory(SectionHeader->Name, ".text", sizeof(".text") - 1);
+ SectionHeader->Misc.VirtualSize = VirtualSize;
+ SectionHeader->VirtualAddress = VirtualAddress;
+ SectionHeader->SizeOfRawData = SizeOfRawData;
+ SectionHeader->PointerToRawData = PointerToRawData;
+}
+
+BOOLEAN
+TestPeParser()
+{
+ BOOLEAN OverallResult = TRUE;
+ INT32 TestNum = 0;
+ BYTE Buffer[PeFixtureSize] = {0};
+
+ BuildMinimalPe64(Buffer);
+ TestNum++;
+ {
+ PE_IMAGE_READER Reader = {0};
+
+ if (PeImageReaderInitialize(Buffer, sizeof(Buffer), &Reader) && !PeImageReaderIs32Bit(&Reader))
+ {
+ printf("[+] Test number %d Passed\n", TestNum);
+ }
+ else
+ {
+ printf("[-] Test number %d Failed\n", TestNum);
+ printf("[x] valid PE64 did not initialize as PE32+\n");
+ return FALSE;
+ }
+ }
+
+ BuildMinimalPe64(Buffer);
+ WriteWord(Buffer, 0, 0);
+ TestNum++;
+ {
+ PE_IMAGE_READER Reader = {0};
+
+ if (!PeImageReaderInitialize(Buffer, sizeof(Buffer), &Reader))
+ {
+ printf("[+] Test number %d Passed\n", TestNum);
+ }
+ else
+ {
+ printf("[-] Test number %d Failed\n", TestNum);
+ printf("[x] invalid DOS magic initialized successfully\n");
+ return FALSE;
+ }
+ }
+
+ BuildMinimalPe64(Buffer);
+ SetOptionalHeaderSizeOfHeaders(Buffer, 0x1c0);
+ ConfigureTextSection(Buffer, 0x1000, 0x50, 0x1c0, 0x40);
+ TestNum++;
+ {
+ PE_IMAGE_READER Reader = {0};
+ SIZE_T FileOffset = 0;
+
+ if (PeImageReaderInitialize(Buffer, sizeof(Buffer), &Reader) &&
+ PeImageReaderRvaToFileOffset(&Reader, 0x1010, 4, &FileOffset) && FileOffset == 0x1d0)
+ {
+ printf("[+] Test number %d Passed\n", TestNum);
+ }
+ else
+ {
+ printf("[-] Test number %d Failed\n", TestNum);
+ printf("[x] valid section RVA did not map to raw file offset\n");
+ return FALSE;
+ }
+ }
+
+ BuildMinimalPe64(Buffer);
+ SetOptionalHeaderSizeOfHeaders(Buffer, 0x1c0);
+ ConfigureTextSection(Buffer, 0x1000, 0x40, 0x300, 0x20);
+ TestNum++;
+ {
+ PE_IMAGE_READER Reader = {0};
+ SIZE_T FileOffset = 0;
+
+ if (PeImageReaderInitialize(Buffer, sizeof(Buffer), &Reader) &&
+ !PeImageReaderRvaToFileOffset(&Reader, 0x1000, 1, &FileOffset))
+ {
+ printf("[+] Test number %d Passed\n", TestNum);
+ }
+ else
+ {
+ printf("[-] Test number %d Failed\n", TestNum);
+ printf("[x] RVA mapping accepted raw pointer outside file\n");
+ OverallResult = FALSE;
+ }
+ }
+
+ return OverallResult;
+}
diff --git a/hyperdbg/hyperdbg-test/header/testcases.h b/hyperdbg/hyperdbg-test/header/testcases.h
index f3cda4e7..c53f72bd 100644
--- a/hyperdbg/hyperdbg-test/header/testcases.h
+++ b/hyperdbg/hyperdbg-test/header/testcases.h
@@ -18,5 +18,8 @@
BOOLEAN
TestCommandParser();
+BOOLEAN
+TestPeParser();
+
BOOLEAN
TestSemanticScripts();
diff --git a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
index f057ae68..8de12676 100644
--- a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
+++ b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
@@ -63,7 +63,7 @@
true
_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
true
- $(SolutionDir)\include;$(SolutionDir)dependencies;$(ProjectDir);%(AdditionalIncludeDirectories)
+ $(SolutionDir)\include;$(SolutionDir)dependencies;$(ProjectDir);$(SolutionDir)libhyperdbg;%(AdditionalIncludeDirectories)
Create
pch.h
MultiThreadedDebug
@@ -85,7 +85,7 @@
true
_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
true
- $(SolutionDir)\include;$(SolutionDir)dependencies;$(ProjectDir);%(AdditionalIncludeDirectories)
+ $(SolutionDir)\include;$(SolutionDir)dependencies;$(ProjectDir);$(SolutionDir)libhyperdbg;%(AdditionalIncludeDirectories)
Create
pch.h
MultiThreaded
@@ -104,8 +104,10 @@
+
+
@@ -116,6 +118,7 @@
+
diff --git a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters
index 40086654..0865f36c 100644
--- a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters
+++ b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters
@@ -26,6 +26,9 @@
code\tests
+
+ code\tests
+
code
@@ -41,6 +44,9 @@
code\hardware
+
+ code\tests
+
code
@@ -61,10 +67,13 @@
header
+
+ header
+
code\assembly
-
\ No newline at end of file
+
diff --git a/hyperdbg/include/config/Definition.h b/hyperdbg/include/config/Definition.h
index f9089a6d..5424c9ff 100644
--- a/hyperdbg/include/config/Definition.h
+++ b/hyperdbg/include/config/Definition.h
@@ -79,6 +79,11 @@
*/
#define TEST_CASE_PARAMETER_FOR_MAIN_COMMAND_PARSER "test-command-parser"
+/**
+ * @brief Test case parameter for testing PE parser
+ */
+#define TEST_CASE_PARAMETER_FOR_PE_PARSER "test-pe-parser"
+
/**
* @brief Test case parameter for testing semantic script tests
*/
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/test.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/test.cpp
index 7c40766b..aa9291cd 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/test.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/test.cpp
@@ -115,6 +115,15 @@ CommandTestAllFunctionalities()
return;
}
+ //
+ // Test PE parser helpers
+ //
+ if (!OpenHyperDbgTestProcess(&ThreadHandle, &ProcessHandle, (CHAR *)TEST_CASE_PARAMETER_FOR_PE_PARSER))
+ {
+ ShowMessages("err, start HyperDbg test process for testing the PE parser\n");
+ return;
+ }
+
//
// Test script engine (script parser) using semantic tests
//
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-image-reader.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-image-reader.cpp
new file mode 100644
index 00000000..b147a881
--- /dev/null
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-image-reader.cpp
@@ -0,0 +1,239 @@
+/**
+ * @file pe-image-reader.cpp
+ * @author jtaw5649
+ * @brief Bounded in-memory Portable Executable reader
+ * @details
+ * @version 0.1
+ * @date 2026-06-01
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#include "pch.h"
+
+#include "header/pe-image-reader.h"
+
+static BOOLEAN
+PeImageReaderHasRange(SIZE_T ImageSize, SIZE_T Offset, SIZE_T Length)
+{
+ return Offset <= ImageSize && Length <= ImageSize - Offset;
+}
+
+static BOOLEAN
+PeImageReaderAddSize(SIZE_T Left, SIZE_T Right, SIZE_T * Result)
+{
+ if (Result == NULL || Right > (SIZE_T)-1 - Left)
+ {
+ return FALSE;
+ }
+
+ *Result = Left + Right;
+ return TRUE;
+}
+
+static DWORD
+PeImageReaderGetSizeOfHeaders(PPE_IMAGE_READER Reader)
+{
+ const BYTE * OptionalHeader = Reader->NtHeaders + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER);
+
+ if (Reader->Is32Bit)
+ {
+ return ((const IMAGE_OPTIONAL_HEADER32 *)OptionalHeader)->SizeOfHeaders;
+ }
+
+ return ((const IMAGE_OPTIONAL_HEADER64 *)OptionalHeader)->SizeOfHeaders;
+}
+
+BOOLEAN
+PeImageReaderInitialize(const BYTE * ImageBase, SIZE_T ImageSize, PPE_IMAGE_READER Reader)
+{
+ if (ImageBase == NULL || Reader == NULL)
+ {
+ return FALSE;
+ }
+
+ ZeroMemory(Reader, sizeof(*Reader));
+
+ if (!PeImageReaderHasRange(ImageSize, 0, sizeof(IMAGE_DOS_HEADER)))
+ {
+ return FALSE;
+ }
+
+ const IMAGE_DOS_HEADER * DosHeader = (const IMAGE_DOS_HEADER *)ImageBase;
+ if (DosHeader->e_magic != IMAGE_DOS_SIGNATURE || DosHeader->e_lfanew < 0)
+ {
+ return FALSE;
+ }
+
+ SIZE_T NtHeaderOffset = (SIZE_T)DosHeader->e_lfanew;
+ if (!PeImageReaderHasRange(ImageSize, NtHeaderOffset, sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER)))
+ {
+ return FALSE;
+ }
+
+ const BYTE * NtHeaders = ImageBase + NtHeaderOffset;
+ if (*(const DWORD *)NtHeaders != IMAGE_NT_SIGNATURE)
+ {
+ return FALSE;
+ }
+
+ const IMAGE_FILE_HEADER * FileHeader = (const IMAGE_FILE_HEADER *)(NtHeaders + sizeof(DWORD));
+ SIZE_T OptionalHeaderOffset = NtHeaderOffset + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER);
+
+ if (FileHeader->SizeOfOptionalHeader < sizeof(WORD) ||
+ !PeImageReaderHasRange(ImageSize, OptionalHeaderOffset, FileHeader->SizeOfOptionalHeader))
+ {
+ return FALSE;
+ }
+
+ WORD OptionalHeaderMagic = *(const WORD *)(ImageBase + OptionalHeaderOffset);
+ BOOLEAN Is32Bit = FALSE;
+ SIZE_T MinimumOptionalHeaderSize = 0;
+
+ if (OptionalHeaderMagic == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
+ {
+ Is32Bit = TRUE;
+ MinimumOptionalHeaderSize = sizeof(IMAGE_OPTIONAL_HEADER32);
+ }
+ else if (OptionalHeaderMagic == IMAGE_NT_OPTIONAL_HDR64_MAGIC)
+ {
+ MinimumOptionalHeaderSize = sizeof(IMAGE_OPTIONAL_HEADER64);
+ }
+ else
+ {
+ return FALSE;
+ }
+
+ if (FileHeader->SizeOfOptionalHeader < MinimumOptionalHeaderSize)
+ {
+ return FALSE;
+ }
+
+ SIZE_T SectionTableOffset = OptionalHeaderOffset + FileHeader->SizeOfOptionalHeader;
+ SIZE_T SectionTableSize = (SIZE_T)FileHeader->NumberOfSections * sizeof(IMAGE_SECTION_HEADER);
+
+ if (FileHeader->NumberOfSections != 0 && SectionTableSize / sizeof(IMAGE_SECTION_HEADER) != FileHeader->NumberOfSections)
+ {
+ return FALSE;
+ }
+
+ if (!PeImageReaderHasRange(ImageSize, SectionTableOffset, SectionTableSize))
+ {
+ return FALSE;
+ }
+
+ Reader->ImageBase = ImageBase;
+ Reader->ImageSize = ImageSize;
+ Reader->DosHeader = DosHeader;
+ Reader->NtHeaders = NtHeaders;
+ Reader->FileHeader = FileHeader;
+ Reader->SectionHeaders = (const IMAGE_SECTION_HEADER *)(ImageBase + SectionTableOffset);
+ Reader->OptionalHeaderMagic = OptionalHeaderMagic;
+ Reader->Is32Bit = Is32Bit;
+
+ return TRUE;
+}
+
+BOOLEAN
+PeImageReaderIs32Bit(PPE_IMAGE_READER Reader)
+{
+ if (Reader == NULL)
+ {
+ return FALSE;
+ }
+
+ return Reader->Is32Bit;
+}
+
+BOOLEAN
+PeImageReaderGetPointerAtOffset(PPE_IMAGE_READER Reader, SIZE_T Offset, SIZE_T Length, const BYTE ** Pointer)
+{
+ if (Reader == NULL || Reader->ImageBase == NULL || Pointer == NULL || !PeImageReaderHasRange(Reader->ImageSize, Offset, Length))
+ {
+ return FALSE;
+ }
+
+ *Pointer = Reader->ImageBase + Offset;
+ return TRUE;
+}
+
+BOOLEAN
+PeImageReaderGetSectionName(const IMAGE_SECTION_HEADER * SectionHeader, CHAR * NameBuffer, SIZE_T NameBufferSize)
+{
+ if (SectionHeader == NULL || NameBuffer == NULL || NameBufferSize == 0)
+ {
+ return FALSE;
+ }
+
+ SIZE_T NameLength = 0;
+ while (NameLength < IMAGE_SIZEOF_SHORT_NAME && SectionHeader->Name[NameLength] != '\0')
+ {
+ NameLength++;
+ }
+
+ SIZE_T CopyLength = NameLength;
+ if (CopyLength >= NameBufferSize)
+ {
+ CopyLength = NameBufferSize - 1;
+ }
+
+ CopyMemory(NameBuffer, SectionHeader->Name, CopyLength);
+ NameBuffer[CopyLength] = '\0';
+
+ return TRUE;
+}
+
+BOOLEAN
+PeImageReaderRvaToFileOffset(PPE_IMAGE_READER Reader, DWORD Rva, DWORD Length, PSIZE_T FileOffset)
+{
+ if (Reader == NULL || Reader->ImageBase == NULL || Reader->FileHeader == NULL || Reader->SectionHeaders == NULL || FileOffset == NULL)
+ {
+ return FALSE;
+ }
+
+ DWORD SizeOfHeaders = PeImageReaderGetSizeOfHeaders(Reader);
+ SIZE_T HeaderEnd = 0;
+
+ if (PeImageReaderAddSize((SIZE_T)Rva, (SIZE_T)Length, &HeaderEnd) &&
+ SizeOfHeaders <= Reader->ImageSize && Rva < SizeOfHeaders && HeaderEnd <= SizeOfHeaders &&
+ PeImageReaderHasRange(Reader->ImageSize, (SIZE_T)Rva, (SIZE_T)Length))
+ {
+ *FileOffset = (SIZE_T)Rva;
+ return TRUE;
+ }
+
+ for (WORD Index = 0; Index < Reader->FileHeader->NumberOfSections; Index++)
+ {
+ const IMAGE_SECTION_HEADER * SectionHeader = &Reader->SectionHeaders[Index];
+ DWORD SectionSpan = max(SectionHeader->Misc.VirtualSize, SectionHeader->SizeOfRawData);
+
+ if (SectionSpan == 0 || Rva < SectionHeader->VirtualAddress)
+ {
+ continue;
+ }
+
+ DWORD Delta = Rva - SectionHeader->VirtualAddress;
+ if (Delta >= SectionSpan || Length > SectionSpan - Delta)
+ {
+ continue;
+ }
+
+ if (Delta > SectionHeader->SizeOfRawData || Length > SectionHeader->SizeOfRawData - Delta)
+ {
+ return FALSE;
+ }
+
+ SIZE_T RawOffset = 0;
+
+ if (!PeImageReaderAddSize((SIZE_T)SectionHeader->PointerToRawData, (SIZE_T)Delta, &RawOffset) ||
+ !PeImageReaderHasRange(Reader->ImageSize, RawOffset, (SIZE_T)Length))
+ {
+ return FALSE;
+ }
+
+ *FileOffset = RawOffset;
+ return TRUE;
+ }
+
+ return FALSE;
+}
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index 3ed91823..1a75e890 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -11,6 +11,8 @@
*/
#include "pch.h"
+#include "header/pe-image-reader.h"
+
/**
* @brief Locates the Rich header signature in a PE file
*
@@ -25,7 +27,7 @@
* @note The XOR key is used to decode the actual Rich header entries
**/
INT
-FindRichHeader(PIMAGE_DOS_HEADER DosHeader, CHAR Key[])
+FindRichHeader(PIMAGE_DOS_HEADER DosHeader, DWORD FileSize, CHAR Key[])
{
//
// Get base address for offset calculations
@@ -37,6 +39,15 @@ FindRichHeader(PIMAGE_DOS_HEADER DosHeader, CHAR Key[])
//
DWORD Offset = DosHeader->e_lfanew;
+ if (FileSize < sizeof(IMAGE_DOS_HEADER) ||
+ DosHeader->e_magic != IMAGE_DOS_SIGNATURE ||
+ Offset < sizeof(IMAGE_DOS_HEADER) ||
+ Offset > FileSize ||
+ Offset < 8)
+ {
+ return 0;
+ }
+
//
// Search for "Rich" signature
// We stop 4 bytes before the PE header to avoid reading beyond bounds
@@ -210,7 +221,7 @@ DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr)
//
// Search backwards for the DanS signature that marks the beginning
//
- while (true)
+ while (IndexPointer >= 0)
{
char TmpChar[4];
@@ -236,11 +247,11 @@ DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr)
//
if (TmpChar[1] == 0x61 && TmpChar[0] == 0x44)
{
- break;
+ return RichHeaderSize;
}
}
- return RichHeaderSize;
+ return 0;
}
/**
@@ -309,19 +320,23 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
const CHAR * SectionToShow,
BOOLEAN Is32Bit)
{
- RICH_HEADER_INFO PeFileRichHeaderInfo {0};
- RICH_HEADER PeFileRichHeader {0};
- BOOLEAN Result = FALSE, RichFound = FALSE;
- HANDLE MapObjectHandle, FileHandle; // File Mapping Object
- UINT32 NumberOfSections; // Number of sections
- LPVOID BaseAddr; // Pointer to the base memory of mapped file
- PIMAGE_DOS_HEADER DosHeader; // Pointer to DOS Header
- PIMAGE_NT_HEADERS32 NtHeader32 = NULL; // Pointer to NT Header 32 bit
- PIMAGE_NT_HEADERS64 NtHeader64 = NULL; // Pointer to NT Header 64 bit
- IMAGE_FILE_HEADER Header; // Pointer to image file header of NT Header
- IMAGE_OPTIONAL_HEADER32 OpHeader32; // Optional Header of PE files present in NT Header structure
- IMAGE_OPTIONAL_HEADER64 OpHeader64; // Optional Header of PE files present in NT Header structure
- PIMAGE_SECTION_HEADER SecHeader; // Section Header or Section Table Header
+ RICH_HEADER_INFO PeFileRichHeaderInfo {0};
+ RICH_HEADER PeFileRichHeader {0};
+ BOOLEAN Result = FALSE, RichFound = FALSE;
+ HANDLE MapObjectHandle = NULL, FileHandle = INVALID_HANDLE_VALUE; // File Mapping Object
+ UINT32 NumberOfSections; // Number of sections
+ LPVOID BaseAddr = NULL; // Pointer to the base memory of mapped file
+ PIMAGE_DOS_HEADER DosHeader; // Pointer to DOS Header
+ PIMAGE_NT_HEADERS32 NtHeader32 = NULL; // Pointer to NT Header 32 bit
+ PIMAGE_NT_HEADERS64 NtHeader64 = NULL; // Pointer to NT Header 64 bit
+ IMAGE_FILE_HEADER Header; // Pointer to image file header of NT Header
+ IMAGE_OPTIONAL_HEADER32 OpHeader32; // Optional Header of PE files present in NT Header structure
+ IMAGE_OPTIONAL_HEADER64 OpHeader64; // Optional Header of PE files present in NT Header structure
+ const IMAGE_SECTION_HEADER * SecHeader; // Section Header or Section Table Header
+ PE_IMAGE_READER Reader;
+ LARGE_INTEGER FileSize;
+ CHAR Key[4];
+ INT RichHeaderOffset;
//
// Open the EXE File
@@ -334,6 +349,12 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
return FALSE;
}
+ if (!GetFileSizeEx(FileHandle, &FileSize) || FileSize.QuadPart < (LONGLONG)sizeof(IMAGE_DOS_HEADER))
+ {
+ CloseHandle(FileHandle);
+ return FALSE;
+ }
+
//
// Mapping Given EXE file to Memory
//
@@ -349,6 +370,7 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
if (BaseAddr == NULL)
{
+ CloseHandle(MapObjectHandle);
CloseHandle(FileHandle);
return FALSE;
}
@@ -358,8 +380,24 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
//
DosHeader = (PIMAGE_DOS_HEADER)BaseAddr; // 0x04000000
- char Key[4];
- int RichHeaderOffset = FindRichHeader(DosHeader, Key);
+ if (DosHeader->e_magic != IMAGE_DOS_SIGNATURE ||
+ DosHeader->e_lfanew < sizeof(IMAGE_DOS_HEADER) ||
+ (LONGLONG)DosHeader->e_lfanew > FileSize.QuadPart ||
+ (LONGLONG)DosHeader->e_lfanew + (LONGLONG)(Is32Bit ? sizeof(IMAGE_NT_HEADERS32) : sizeof(IMAGE_NT_HEADERS64)) > FileSize.QuadPart)
+ {
+ ShowMessages("\nGiven File is not a valid PE file\n");
+ Result = FALSE;
+ goto Finished;
+ }
+
+ if (!PeImageReaderInitialize((const BYTE *)BaseAddr, (SIZE_T)FileSize.QuadPart, &Reader))
+ {
+ ShowMessages("\nGiven File is not a valid PE file\n");
+ Result = FALSE;
+ goto Finished;
+ }
+
+ RichHeaderOffset = FindRichHeader(DosHeader, (DWORD)FileSize.QuadPart, Key);
if (RichHeaderOffset != 0)
{
@@ -374,17 +412,25 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
int RichHeaderSize = DecryptRichHeader(Key, RichHeaderOffset, DataPtr);
int IndexPointer = RichHeaderOffset - RichHeaderSize;
+ if (RichHeaderSize < 16 || ((RichHeaderSize - 16) % 8) != 0 || (RichHeaderSize - 16) / 8 == 0 || IndexPointer < 0)
+ {
+ delete[] DataPtr;
+ goto SkipRichHeader;
+ }
+
char * richHeaderPtr = new char[RichHeaderSize];
memcpy(richHeaderPtr, DataPtr + IndexPointer, RichHeaderSize);
delete[] DataPtr;
FindRichEntries(richHeaderPtr, RichHeaderSize, Key, &PeFileRichHeaderInfo);
- PeFileRichHeader.Entries = new RICH_HEADER_ENTRY[PeFileRichHeaderInfo.Entries];
+ PeFileRichHeader.Entries = new RICH_HEADER_ENTRY[PeFileRichHeaderInfo.Entries + 1];
SetRichEntries(RichHeaderSize, richHeaderPtr, &PeFileRichHeader);
RichFound = TRUE;
}
+SkipRichHeader:
+
//
// Check for Valid DOS file
//
@@ -653,30 +699,19 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
//
// Retrieve a pointer to First Section Header(or Section Table Entry)
//
- if (Is32Bit)
- {
- SecHeader = IMAGE_FIRST_SECTION(NtHeader32);
- NumberOfSections = NtHeader32->FileHeader.NumberOfSections;
- }
- else
- {
- SecHeader = IMAGE_FIRST_SECTION(NtHeader64);
- NumberOfSections = NtHeader64->FileHeader.NumberOfSections;
- }
+ SecHeader = Reader.SectionHeaders;
+ NumberOfSections = Reader.FileHeader->NumberOfSections;
for (UINT32 i = 0; i < NumberOfSections; i++, SecHeader++)
{
- if (Is32Bit)
- {
- ShowMessages("\n\nSection Info (%d of %d)", i + 1, NtHeader32->FileHeader.NumberOfSections);
- }
- else
- {
- ShowMessages("\n\nSection Info (%d of %d)", i + 1, NtHeader64->FileHeader.NumberOfSections);
- }
+ CHAR SectionName[IMAGE_SIZEOF_SHORT_NAME + 1];
+
+ PeImageReaderGetSectionName(SecHeader, SectionName, sizeof(SectionName));
+
+ ShowMessages("\n\nSection Info (%d of %d)", i + 1, NumberOfSections);
ShowMessages("\n---------------------");
- ShowMessages("\n%-36s%s", "Section Header name : ", SecHeader->Name);
+ ShowMessages("\n%-36s%s", "Section Header name : ", SectionName);
ShowMessages("\n%-36s%#x",
"ActualSize of code or data : ",
SecHeader->Misc.VirtualSize);
@@ -720,19 +755,30 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
//
if (SectionToShow != NULL)
{
- if (!_strcmpi(SectionToShow, (const char *)SecHeader->Name))
+ if (!_strcmpi(SectionToShow, SectionName))
{
if (SecHeader->SizeOfRawData != 0)
{
+ const BYTE * Pointer = NULL;
+
+ if (!PeImageReaderGetPointerAtOffset(&Reader,
+ SecHeader->PointerToRawData,
+ SecHeader->SizeOfRawData,
+ &Pointer))
+ {
+ ShowMessages("\nerr, invalid section raw data\n");
+ continue;
+ }
+
if (Is32Bit)
{
- PeHexDump((char *)((UINT64)DosHeader + SecHeader->PointerToRawData),
+ PeHexDump((char *)Pointer,
SecHeader->SizeOfRawData,
OpHeader32.ImageBase + SecHeader->VirtualAddress);
}
else
{
- PeHexDump((char *)((UINT64)DosHeader + SecHeader->PointerToRawData),
+ PeHexDump((char *)Pointer,
SecHeader->SizeOfRawData,
(int)(OpHeader64.ImageBase + SecHeader->VirtualAddress));
}
@@ -753,8 +799,30 @@ Finished:
//
// Unmap and close the handles
//
- UnmapViewOfFile(BaseAddr);
- CloseHandle(MapObjectHandle);
+ if (PeFileRichHeaderInfo.PtrToBuffer != NULL)
+ {
+ delete[] PeFileRichHeaderInfo.PtrToBuffer;
+ }
+
+ if (PeFileRichHeader.Entries != NULL)
+ {
+ delete[] PeFileRichHeader.Entries;
+ }
+
+ if (BaseAddr != NULL)
+ {
+ UnmapViewOfFile(BaseAddr);
+ }
+
+ if (MapObjectHandle != NULL)
+ {
+ CloseHandle(MapObjectHandle);
+ }
+
+ if (FileHandle != INVALID_HANDLE_VALUE)
+ {
+ CloseHandle(FileHandle);
+ }
return Result;
}
@@ -769,13 +837,13 @@ Finished:
BOOLEAN
PeIsPE32BitOr64Bit(const WCHAR * AddressOfFile, PBOOLEAN Is32Bit)
{
- BOOLEAN Result = FALSE;
- HANDLE MapObjectHandle, FileHandle; // File Mapping Object
- LPVOID BaseAddr; // Pointer to the base memory of mapped file
- PIMAGE_DOS_HEADER DosHeader; // Pointer to DOS Header
- PIMAGE_NT_HEADERS32 NtHeader32 = NULL; // Pointer to NT Header 32 bit
- IMAGE_OPTIONAL_HEADER32 OpHeader32; // Optional Header of PE files present in NT Header structure
- IMAGE_FILE_HEADER Header; // Pointer to image file header of NT Header
+ BOOLEAN Result = FALSE;
+ HANDLE MapObjectHandle, FileHandle; // File Mapping Object
+ LPVOID BaseAddr; // Pointer to the base memory of mapped file
+ PIMAGE_DOS_HEADER DosHeader; // Pointer to DOS Header
+ PIMAGE_NT_HEADERS32 NtHeader32 = NULL; // Pointer to NT Header 32 bit
+ PE_IMAGE_READER Reader;
+ LARGE_INTEGER FileSize;
//
// Open the EXE File
@@ -787,6 +855,12 @@ PeIsPE32BitOr64Bit(const WCHAR * AddressOfFile, PBOOLEAN Is32Bit)
return FALSE;
};
+ if (!GetFileSizeEx(FileHandle, &FileSize) || FileSize.QuadPart < (LONGLONG)sizeof(IMAGE_DOS_HEADER))
+ {
+ CloseHandle(FileHandle);
+ return FALSE;
+ }
+
//
// Mapping Given EXE file to Memory
//
@@ -805,6 +879,7 @@ PeIsPE32BitOr64Bit(const WCHAR * AddressOfFile, PBOOLEAN Is32Bit)
if (BaseAddr == NULL)
{
+ CloseHandle(MapObjectHandle);
CloseHandle(FileHandle);
ShowMessages("err, unable to create map view of file (%x)\n", GetLastError());
@@ -827,6 +902,15 @@ PeIsPE32BitOr64Bit(const WCHAR * AddressOfFile, PBOOLEAN Is32Bit)
goto Finished;
}
+ if (DosHeader->e_lfanew < sizeof(IMAGE_DOS_HEADER) ||
+ (LONGLONG)DosHeader->e_lfanew + (LONGLONG)sizeof(IMAGE_NT_HEADERS32) > FileSize.QuadPart)
+ {
+ Result = FALSE;
+
+ ShowMessages("err, invalid image NT header offset\n");
+ goto Finished;
+ }
+
//
// Offset of NT Header is found at 0x3c location in DOS header specified by
// e_lfanew
@@ -847,21 +931,19 @@ PeIsPE32BitOr64Bit(const WCHAR * AddressOfFile, PBOOLEAN Is32Bit)
goto Finished;
}
- //
- // Info about Optional Header
- //
- OpHeader32 = NtHeader32->OptionalHeader;
+ if (!PeImageReaderInitialize((const BYTE *)BaseAddr, (SIZE_T)FileSize.QuadPart, &Reader))
+ {
+ Result = FALSE;
- //
- // Get the IMAGE FILE HEADER Structure
- //
- Header = NtHeader32->FileHeader;
+ ShowMessages("err, the selected file is not in a valid PE format\n");
+ goto Finished;
+ }
//
// Only few are determined (for remaining refer
// to the above specification)
//
- switch (Header.Machine)
+ switch (Reader.FileHeader->Machine)
{
case IMAGE_FILE_MACHINE_I386:
*Is32Bit = TRUE;
@@ -887,6 +969,7 @@ Finished:
//
UnmapViewOfFile(BaseAddr);
CloseHandle(MapObjectHandle);
+ CloseHandle(FileHandle);
return Result;
}
diff --git a/hyperdbg/libhyperdbg/header/pe-image-reader.h b/hyperdbg/libhyperdbg/header/pe-image-reader.h
new file mode 100644
index 00000000..88c07d9f
--- /dev/null
+++ b/hyperdbg/libhyperdbg/header/pe-image-reader.h
@@ -0,0 +1,47 @@
+/**
+ * @file pe-image-reader.h
+ * @author jtaw5649
+ * @brief Bounded in-memory Portable Executable reader
+ * @details
+ * @version 0.1
+ * @date 2026-06-01
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+//////////////////////////////////////////////////
+// Structures //
+//////////////////////////////////////////////////
+
+typedef struct _PE_IMAGE_READER
+{
+ const BYTE * ImageBase;
+ SIZE_T ImageSize;
+ const IMAGE_DOS_HEADER * DosHeader;
+ const BYTE * NtHeaders;
+ const IMAGE_FILE_HEADER * FileHeader;
+ const IMAGE_SECTION_HEADER * SectionHeaders;
+ WORD OptionalHeaderMagic;
+ BOOLEAN Is32Bit;
+} PE_IMAGE_READER, *PPE_IMAGE_READER;
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+BOOLEAN
+PeImageReaderInitialize(const BYTE * ImageBase, SIZE_T ImageSize, PPE_IMAGE_READER Reader);
+
+BOOLEAN
+PeImageReaderIs32Bit(PPE_IMAGE_READER Reader);
+
+BOOLEAN
+PeImageReaderGetPointerAtOffset(PPE_IMAGE_READER Reader, SIZE_T Offset, SIZE_T Length, const BYTE ** Pointer);
+
+BOOLEAN
+PeImageReaderGetSectionName(const IMAGE_SECTION_HEADER * SectionHeader, CHAR * NameBuffer, SIZE_T NameBufferSize);
+
+BOOLEAN
+PeImageReaderRvaToFileOffset(PPE_IMAGE_READER Reader, DWORD Rva, DWORD Length, PSIZE_T FileOffset);
diff --git a/hyperdbg/libhyperdbg/header/pe-parser.h b/hyperdbg/libhyperdbg/header/pe-parser.h
index cef4403e..0aea703e 100644
--- a/hyperdbg/libhyperdbg/header/pe-parser.h
+++ b/hyperdbg/libhyperdbg/header/pe-parser.h
@@ -50,7 +50,7 @@ UINT32
PeGetSyscallNumber(LPCSTR NtFunctionName);
INT
-FindRichHeader(PIMAGE_DOS_HEADER DosHeader, CHAR Key[]);
+FindRichHeader(PIMAGE_DOS_HEADER DosHeader, DWORD FileSize, CHAR Key[]);
VOID
SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr, PRICH_HEADER PeFileRichHeader);
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
index cfeb8796..783d87aa 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
@@ -150,6 +150,7 @@
+
@@ -220,6 +221,7 @@
+
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
index 02804e76..1b4f5f17 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
@@ -146,6 +146,9 @@
header
+
+ header
+
header
@@ -463,6 +466,9 @@
code\debugger\user-level
+
+ code\debugger\user-level
+
code\debugger\commands\meta-commands
@@ -640,4 +646,4 @@
code\assembly
-
\ No newline at end of file
+
From a9d64010e37ad71514adae6bc108ccdfce63856f Mon Sep 17 00:00:00 2001
From: jtaw5649 <213313463+jtaw5649@users.noreply.github.com>
Date: Tue, 2 Jun 2026 11:29:39 +0100
Subject: [PATCH 227/323] feat(pe): print PE header metadata
---
.../code/debugger/user-level/pe-parser.cpp | 252 ++++++++++++++++--
1 file changed, 233 insertions(+), 19 deletions(-)
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index 1a75e890..775e9008 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -13,6 +13,186 @@
#include "header/pe-image-reader.h"
+static const char *
+PeGetSubsystemName(WORD Subsystem)
+{
+ switch (Subsystem)
+ {
+ case IMAGE_SUBSYSTEM_NATIVE:
+ return "Device Driver(Native windows Process)";
+ case IMAGE_SUBSYSTEM_WINDOWS_GUI:
+ return "Windows GUI";
+ case IMAGE_SUBSYSTEM_WINDOWS_CUI:
+ return "Windows CLI";
+ case IMAGE_SUBSYSTEM_WINDOWS_CE_GUI:
+ return "Windows CE GUI";
+ default:
+ return "Unknown";
+ }
+}
+
+static VOID
+PeShowDllCharacteristics(WORD DllCharacteristics)
+{
+ BOOLEAN AnyFlag = FALSE;
+
+ struct DLL_CHARACTERISTIC_NAME
+ {
+ WORD Flag;
+ const char * Name;
+ };
+
+ static const DLL_CHARACTERISTIC_NAME CommonDllCharacteristics[] = {
+ {IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA, "High Entropy VA"},
+ {IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE, "Dynamic Base"},
+ {IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY, "Force Integrity"},
+ {IMAGE_DLLCHARACTERISTICS_NX_COMPAT, "NX Compatible"},
+ {IMAGE_DLLCHARACTERISTICS_NO_ISOLATION, "No Isolation"},
+ {IMAGE_DLLCHARACTERISTICS_NO_SEH, "No SEH"},
+ {IMAGE_DLLCHARACTERISTICS_NO_BIND, "No Bind"},
+ {IMAGE_DLLCHARACTERISTICS_APPCONTAINER, "AppContainer"},
+ {IMAGE_DLLCHARACTERISTICS_WDM_DRIVER, "WDM Driver"},
+ {IMAGE_DLLCHARACTERISTICS_GUARD_CF, "Guard CF"},
+ {IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE, "Terminal Server Aware"},
+ };
+
+ for (UINT32 i = 0; i < RTL_NUMBER_OF(CommonDllCharacteristics); i++)
+ {
+ if ((DllCharacteristics & CommonDllCharacteristics[i].Flag) == CommonDllCharacteristics[i].Flag)
+ {
+ ShowMessages("%s%s", AnyFlag ? ", " : "", CommonDllCharacteristics[i].Name);
+ AnyFlag = TRUE;
+ }
+ }
+
+ if (!AnyFlag)
+ {
+ ShowMessages("None");
+ }
+}
+
+static VOID
+PeShowEntrypointFileOffset(PPE_IMAGE_READER Reader, DWORD AddressOfEntryPoint)
+{
+ SIZE_T FileOffset = 0;
+
+ if (PeImageReaderRvaToFileOffset(Reader, AddressOfEntryPoint, 1, &FileOffset))
+ {
+ ShowMessages("\n%-36s%#llx", "Entrypoint file offset :", (UINT64)FileOffset);
+ }
+ else
+ {
+ ShowMessages("\n%-36s%s", "Entrypoint file offset :", "not mapped");
+ }
+}
+
+static const char *
+PeGetDataDirectoryName(UINT32 Index)
+{
+ static const char * DirectoryNames[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] = {
+ "Export Table",
+ "Import Table",
+ "Resource Table",
+ "Exception Table",
+ "Certificate Table",
+ "Base Relocation Table",
+ "Debug",
+ "Architecture",
+ "Global Ptr",
+ "TLS Table",
+ "Load Config Table",
+ "Bound Import",
+ "Import Address Table",
+ "Delay Import Descriptor",
+ "CLR Runtime Header",
+ "Reserved",
+ };
+
+ if (Index < RTL_NUMBER_OF(DirectoryNames))
+ {
+ return DirectoryNames[Index];
+ }
+
+ return "Unknown";
+}
+
+static VOID
+PeShowDataDirectories(PPE_IMAGE_READER Reader,
+ const IMAGE_DATA_DIRECTORY * Directories,
+ DWORD NumberOfRvaAndSizes)
+{
+ ShowMessages("\n\nData directories\n----------------");
+ ShowMessages("\n%-36s%u", "Number of RVA and sizes :", NumberOfRvaAndSizes);
+
+ for (UINT32 Index = 0; Index < IMAGE_NUMBEROF_DIRECTORY_ENTRIES; Index++)
+ {
+ const char * Name = PeGetDataDirectoryName(Index);
+ const char * AddressLabel = Index == IMAGE_DIRECTORY_ENTRY_SECURITY ? "file offset" : "RVA";
+
+ if (Index >= NumberOfRvaAndSizes)
+ {
+ ShowMessages("\n[%2u] %-27s %s", Index, Name, "not declared");
+ continue;
+ }
+
+ const IMAGE_DATA_DIRECTORY * Directory = &Directories[Index];
+ if (Directory->VirtualAddress == 0 || Directory->Size == 0)
+ {
+ ShowMessages("\n[%2u] %-27s %s %#x, size %#x, %s",
+ Index,
+ Name,
+ AddressLabel,
+ Directory->VirtualAddress,
+ Directory->Size,
+ "empty");
+ continue;
+ }
+
+ const BYTE * Pointer = NULL;
+ SIZE_T FileOffset = 0;
+
+ if (Index == IMAGE_DIRECTORY_ENTRY_SECURITY)
+ {
+ BOOLEAN HasBounds = PeImageReaderGetPointerAtOffset(Reader,
+ Directory->VirtualAddress,
+ Directory->Size,
+ &Pointer);
+
+ ShowMessages("\n[%2u] %-27s file offset %#x, size %#x, %s",
+ Index,
+ Name,
+ Directory->VirtualAddress,
+ Directory->Size,
+ HasBounds ? "valid bounds" : "invalid bounds");
+ if (HasBounds)
+ {
+ ShowMessages(", mapped file offset %#llx", (UINT64)Directory->VirtualAddress);
+ }
+
+ continue;
+ }
+
+ if (PeImageReaderRvaToFileOffset(Reader, Directory->VirtualAddress, Directory->Size, &FileOffset))
+ {
+ ShowMessages("\n[%2u] %-27s RVA %#x, size %#x, mapped, mapped file offset %#llx",
+ Index,
+ Name,
+ Directory->VirtualAddress,
+ Directory->Size,
+ (UINT64)FileOffset);
+ }
+ else
+ {
+ ShowMessages("\n[%2u] %-27s RVA %#x, size %#x, %s",
+ Index,
+ Name,
+ Directory->VirtualAddress,
+ Directory->Size,
+ "not mapped");
+ }
+ }
+}
+
/**
* @brief Locates the Rich header signature in a PE file
*
@@ -322,7 +502,7 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
{
RICH_HEADER_INFO PeFileRichHeaderInfo {0};
RICH_HEADER PeFileRichHeader {0};
- BOOLEAN Result = FALSE, RichFound = FALSE;
+ BOOLEAN Result = FALSE, RichFound = FALSE, SectionFound = FALSE;
HANDLE MapObjectHandle = NULL, FileHandle = INVALID_HANDLE_VALUE; // File Mapping Object
UINT32 NumberOfSections; // Number of sections
LPVOID BaseAddr = NULL; // Pointer to the base memory of mapped file
@@ -337,6 +517,7 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
LARGE_INTEGER FileSize;
CHAR Key[4];
INT RichHeaderOffset;
+ time_t TimeDateStamp;
//
// Open the EXE File
@@ -614,9 +795,10 @@ SkipRichHeader:
//
// Determine Time Stamp
//
+ TimeDateStamp = Header.TimeDateStamp;
ShowMessages("\n%-36s%s",
"Time Stamp :",
- ctime((const time_t *)&(Header.TimeDateStamp)));
+ ctime(&TimeDateStamp));
//
// Determine number of sections
@@ -626,6 +808,9 @@ SkipRichHeader:
ShowMessages("\n%-36s%d",
"Size of optional header :",
Header.SizeOfOptionalHeader);
+ ShowMessages("\n%-36s%#x", "Raw machine value :", Header.Machine);
+ ShowMessages("\n%-36s%#x", "Pointer to symbol table :", Header.PointerToSymbolTable);
+ ShowMessages("\n%-36s%#x", "Raw characteristics value :", Header.Characteristics);
ShowMessages("\n\nDumping PE Optional Header "
"Info....\n-----------------------------------");
@@ -640,13 +825,17 @@ SkipRichHeader:
ShowMessages("\n%-36s%#x",
"Address of Entry Point : ",
OpHeader32.AddressOfEntryPoint);
+ ShowMessages("\n%-36s%#x", "Raw optional header magic :", OpHeader32.Magic);
+ PeShowEntrypointFileOffset(&Reader, OpHeader32.AddressOfEntryPoint);
ShowMessages("\n%-36s%#llx", "Base Address of the Image : ", OpHeader32.ImageBase);
- ShowMessages("\n%-36s%s", "SubSystem type : ", OpHeader32.Subsystem == 1 ? "Device Driver(Native windows Process)" : OpHeader32.Subsystem == 2 ? "Windows GUI"
- : OpHeader32.Subsystem == 3 ? "Windows CLI"
- : OpHeader32.Subsystem == 3 ? "Windows CLI"
- : OpHeader32.Subsystem == 9 ? "Windows CE GUI"
- : "Unknown");
+ ShowMessages("\n%-36s%s", "SubSystem type : ", PeGetSubsystemName(OpHeader32.Subsystem));
ShowMessages("\n%-36s%s", "Given file is a : ", OpHeader32.Magic == 0x20b ? "PE32+(64)" : "PE32");
+ ShowMessages("\n%-36s%#x", "File Alignment :", OpHeader32.FileAlignment);
+ ShowMessages("\n%-36s%#x", "Size of Image :", OpHeader32.SizeOfImage);
+ ShowMessages("\n%-36s%#x", "Size of Headers :", OpHeader32.SizeOfHeaders);
+ ShowMessages("\n%-36s%#x", "Raw DLL characteristics value :", OpHeader32.DllCharacteristics);
+ ShowMessages("\n%-36s", "DLL characteristics flags :");
+ PeShowDllCharacteristics(OpHeader32.DllCharacteristics);
ShowMessages("\n%-36s%d", "Size of code segment(.text) : ", OpHeader32.SizeOfCode);
ShowMessages("\n%-36s%#x",
"Base address of code segment(RVA) :",
@@ -662,6 +851,7 @@ SkipRichHeader:
ShowMessages("\n%-36s%#x", "Section Alignment :", OpHeader32.SectionAlignment);
ShowMessages("\n%-36s%d", "Major Linker Version : ", OpHeader32.MajorLinkerVersion);
ShowMessages("\n%-36s%d", "Minor Linker Version : ", OpHeader32.MinorLinkerVersion);
+ PeShowDataDirectories(&Reader, OpHeader32.DataDirectory, OpHeader32.NumberOfRvaAndSizes);
}
else
{
@@ -673,13 +863,17 @@ SkipRichHeader:
ShowMessages("\n%-36s%#x",
"Address of Entry Point : ",
OpHeader64.AddressOfEntryPoint);
+ ShowMessages("\n%-36s%#x", "Raw optional header magic :", OpHeader64.Magic);
+ PeShowEntrypointFileOffset(&Reader, OpHeader64.AddressOfEntryPoint);
ShowMessages("\n%-36s%#llx", "Base Address of the Image : ", OpHeader64.ImageBase);
- ShowMessages("\n%-36s%s", "SubSystem type : ", OpHeader64.Subsystem == 1 ? "Device Driver(Native windows Process)" : OpHeader64.Subsystem == 2 ? "Windows GUI"
- : OpHeader64.Subsystem == 3 ? "Windows CLI"
- : OpHeader64.Subsystem == 3 ? "Windows CLI"
- : OpHeader64.Subsystem == 9 ? "Windows CE GUI"
- : "Unknown");
+ ShowMessages("\n%-36s%s", "SubSystem type : ", PeGetSubsystemName(OpHeader64.Subsystem));
ShowMessages("\n%-36s%s", "Given file is a : ", OpHeader64.Magic == 0x20b ? "PE32+(64)" : "PE32");
+ ShowMessages("\n%-36s%#x", "File Alignment :", OpHeader64.FileAlignment);
+ ShowMessages("\n%-36s%#x", "Size of Image :", OpHeader64.SizeOfImage);
+ ShowMessages("\n%-36s%#x", "Size of Headers :", OpHeader64.SizeOfHeaders);
+ ShowMessages("\n%-36s%#x", "Raw DLL characteristics value :", OpHeader64.DllCharacteristics);
+ ShowMessages("\n%-36s", "DLL characteristics flags :");
+ PeShowDllCharacteristics(OpHeader64.DllCharacteristics);
ShowMessages("\n%-36s%d", "Size of code segment(.text) : ", OpHeader64.SizeOfCode);
ShowMessages("\n%-36s%#x",
"Base address of code segment(RVA) :",
@@ -691,6 +885,7 @@ SkipRichHeader:
ShowMessages("\n%-36s%#x", "Section Alignment :", OpHeader64.SectionAlignment);
ShowMessages("\n%-36s%d", "Major Linker Version : ", OpHeader64.MajorLinkerVersion);
ShowMessages("\n%-36s%d", "Minor Linker Version : ", OpHeader64.MinorLinkerVersion);
+ PeShowDataDirectories(&Reader, OpHeader64.DataDirectory, OpHeader64.NumberOfRvaAndSizes);
}
ShowMessages("\n\nDumping Sections Header "
@@ -704,10 +899,22 @@ SkipRichHeader:
for (UINT32 i = 0; i < NumberOfSections; i++, SecHeader++)
{
- CHAR SectionName[IMAGE_SIZEOF_SHORT_NAME + 1];
+ CHAR SectionName[IMAGE_SIZEOF_SHORT_NAME + 1];
+ const BYTE * Pointer = NULL;
+ const CHAR * RawDataBounds = "empty";
PeImageReaderGetSectionName(SecHeader, SectionName, sizeof(SectionName));
+ if (SecHeader->SizeOfRawData != 0)
+ {
+ RawDataBounds = PeImageReaderGetPointerAtOffset(&Reader,
+ SecHeader->PointerToRawData,
+ SecHeader->SizeOfRawData,
+ &Pointer)
+ ? "valid"
+ : "invalid";
+ }
+
ShowMessages("\n\nSection Info (%d of %d)", i + 1, NumberOfSections);
ShowMessages("\n---------------------");
@@ -722,6 +929,11 @@ SkipRichHeader:
ShowMessages("\n%-36s%#x",
"Pointer to Raw Data : ",
SecHeader->PointerToRawData);
+ ShowMessages("\n%-36s%s", "Raw data bounds :", RawDataBounds);
+ if (SecHeader->SizeOfRawData != 0 && SecHeader->Misc.VirtualSize > SecHeader->SizeOfRawData)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "virtual size is larger than raw data");
+ }
ShowMessages("\n%-36s%#x",
"Pointer to Relocations : ",
SecHeader->PointerToRelocations);
@@ -757,14 +969,11 @@ SkipRichHeader:
{
if (!_strcmpi(SectionToShow, SectionName))
{
+ SectionFound = TRUE;
+
if (SecHeader->SizeOfRawData != 0)
{
- const BYTE * Pointer = NULL;
-
- if (!PeImageReaderGetPointerAtOffset(&Reader,
- SecHeader->PointerToRawData,
- SecHeader->SizeOfRawData,
- &Pointer))
+ if (Pointer == NULL)
{
ShowMessages("\nerr, invalid section raw data\n");
continue;
@@ -787,6 +996,11 @@ SkipRichHeader:
}
}
+ if (SectionToShow != NULL && !SectionFound)
+ {
+ ShowMessages("\nerr, section '%s' was not found\n", SectionToShow);
+ }
+
ShowMessages("\n==============================================================="
"================\n");
From 2ac63b85b9de31aef4f121f87b0b459a4d63b457 Mon Sep 17 00:00:00 2001
From: jtaw5649 <213313463+jtaw5649@users.noreply.github.com>
Date: Tue, 2 Jun 2026 11:39:53 +0100
Subject: [PATCH 228/323] feat(pe): print PE imports and exports
---
.../code/debugger/user-level/pe-parser.cpp | 576 ++++++++++++++++++
1 file changed, 576 insertions(+)
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index 775e9008..d398f7c0 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -116,6 +116,141 @@ PeGetDataDirectoryName(UINT32 Index)
return "Unknown";
}
+static BOOLEAN
+PeAddDword(DWORD Left, DWORD Right, DWORD * Result)
+{
+ if (Result == NULL || Right > MAXDWORD - Left)
+ {
+ return FALSE;
+ }
+
+ *Result = Left + Right;
+ return TRUE;
+}
+
+static BOOLEAN
+PeRvaContainsRange(DWORD RangeRva, DWORD RangeSize, DWORD Rva, DWORD Size)
+{
+ DWORD RangeEnd = 0;
+ DWORD RvaEnd = 0;
+
+ if (!PeAddDword(RangeRva, RangeSize, &RangeEnd) || !PeAddDword(Rva, Size, &RvaEnd))
+ {
+ return FALSE;
+ }
+
+ return Rva >= RangeRva && RvaEnd <= RangeEnd;
+}
+
+static BOOLEAN
+PeGetPointerAtRva(PPE_IMAGE_READER Reader, DWORD Rva, DWORD Length, const BYTE ** Pointer)
+{
+ SIZE_T FileOffset = 0;
+
+ if (!PeImageReaderRvaToFileOffset(Reader, Rva, Length, &FileOffset))
+ {
+ return FALSE;
+ }
+
+ return PeImageReaderGetPointerAtOffset(Reader, FileOffset, Length, Pointer);
+}
+
+typedef enum _PE_ASCII_STRING_STATUS
+{
+ PeAsciiStringInvalid,
+ PeAsciiStringOk,
+ PeAsciiStringTruncated,
+} PE_ASCII_STRING_STATUS;
+
+static PE_ASCII_STRING_STATUS
+PeReadAsciiStringAtRva(PPE_IMAGE_READER Reader, DWORD Rva, DWORD MaxLength, CHAR * Buffer, SIZE_T BufferSize)
+{
+ if (Buffer == NULL || BufferSize == 0 || MaxLength == 0)
+ {
+ return PeAsciiStringInvalid;
+ }
+
+ Buffer[0] = '\0';
+
+ SIZE_T OutputIndex = 0;
+ for (DWORD Index = 0; Index < MaxLength; Index++)
+ {
+ DWORD CharacterRva = 0;
+ const BYTE * Character = NULL;
+
+ if (!PeAddDword(Rva, Index, &CharacterRva) || !PeGetPointerAtRva(Reader, CharacterRva, 1, &Character))
+ {
+ return PeAsciiStringInvalid;
+ }
+
+ if (*Character == '\0')
+ {
+ return PeAsciiStringOk;
+ }
+
+ if (OutputIndex + 1 < BufferSize)
+ {
+ Buffer[OutputIndex++] = (*Character >= 0x20 && *Character <= 0x7e) ? (CHAR)*Character : '.';
+ Buffer[OutputIndex] = '\0';
+ }
+ }
+
+ return PeAsciiStringTruncated;
+}
+
+static const char *
+PeAsciiStatusName(PE_ASCII_STRING_STATUS Status)
+{
+ switch (Status)
+ {
+ case PeAsciiStringInvalid:
+ return "invalid mapping";
+ case PeAsciiStringTruncated:
+ return "truncated or unterminated";
+ default:
+ return "readable";
+ }
+}
+
+static BOOLEAN
+PeReadWordAtRva(PPE_IMAGE_READER Reader, DWORD Rva, WORD * Value)
+{
+ const BYTE * Pointer = NULL;
+
+ if (Value == NULL || !PeGetPointerAtRva(Reader, Rva, sizeof(WORD), &Pointer))
+ {
+ return FALSE;
+ }
+
+ CopyMemory(Value, Pointer, sizeof(*Value));
+ return TRUE;
+}
+
+static BOOLEAN
+PeReadThunkAtRva(PPE_IMAGE_READER Reader, DWORD Rva, BOOLEAN Is32Bit, ULONGLONG * Value)
+{
+ const BYTE * Pointer = NULL;
+ DWORD Size = Is32Bit ? sizeof(DWORD) : sizeof(ULONGLONG);
+
+ if (Value == NULL || !PeGetPointerAtRva(Reader, Rva, Size, &Pointer))
+ {
+ return FALSE;
+ }
+
+ if (Is32Bit)
+ {
+ DWORD Value32 = 0;
+ CopyMemory(&Value32, Pointer, sizeof(Value32));
+ *Value = Value32;
+ }
+ else
+ {
+ CopyMemory(Value, Pointer, sizeof(*Value));
+ }
+
+ return TRUE;
+}
+
static VOID
PeShowDataDirectories(PPE_IMAGE_READER Reader,
const IMAGE_DATA_DIRECTORY * Directories,
@@ -193,6 +328,436 @@ PeShowDataDirectories(PPE_IMAGE_READER Reader,
}
}
+static VOID
+PeShowImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ImportDirectory, BOOLEAN Is32Bit)
+{
+ const DWORD MaxImportDescriptors = 0x1000;
+ const DWORD MaxTotalImports = 0x2000;
+ const DWORD MaxDllNameLength = 0x200;
+ const DWORD MaxImportNameLength = 0x200;
+
+ ShowMessages("\n\nImports\n-------");
+
+ if (ImportDirectory->VirtualAddress == 0 || ImportDirectory->Size == 0)
+ {
+ ShowMessages("\n%-36s%s", "Import directory :", "empty");
+ return;
+ }
+
+ const BYTE * DirectoryPointer = NULL;
+ if (!PeGetPointerAtRva(Reader, ImportDirectory->VirtualAddress, sizeof(IMAGE_IMPORT_DESCRIPTOR), &DirectoryPointer))
+ {
+ ShowMessages("\n%-36s%s", "Import directory :", "not mapped");
+ return;
+ }
+
+ DWORD DescriptorCount = ImportDirectory->Size / sizeof(IMAGE_IMPORT_DESCRIPTOR);
+ if (DescriptorCount == 0)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "import directory is smaller than one descriptor");
+ return;
+ }
+
+ BOOLEAN DescriptorCapped = FALSE;
+ if (DescriptorCount > MaxImportDescriptors)
+ {
+ DescriptorCount = MaxImportDescriptors;
+ DescriptorCapped = TRUE;
+ }
+
+ DWORD TotalImports = 0;
+ BOOLEAN FoundTerminator = FALSE;
+ BOOLEAN TotalImportsCapped = FALSE;
+
+ for (DWORD DescriptorIndex = 0; DescriptorIndex < DescriptorCount; DescriptorIndex++)
+ {
+ DWORD DescriptorRva = 0;
+
+ if (!PeAddDword(ImportDirectory->VirtualAddress,
+ DescriptorIndex * (DWORD)sizeof(IMAGE_IMPORT_DESCRIPTOR),
+ &DescriptorRva))
+ {
+ break;
+ }
+
+ const IMAGE_IMPORT_DESCRIPTOR * Descriptor = NULL;
+ if (!PeGetPointerAtRva(Reader,
+ DescriptorRva,
+ sizeof(IMAGE_IMPORT_DESCRIPTOR),
+ (const BYTE **)&Descriptor))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "import descriptor is not mapped");
+ break;
+ }
+
+ if (Descriptor->OriginalFirstThunk == 0 && Descriptor->TimeDateStamp == 0 && Descriptor->ForwarderChain == 0 &&
+ Descriptor->Name == 0 && Descriptor->FirstThunk == 0)
+ {
+ FoundTerminator = TRUE;
+ break;
+ }
+
+ CHAR DllName[MaxDllNameLength + 1] = {0};
+ PE_ASCII_STRING_STATUS DllNameStatus = PeReadAsciiStringAtRva(Reader,
+ Descriptor->Name,
+ MaxDllNameLength,
+ DllName,
+ sizeof(DllName));
+ if (DllNameStatus != PeAsciiStringOk)
+ {
+ ShowMessages("\n[%u] DLL name %s", DescriptorIndex, PeAsciiStatusName(DllNameStatus));
+ ShowMessages("\n%-36s%s", "Warning :", "skipping imports for descriptor with unreadable DLL name");
+ continue;
+ }
+
+ ShowMessages("\n[%u] DLL name %s", DescriptorIndex, DllName);
+
+ DWORD LookupThunkRva = Descriptor->OriginalFirstThunk != 0 ? Descriptor->OriginalFirstThunk : Descriptor->FirstThunk;
+ if (LookupThunkRva == 0 || Descriptor->FirstThunk == 0)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "import thunk array is empty");
+ continue;
+ }
+
+ DWORD ThunkSize = Is32Bit ? sizeof(DWORD) : sizeof(ULONGLONG);
+ for (DWORD ThunkIndex = 0; TotalImports < MaxTotalImports; ThunkIndex++)
+ {
+ DWORD LookupEntryRva = 0;
+ DWORD IatEntryRva = 0;
+ if (!PeAddDword(LookupThunkRva, ThunkIndex * ThunkSize, &LookupEntryRva) ||
+ !PeAddDword(Descriptor->FirstThunk, ThunkIndex * ThunkSize, &IatEntryRva))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "import thunk RVA overflow");
+ break;
+ }
+
+ ULONGLONG ThunkValue = 0;
+ if (!PeReadThunkAtRva(Reader, LookupEntryRva, Is32Bit, &ThunkValue))
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid thunk RVA :", LookupEntryRva);
+ break;
+ }
+
+ if (ThunkValue == 0)
+ {
+ break;
+ }
+
+ ULONGLONG OrdinalFlag = Is32Bit ? IMAGE_ORDINAL_FLAG32 : IMAGE_ORDINAL_FLAG64;
+ if ((ThunkValue & OrdinalFlag) != 0)
+ {
+ ShowMessages("\n [%u] ordinal %u thunk RVA %#x", ThunkIndex, (UINT32)(ThunkValue & 0xffff), IatEntryRva);
+ TotalImports++;
+ continue;
+ }
+
+ if (ThunkValue > MAXDWORD)
+ {
+ ShowMessages("\n%-36s%#llx", "Warning, invalid import name RVA :", (UINT64)ThunkValue);
+ TotalImports++;
+ continue;
+ }
+
+ DWORD NameRva = (DWORD)ThunkValue;
+ WORD Hint = 0;
+ if (!PeReadWordAtRva(Reader, NameRva, &Hint))
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid import hint RVA :", NameRva);
+ TotalImports++;
+ continue;
+ }
+
+ DWORD ImportNameRva = 0;
+ if (!PeAddDword(NameRva, sizeof(WORD), &ImportNameRva))
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid import name RVA :", NameRva);
+ TotalImports++;
+ continue;
+ }
+
+ CHAR ImportName[MaxImportNameLength + 1] = {0};
+ PE_ASCII_STRING_STATUS ImportNameStatus = PeReadAsciiStringAtRva(Reader,
+ ImportNameRva,
+ MaxImportNameLength,
+ ImportName,
+ sizeof(ImportName));
+ if (ImportNameStatus != PeAsciiStringOk)
+ {
+ ShowMessages("\n%-36s%#x, %s", "Warning, invalid import name RVA :", ImportNameRva, PeAsciiStatusName(ImportNameStatus));
+ TotalImports++;
+ continue;
+ }
+
+ ShowMessages("\n [%u] hint %#x name %s thunk RVA %#x", ThunkIndex, Hint, ImportName, IatEntryRva);
+ TotalImports++;
+ }
+
+ if (TotalImports >= MaxTotalImports)
+ {
+ TotalImportsCapped = TRUE;
+ break;
+ }
+ }
+
+ if (!FoundTerminator)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "import descriptor terminator not found before bound or cap");
+ }
+
+ if (DescriptorCapped)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, descriptor cap reached :", MaxImportDescriptors);
+ }
+
+ if (TotalImportsCapped)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, import cap reached :", MaxTotalImports);
+ }
+}
+
+static BOOLEAN
+PeValidateExportTable(PPE_IMAGE_READER Reader, DWORD TableRva, DWORD Count, DWORD EntrySize, const BYTE ** Pointer)
+{
+ DWORD TableSize = 0;
+
+ if (Count == 0)
+ {
+ *Pointer = NULL;
+ return TRUE;
+ }
+
+ if (EntrySize != 0 && Count > MAXDWORD / EntrySize)
+ {
+ return FALSE;
+ }
+
+ TableSize = Count * EntrySize;
+ return PeGetPointerAtRva(Reader, TableRva, TableSize, Pointer);
+}
+
+static VOID
+PeShowExportEntry(PPE_IMAGE_READER Reader,
+ const IMAGE_DATA_DIRECTORY * ExportDirectory,
+ DWORD Index,
+ DWORD Ordinal,
+ const CHAR * Name,
+ DWORD FunctionRva)
+{
+ const DWORD MaxForwarderLength = 0x1000;
+
+ if (PeRvaContainsRange(ExportDirectory->VirtualAddress, ExportDirectory->Size, FunctionRva, 1))
+ {
+ DWORD ForwarderRemaining = ExportDirectory->Size - (FunctionRva - ExportDirectory->VirtualAddress);
+ DWORD ForwarderMaxLength = ForwarderRemaining < MaxForwarderLength ? ForwarderRemaining : MaxForwarderLength;
+
+ CHAR Forwarder[MaxForwarderLength + 1] = {0};
+ PE_ASCII_STRING_STATUS ForwarderStatus = PeReadAsciiStringAtRva(Reader,
+ FunctionRva,
+ ForwarderMaxLength,
+ Forwarder,
+ sizeof(Forwarder));
+ if (ForwarderStatus == PeAsciiStringOk)
+ {
+ ShowMessages("\n[%u] ordinal %u name %s forwarder %s", Index, Ordinal, Name, Forwarder);
+ }
+ else
+ {
+ ShowMessages("\n[%u] ordinal %u name %s forwarder %s", Index, Ordinal, Name, PeAsciiStatusName(ForwarderStatus));
+ }
+
+ return;
+ }
+
+ ShowMessages("\n[%u] ordinal %u name %s RVA %#x", Index, Ordinal, Name, FunctionRva);
+}
+
+static VOID
+PeShowExports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ExportDirectory)
+{
+ const DWORD MaxExports = 0x2000;
+ const DWORD MaxDllNameLength = 0x200;
+ const DWORD MaxExportNameLength = 0x200;
+
+ ShowMessages("\n\nExports\n-------");
+
+ if (ExportDirectory->VirtualAddress == 0 || ExportDirectory->Size == 0)
+ {
+ ShowMessages("\n%-36s%s", "Export directory :", "empty");
+ return;
+ }
+
+ if (!PeRvaContainsRange(ExportDirectory->VirtualAddress,
+ ExportDirectory->Size,
+ ExportDirectory->VirtualAddress,
+ sizeof(IMAGE_EXPORT_DIRECTORY)))
+ {
+ ShowMessages("\n%-36s%s", "Export directory :", "invalid bounds");
+ return;
+ }
+
+ const IMAGE_EXPORT_DIRECTORY * Directory = NULL;
+ if (!PeGetPointerAtRva(Reader,
+ ExportDirectory->VirtualAddress,
+ sizeof(IMAGE_EXPORT_DIRECTORY),
+ (const BYTE **)&Directory))
+ {
+ ShowMessages("\n%-36s%s", "Export directory :", "not mapped");
+ return;
+ }
+
+ CHAR DllName[MaxDllNameLength + 1] = {0};
+ PE_ASCII_STRING_STATUS DllNameStatus = PeReadAsciiStringAtRva(Reader,
+ Directory->Name,
+ MaxDllNameLength,
+ DllName,
+ sizeof(DllName));
+ ShowMessages("\n%-36s%s", "DLL name :", DllNameStatus == PeAsciiStringOk ? DllName : PeAsciiStatusName(DllNameStatus));
+ ShowMessages("\n%-36s%u", "Ordinal base :", Directory->Base);
+ ShowMessages("\n%-36s%u", "Address table count :", Directory->NumberOfFunctions);
+ ShowMessages("\n%-36s%u", "Name pointer count :", Directory->NumberOfNames);
+
+ const BYTE * AddressTablePointer = NULL;
+ const BYTE * NamePointerTablePointer = NULL;
+ const BYTE * OrdinalTablePointer = NULL;
+
+ BOOLEAN AddressTableValid = PeValidateExportTable(Reader,
+ Directory->AddressOfFunctions,
+ Directory->NumberOfFunctions,
+ sizeof(DWORD),
+ &AddressTablePointer);
+ BOOLEAN NamePointerTableValid = PeValidateExportTable(Reader,
+ Directory->AddressOfNames,
+ Directory->NumberOfNames,
+ sizeof(DWORD),
+ &NamePointerTablePointer);
+ BOOLEAN OrdinalTableValid = PeValidateExportTable(Reader,
+ Directory->AddressOfNameOrdinals,
+ Directory->NumberOfNames,
+ sizeof(WORD),
+ &OrdinalTablePointer);
+
+ if (!AddressTableValid)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "export address table is not mapped");
+ return;
+ }
+
+ if (!NamePointerTableValid)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "export name pointer table is not mapped");
+ }
+
+ if (!OrdinalTableValid)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "export ordinal table is not mapped");
+ }
+
+ DWORD NamedCount = Directory->NumberOfNames;
+ BOOLEAN NamedCapped = FALSE;
+ if (NamedCount > MaxExports)
+ {
+ NamedCount = MaxExports;
+ NamedCapped = TRUE;
+ }
+
+ DWORD FunctionCount = Directory->NumberOfFunctions;
+ BOOLEAN FunctionCapped = FALSE;
+ if (FunctionCount > MaxExports)
+ {
+ FunctionCount = MaxExports;
+ FunctionCapped = TRUE;
+ }
+
+ BYTE NamedAddressIndexes[MaxExports] = {0};
+
+ if (NamePointerTableValid && OrdinalTableValid)
+ {
+ for (DWORD NameIndex = 0; NameIndex < NamedCount; NameIndex++)
+ {
+ DWORD NameRva = 0;
+ WORD AddressIndex = 0;
+
+ CopyMemory(&NameRva, NamePointerTablePointer + (NameIndex * sizeof(DWORD)), sizeof(NameRva));
+ CopyMemory(&AddressIndex, OrdinalTablePointer + (NameIndex * sizeof(WORD)), sizeof(AddressIndex));
+
+ if (AddressIndex >= Directory->NumberOfFunctions)
+ {
+ ShowMessages("\n%-36s%u", "Warning, invalid export ordinal index :", AddressIndex);
+ continue;
+ }
+
+ DWORD FunctionRva = 0;
+ CopyMemory(&FunctionRva, AddressTablePointer + (AddressIndex * sizeof(DWORD)), sizeof(FunctionRva));
+
+ CHAR ExportName[MaxExportNameLength + 1] = {0};
+ PE_ASCII_STRING_STATUS ExportNameStatus = PeReadAsciiStringAtRva(Reader,
+ NameRva,
+ MaxExportNameLength,
+ ExportName,
+ sizeof(ExportName));
+ if (ExportNameStatus != PeAsciiStringOk)
+ {
+ ShowMessages("\n%-36s%#x, %s", "Warning, invalid export name RVA :", NameRva, PeAsciiStatusName(ExportNameStatus));
+ continue;
+ }
+
+ DWORD DisplayOrdinal = 0;
+ if (!PeAddDword(Directory->Base, AddressIndex, &DisplayOrdinal))
+ {
+ ShowMessages("\n%-36s%u", "Warning, invalid export ordinal index :", AddressIndex);
+ continue;
+ }
+
+ if (AddressIndex < FunctionCount)
+ {
+ NamedAddressIndexes[AddressIndex] = TRUE;
+ }
+
+ PeShowExportEntry(Reader,
+ ExportDirectory,
+ NameIndex,
+ DisplayOrdinal,
+ ExportName,
+ FunctionRva);
+ }
+ }
+
+ for (DWORD AddressIndex = 0; AddressIndex < FunctionCount; AddressIndex++)
+ {
+ if (NamedAddressIndexes[AddressIndex])
+ {
+ continue;
+ }
+
+ DWORD FunctionRva = 0;
+ CopyMemory(&FunctionRva, AddressTablePointer + (AddressIndex * sizeof(DWORD)), sizeof(FunctionRva));
+
+ DWORD DisplayOrdinal = 0;
+ if (!PeAddDword(Directory->Base, AddressIndex, &DisplayOrdinal))
+ {
+ ShowMessages("\n%-36s%u", "Warning, invalid export ordinal index :", AddressIndex);
+ continue;
+ }
+
+ PeShowExportEntry(Reader,
+ ExportDirectory,
+ AddressIndex,
+ DisplayOrdinal,
+ "",
+ FunctionRva);
+ }
+
+ if (NamedCapped)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, named export cap reached :", MaxExports);
+ }
+
+ if (FunctionCapped)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, export cap reached :", MaxExports);
+ }
+}
+
/**
* @brief Locates the Rich header signature in a PE file
*
@@ -514,6 +1079,7 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
IMAGE_OPTIONAL_HEADER64 OpHeader64; // Optional Header of PE files present in NT Header structure
const IMAGE_SECTION_HEADER * SecHeader; // Section Header or Section Table Header
PE_IMAGE_READER Reader;
+ IMAGE_DATA_DIRECTORY EmptyDirectory = {0};
LARGE_INTEGER FileSize;
CHAR Key[4];
INT RichHeaderOffset;
@@ -852,6 +1418,11 @@ SkipRichHeader:
ShowMessages("\n%-36s%d", "Major Linker Version : ", OpHeader32.MajorLinkerVersion);
ShowMessages("\n%-36s%d", "Minor Linker Version : ", OpHeader32.MinorLinkerVersion);
PeShowDataDirectories(&Reader, OpHeader32.DataDirectory, OpHeader32.NumberOfRvaAndSizes);
+ PeShowImports(&Reader,
+ OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_IMPORT ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT] : &EmptyDirectory,
+ TRUE);
+ PeShowExports(&Reader,
+ OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_EXPORT ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT] : &EmptyDirectory);
}
else
{
@@ -886,6 +1457,11 @@ SkipRichHeader:
ShowMessages("\n%-36s%d", "Major Linker Version : ", OpHeader64.MajorLinkerVersion);
ShowMessages("\n%-36s%d", "Minor Linker Version : ", OpHeader64.MinorLinkerVersion);
PeShowDataDirectories(&Reader, OpHeader64.DataDirectory, OpHeader64.NumberOfRvaAndSizes);
+ PeShowImports(&Reader,
+ OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_IMPORT ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT] : &EmptyDirectory,
+ FALSE);
+ PeShowExports(&Reader,
+ OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_EXPORT ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT] : &EmptyDirectory);
}
ShowMessages("\n\nDumping Sections Header "
From 930378058d73341bce5ac1905cce93aa4bb5dee3 Mon Sep 17 00:00:00 2001
From: jtaw5649 <213313463+jtaw5649@users.noreply.github.com>
Date: Tue, 2 Jun 2026 11:43:54 +0100
Subject: [PATCH 229/323] feat(pe): parse TLS debug and load config metadata
---
.../code/debugger/user-level/pe-parser.cpp | 429 ++++++++++++++++++
1 file changed, 429 insertions(+)
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index d398f7c0..6dc418f8 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -212,6 +212,78 @@ PeAsciiStatusName(PE_ASCII_STRING_STATUS Status)
}
}
+static BOOLEAN
+PeVaToRva(ULONGLONG Va, ULONGLONG ImageBase, DWORD * Rva)
+{
+ ULONGLONG Difference = 0;
+
+ if (Rva == NULL || Va < ImageBase)
+ {
+ return FALSE;
+ }
+
+ Difference = Va - ImageBase;
+ if (Difference > MAXDWORD)
+ {
+ return FALSE;
+ }
+
+ *Rva = (DWORD)Difference;
+ return TRUE;
+}
+
+static DWORD
+PeReadDwordFromBuffer(const BYTE * Buffer, SIZE_T Offset)
+{
+ DWORD Value = 0;
+
+ CopyMemory(&Value, Buffer + Offset, sizeof(Value));
+ return Value;
+}
+
+static ULONGLONG
+PeReadQwordFromBuffer(const BYTE * Buffer, SIZE_T Offset)
+{
+ ULONGLONG Value = 0;
+
+ CopyMemory(&Value, Buffer + Offset, sizeof(Value));
+ return Value;
+}
+
+static ULONGLONG
+PeReadLoadConfigPointer(const BYTE * Buffer, SIZE_T Offset, BOOLEAN Is32Bit)
+{
+ return Is32Bit ? PeReadDwordFromBuffer(Buffer, Offset) : PeReadQwordFromBuffer(Buffer, Offset);
+}
+
+static PE_ASCII_STRING_STATUS
+PeReadAsciiStringFromBuffer(const BYTE * StringPointer, DWORD MaxLength, CHAR * Buffer, SIZE_T BufferSize)
+{
+ if (StringPointer == NULL || Buffer == NULL || BufferSize == 0 || MaxLength == 0)
+ {
+ return PeAsciiStringInvalid;
+ }
+
+ Buffer[0] = '\0';
+
+ SIZE_T OutputIndex = 0;
+ for (DWORD Index = 0; Index < MaxLength; Index++)
+ {
+ if (StringPointer[Index] == '\0')
+ {
+ return PeAsciiStringOk;
+ }
+
+ if (OutputIndex + 1 < BufferSize)
+ {
+ Buffer[OutputIndex++] = (StringPointer[Index] >= 0x20 && StringPointer[Index] <= 0x7e) ? (CHAR)StringPointer[Index] : '.';
+ Buffer[OutputIndex] = '\0';
+ }
+ }
+
+ return PeAsciiStringTruncated;
+}
+
static BOOLEAN
PeReadWordAtRva(PPE_IMAGE_READER Reader, DWORD Rva, WORD * Value)
{
@@ -251,6 +323,345 @@ PeReadThunkAtRva(PPE_IMAGE_READER Reader, DWORD Rva, BOOLEAN Is32Bit, ULONGLONG
return TRUE;
}
+static VOID
+PeShowTls(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * TlsDirectory, BOOLEAN Is32Bit, ULONGLONG ImageBase)
+{
+ const DWORD MaxCallbacks = 0x200;
+ DWORD TlsSize = Is32Bit ? sizeof(IMAGE_TLS_DIRECTORY32) : sizeof(IMAGE_TLS_DIRECTORY64);
+
+ ShowMessages("\n\nTLS\n---");
+
+ if (TlsDirectory->VirtualAddress == 0 || TlsDirectory->Size == 0)
+ {
+ ShowMessages("\n%-36s%s", "TLS directory :", "empty");
+ return;
+ }
+
+ if (!PeRvaContainsRange(TlsDirectory->VirtualAddress, TlsDirectory->Size, TlsDirectory->VirtualAddress, TlsSize))
+ {
+ ShowMessages("\n%-36s%s", "TLS directory :", "invalid bounds");
+ return;
+ }
+
+ const BYTE * TlsPointer = NULL;
+ if (!PeGetPointerAtRva(Reader, TlsDirectory->VirtualAddress, TlsSize, &TlsPointer))
+ {
+ ShowMessages("\n%-36s%s", "TLS directory :", "not mapped");
+ return;
+ }
+
+ ULONGLONG StartRawDataVa = Is32Bit ? PeReadDwordFromBuffer(TlsPointer, 0) : PeReadQwordFromBuffer(TlsPointer, 0);
+ ULONGLONG EndRawDataVa = Is32Bit ? PeReadDwordFromBuffer(TlsPointer, 4) : PeReadQwordFromBuffer(TlsPointer, 8);
+ ULONGLONG AddressOfIndexVa = Is32Bit ? PeReadDwordFromBuffer(TlsPointer, 8) : PeReadQwordFromBuffer(TlsPointer, 16);
+ ULONGLONG AddressCallbacksVa = Is32Bit ? PeReadDwordFromBuffer(TlsPointer, 12) : PeReadQwordFromBuffer(TlsPointer, 24);
+ DWORD SizeOfZeroFill = Is32Bit ? PeReadDwordFromBuffer(TlsPointer, 16) : PeReadDwordFromBuffer(TlsPointer, 32);
+ DWORD Characteristics = Is32Bit ? PeReadDwordFromBuffer(TlsPointer, 20) : PeReadDwordFromBuffer(TlsPointer, 36);
+
+ ShowMessages("\n%-36s%#llx", "Start address of raw data VA :", StartRawDataVa);
+ ShowMessages("\n%-36s%#llx", "End address of raw data VA :", EndRawDataVa);
+ ShowMessages("\n%-36s%#llx", "Address of index VA :", AddressOfIndexVa);
+ ShowMessages("\n%-36s%#llx", "Address of callbacks VA :", AddressCallbacksVa);
+ ShowMessages("\n%-36s%#x", "Size of zero fill :", SizeOfZeroFill);
+ ShowMessages("\n%-36s%#x", "Characteristics :", Characteristics);
+
+ DWORD CallbacksRva = 0;
+ if (AddressCallbacksVa == 0)
+ {
+ ShowMessages("\n%-36s%s", "TLS callbacks :", "empty");
+ return;
+ }
+
+ if (!PeVaToRva(AddressCallbacksVa, ImageBase, &CallbacksRva))
+ {
+ ShowMessages("\n%-36s%#llx", "Warning, invalid callbacks VA :", AddressCallbacksVa);
+ return;
+ }
+
+ DWORD EntrySize = Is32Bit ? sizeof(DWORD) : sizeof(ULONGLONG);
+ for (DWORD CallbackIndex = 0; CallbackIndex < MaxCallbacks; CallbackIndex++)
+ {
+ DWORD EntryRva = 0;
+ if (!PeAddDword(CallbacksRva, CallbackIndex * EntrySize, &EntryRva))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "TLS callback RVA overflow");
+ return;
+ }
+
+ ULONGLONG CallbackVa = 0;
+ if (!PeReadThunkAtRva(Reader, EntryRva, Is32Bit, &CallbackVa))
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid callback entry RVA :", EntryRva);
+ return;
+ }
+
+ if (CallbackVa == 0)
+ {
+ return;
+ }
+
+ DWORD CallbackRva = 0;
+ SIZE_T FileOffset = 0;
+ if (PeVaToRva(CallbackVa, ImageBase, &CallbackRva))
+ {
+ if (PeImageReaderRvaToFileOffset(Reader, CallbackRva, 1, &FileOffset))
+ {
+ ShowMessages("\n [%u] VA %#llx RVA %#x file offset %#llx", CallbackIndex, CallbackVa, CallbackRva, (UINT64)FileOffset);
+ }
+ else
+ {
+ ShowMessages("\n [%u] VA %#llx RVA %#x file offset %s", CallbackIndex, CallbackVa, CallbackRva, "not mapped");
+ }
+ }
+ else
+ {
+ ShowMessages("\n [%u] VA %#llx RVA %s", CallbackIndex, CallbackVa, "invalid");
+ }
+ }
+
+ ShowMessages("\n%-36s%#x", "Warning, TLS callback cap reached :", MaxCallbacks);
+}
+
+static VOID
+PeShowDebugCodeView(PPE_IMAGE_READER Reader, const IMAGE_DEBUG_DIRECTORY * Entry)
+{
+ const DWORD MaxPdbPathLength = 0x400;
+
+ if (Entry->Type != IMAGE_DEBUG_TYPE_CODEVIEW || Entry->SizeOfData < sizeof(DWORD))
+ {
+ return;
+ }
+
+ const BYTE * Payload = NULL;
+ if ((Entry->PointerToRawData == 0 || !PeImageReaderGetPointerAtOffset(Reader, Entry->PointerToRawData, Entry->SizeOfData, &Payload)) &&
+ (Entry->AddressOfRawData == 0 || !PeGetPointerAtRva(Reader, Entry->AddressOfRawData, Entry->SizeOfData, &Payload)))
+ {
+ ShowMessages("\n%-36s%s", " CodeView payload :", "invalid bounds");
+ return;
+ }
+
+ if (memcmp(Payload, "RSDS", sizeof(DWORD)) == 0)
+ {
+ if (Entry->SizeOfData < 24)
+ {
+ ShowMessages("\n%-36s%s", " CodeView RSDS :", "truncated");
+ return;
+ }
+
+ DWORD Age = PeReadDwordFromBuffer(Payload, 20);
+ DWORD PathOffset = 24;
+ DWORD PathSize = Entry->SizeOfData - 24;
+ DWORD PathLimit = PathSize < MaxPdbPathLength ? PathSize : MaxPdbPathLength;
+ CHAR PdbPath[MaxPdbPathLength + 1] = {0};
+ const BYTE * Guid = Payload + 4;
+
+ PE_ASCII_STRING_STATUS PathStatus = PeReadAsciiStringFromBuffer(Payload + PathOffset, PathLimit, PdbPath, sizeof(PdbPath));
+ ShowMessages("\n%-36s%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
+ " CodeView RSDS GUID :",
+ Guid[3],
+ Guid[2],
+ Guid[1],
+ Guid[0],
+ Guid[5],
+ Guid[4],
+ Guid[7],
+ Guid[6],
+ Guid[8],
+ Guid[9],
+ Guid[10],
+ Guid[11],
+ Guid[12],
+ Guid[13],
+ Guid[14],
+ Guid[15]);
+ ShowMessages("\n%-36s%u", " CodeView age :", Age);
+ ShowMessages("\n%-36s%s", " CodeView PDB path :", PathStatus == PeAsciiStringOk ? PdbPath : PeAsciiStatusName(PathStatus));
+ }
+ else if (memcmp(Payload, "NB10", sizeof(DWORD)) == 0)
+ {
+ if (Entry->SizeOfData < 16)
+ {
+ ShowMessages("\n%-36s%s", " CodeView NB10 :", "truncated");
+ return;
+ }
+
+ DWORD Offset = PeReadDwordFromBuffer(Payload, 4);
+ DWORD Timestamp = PeReadDwordFromBuffer(Payload, 8);
+ DWORD Age = PeReadDwordFromBuffer(Payload, 12);
+ DWORD PathOffset = 16;
+ DWORD PathSize = Entry->SizeOfData - 16;
+ DWORD PathLimit = PathSize < MaxPdbPathLength ? PathSize : MaxPdbPathLength;
+ CHAR PdbPath[MaxPdbPathLength + 1] = {0};
+
+ PE_ASCII_STRING_STATUS PathStatus = PeReadAsciiStringFromBuffer(Payload + PathOffset, PathLimit, PdbPath, sizeof(PdbPath));
+ ShowMessages("\n%-36s%#x", " CodeView NB10 offset :", Offset);
+ ShowMessages("\n%-36s%#x", " CodeView NB10 signature :", Timestamp);
+ ShowMessages("\n%-36s%u", " CodeView age :", Age);
+ ShowMessages("\n%-36s%s", " CodeView PDB path :", PathStatus == PeAsciiStringOk ? PdbPath : PeAsciiStatusName(PathStatus));
+ }
+}
+
+static VOID
+PeShowDebug(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * DebugDirectory)
+{
+ const DWORD MaxDebugEntries = 0x1000;
+
+ ShowMessages("\n\nDebug\n-----");
+
+ if (DebugDirectory->VirtualAddress == 0 || DebugDirectory->Size == 0)
+ {
+ ShowMessages("\n%-36s%s", "Debug directory :", "empty");
+ return;
+ }
+
+ DWORD EntryCount = DebugDirectory->Size / sizeof(IMAGE_DEBUG_DIRECTORY);
+ if (EntryCount == 0)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "debug directory is smaller than one descriptor");
+ return;
+ }
+
+ BOOLEAN EntryCapped = FALSE;
+ if (EntryCount > MaxDebugEntries)
+ {
+ EntryCount = MaxDebugEntries;
+ EntryCapped = TRUE;
+ }
+
+ for (DWORD EntryIndex = 0; EntryIndex < EntryCount; EntryIndex++)
+ {
+ DWORD EntryRva = 0;
+ if (!PeAddDword(DebugDirectory->VirtualAddress, EntryIndex * (DWORD)sizeof(IMAGE_DEBUG_DIRECTORY), &EntryRva))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "debug directory RVA overflow");
+ break;
+ }
+
+ const IMAGE_DEBUG_DIRECTORY * Entry = NULL;
+ if (!PeGetPointerAtRva(Reader, EntryRva, sizeof(IMAGE_DEBUG_DIRECTORY), (const BYTE **)&Entry))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "debug directory entry is not mapped");
+ break;
+ }
+
+ ShowMessages("\n[%u] characteristics %#x time date stamp %#x major %u minor %u type %u size %#x address %#x raw %#x",
+ EntryIndex,
+ Entry->Characteristics,
+ Entry->TimeDateStamp,
+ Entry->MajorVersion,
+ Entry->MinorVersion,
+ Entry->Type,
+ Entry->SizeOfData,
+ Entry->AddressOfRawData,
+ Entry->PointerToRawData);
+
+ if (Entry->SizeOfData != 0 && Entry->PointerToRawData != 0)
+ {
+ const BYTE * Payload = NULL;
+ ShowMessages("\n%-36s%s", " Payload bounds :", PeImageReaderGetPointerAtOffset(Reader, Entry->PointerToRawData, Entry->SizeOfData, &Payload) ? "valid" : "invalid");
+ }
+
+ PeShowDebugCodeView(Reader, Entry);
+ }
+
+ if (EntryCapped)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, debug entry cap reached :", MaxDebugEntries);
+ }
+}
+
+static BOOLEAN
+PeLoadConfigHasField(DWORD AvailableSize, SIZE_T Offset, SIZE_T FieldSize)
+{
+ return Offset <= AvailableSize && FieldSize <= AvailableSize - Offset;
+}
+
+static VOID
+PeShowLoadConfigDword(const BYTE * Config, DWORD AvailableSize, SIZE_T Offset, const CHAR * Label)
+{
+ if (PeLoadConfigHasField(AvailableSize, Offset, sizeof(DWORD)))
+ {
+ ShowMessages("\n%-36s%#x", Label, PeReadDwordFromBuffer(Config, Offset));
+ }
+}
+
+static VOID
+PeShowLoadConfigPointer(const BYTE * Config, DWORD AvailableSize, SIZE_T Offset, const CHAR * Label, BOOLEAN Is32Bit)
+{
+ SIZE_T FieldSize = Is32Bit ? sizeof(DWORD) : sizeof(ULONGLONG);
+
+ if (PeLoadConfigHasField(AvailableSize, Offset, FieldSize))
+ {
+ ShowMessages("\n%-36s%#llx", Label, PeReadLoadConfigPointer(Config, Offset, Is32Bit));
+ }
+}
+
+static VOID
+PeShowLoadConfig(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * LoadConfigDirectory, BOOLEAN Is32Bit)
+{
+ ShowMessages("\n\nLoad config\n-----------");
+
+ if (LoadConfigDirectory->VirtualAddress == 0 || LoadConfigDirectory->Size == 0)
+ {
+ ShowMessages("\n%-36s%s", "Load config directory :", "empty");
+ return;
+ }
+
+ if (LoadConfigDirectory->Size < sizeof(DWORD))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "load config size is too small");
+ return;
+ }
+
+ const BYTE * Config = NULL;
+ if (!PeGetPointerAtRva(Reader, LoadConfigDirectory->VirtualAddress, sizeof(DWORD), &Config))
+ {
+ ShowMessages("\n%-36s%s", "Load config directory :", "not mapped");
+ return;
+ }
+
+ DWORD ConfigSize = PeReadDwordFromBuffer(Config, 0);
+ DWORD AvailableSize = LoadConfigDirectory->Size < ConfigSize ? LoadConfigDirectory->Size : ConfigSize;
+
+ ShowMessages("\n%-36s%#x", "Size :", ConfigSize);
+ if (AvailableSize < sizeof(DWORD))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "load config size is too small");
+ return;
+ }
+
+ if (!PeGetPointerAtRva(Reader, LoadConfigDirectory->VirtualAddress, AvailableSize, &Config))
+ {
+ ShowMessages("\n%-36s%s", "Load config directory :", "invalid bounds");
+ return;
+ }
+
+ PeShowLoadConfigDword(Config, AvailableSize, 4, "Time date stamp :");
+ if (PeLoadConfigHasField(AvailableSize, 8, sizeof(WORD)))
+ {
+ WORD MajorVersion = 0;
+ CopyMemory(&MajorVersion, Config + 8, sizeof(MajorVersion));
+ ShowMessages("\n%-36s%u", "Major version :", MajorVersion);
+ }
+ if (PeLoadConfigHasField(AvailableSize, 10, sizeof(WORD)))
+ {
+ WORD MinorVersion = 0;
+ CopyMemory(&MinorVersion, Config + 10, sizeof(MinorVersion));
+ ShowMessages("\n%-36s%u", "Minor version :", MinorVersion);
+ }
+ PeShowLoadConfigDword(Config, AvailableSize, 12, "Global flags clear :");
+ PeShowLoadConfigDword(Config, AvailableSize, 16, "Global flags set :");
+ PeShowLoadConfigDword(Config, AvailableSize, 20, "Critical section timeout :");
+ PeShowLoadConfigDword(Config, AvailableSize, Is32Bit ? 44 : 72, "Process heap flags :");
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 60 : 88, "Security cookie :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 64 : 96, "SE handler table :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 68 : 104, "SE handler count :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 72 : 112, "Guard CF check pointer :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 76 : 120, "Guard CF dispatch pointer :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 80 : 128, "Guard CF function table :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 84 : 136, "Guard CF function count :", Is32Bit);
+ PeShowLoadConfigDword(Config, AvailableSize, Is32Bit ? 88 : 144, "Guard flags :");
+}
+
static VOID
PeShowDataDirectories(PPE_IMAGE_READER Reader,
const IMAGE_DATA_DIRECTORY * Directories,
@@ -1418,6 +1829,15 @@ SkipRichHeader:
ShowMessages("\n%-36s%d", "Major Linker Version : ", OpHeader32.MajorLinkerVersion);
ShowMessages("\n%-36s%d", "Minor Linker Version : ", OpHeader32.MinorLinkerVersion);
PeShowDataDirectories(&Reader, OpHeader32.DataDirectory, OpHeader32.NumberOfRvaAndSizes);
+ PeShowTls(&Reader,
+ OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_TLS ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS] : &EmptyDirectory,
+ TRUE,
+ OpHeader32.ImageBase);
+ PeShowDebug(&Reader,
+ OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_DEBUG ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG] : &EmptyDirectory);
+ PeShowLoadConfig(&Reader,
+ OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG] : &EmptyDirectory,
+ TRUE);
PeShowImports(&Reader,
OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_IMPORT ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT] : &EmptyDirectory,
TRUE);
@@ -1457,6 +1877,15 @@ SkipRichHeader:
ShowMessages("\n%-36s%d", "Major Linker Version : ", OpHeader64.MajorLinkerVersion);
ShowMessages("\n%-36s%d", "Minor Linker Version : ", OpHeader64.MinorLinkerVersion);
PeShowDataDirectories(&Reader, OpHeader64.DataDirectory, OpHeader64.NumberOfRvaAndSizes);
+ PeShowTls(&Reader,
+ OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_TLS ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS] : &EmptyDirectory,
+ FALSE,
+ OpHeader64.ImageBase);
+ PeShowDebug(&Reader,
+ OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_DEBUG ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG] : &EmptyDirectory);
+ PeShowLoadConfig(&Reader,
+ OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG] : &EmptyDirectory,
+ FALSE);
PeShowImports(&Reader,
OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_IMPORT ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT] : &EmptyDirectory,
FALSE);
From f212c8b6b7b2da4b3224af0cbc80c88f493e09e8 Mon Sep 17 00:00:00 2001
From: jtaw5649 <213313463+jtaw5649@users.noreply.github.com>
Date: Tue, 2 Jun 2026 11:57:45 +0100
Subject: [PATCH 230/323] feat(pe): report overlay and malformed metadata
---
.../code/debugger/user-level/pe-parser.cpp | 260 ++++++++++++++++++
1 file changed, 260 insertions(+)
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index 6dc418f8..af4347b4 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -128,6 +128,54 @@ PeAddDword(DWORD Left, DWORD Right, DWORD * Result)
return TRUE;
}
+static BOOLEAN
+PeAddUlonglong(ULONGLONG Left, ULONGLONG Right, ULONGLONG * Result)
+{
+ if (Result == NULL || Right > (~((ULONGLONG)0) - Left))
+ {
+ return FALSE;
+ }
+
+ *Result = Left + Right;
+ return TRUE;
+}
+
+typedef struct _PE_RAW_SECTION_RANGE
+{
+ ULONGLONG Start;
+ ULONGLONG End;
+ const IMAGE_SECTION_HEADER * Section;
+} PE_RAW_SECTION_RANGE, *PPE_RAW_SECTION_RANGE;
+
+static INT
+PeCompareRawSectionRange(const VOID * Left, const VOID * Right)
+{
+ const PE_RAW_SECTION_RANGE * LeftRange = (const PE_RAW_SECTION_RANGE *)Left;
+ const PE_RAW_SECTION_RANGE * RightRange = (const PE_RAW_SECTION_RANGE *)Right;
+
+ if (LeftRange->Start < RightRange->Start)
+ {
+ return -1;
+ }
+
+ if (LeftRange->Start > RightRange->Start)
+ {
+ return 1;
+ }
+
+ if (LeftRange->End < RightRange->End)
+ {
+ return -1;
+ }
+
+ if (LeftRange->End > RightRange->End)
+ {
+ return 1;
+ }
+
+ return 0;
+}
+
static BOOLEAN
PeRvaContainsRange(DWORD RangeRva, DWORD RangeSize, DWORD Rva, DWORD Size)
{
@@ -669,6 +717,10 @@ PeShowDataDirectories(PPE_IMAGE_READER Reader,
{
ShowMessages("\n\nData directories\n----------------");
ShowMessages("\n%-36s%u", "Number of RVA and sizes :", NumberOfRvaAndSizes);
+ if (NumberOfRvaAndSizes > IMAGE_NUMBEROF_DIRECTORY_ENTRIES)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "number of RVA and sizes exceeds PE directory table");
+ }
for (UINT32 Index = 0; Index < IMAGE_NUMBEROF_DIRECTORY_ENTRIES; Index++)
{
@@ -739,6 +791,205 @@ PeShowDataDirectories(PPE_IMAGE_READER Reader,
}
}
+static VOID
+PeShowOverlayAndWarnings(PPE_IMAGE_READER Reader,
+ WORD Machine,
+ WORD OptionalHeaderMagic,
+ DWORD AddressOfEntryPoint,
+ DWORD SizeOfImage,
+ DWORD SizeOfHeaders,
+ const IMAGE_DATA_DIRECTORY * Directories,
+ DWORD NumberOfRvaAndSizes)
+{
+ ULONGLONG OverlayOffset = SizeOfHeaders < Reader->ImageSize ? SizeOfHeaders : Reader->ImageSize;
+ BOOLEAN OverlayUnreliable = FALSE;
+
+ ShowMessages("\n\nOverlay and warnings\n--------------------");
+
+ if ((ULONGLONG)SizeOfHeaders > (ULONGLONG)Reader->ImageSize)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "size of headers is larger than file size");
+ }
+
+ if (OptionalHeaderMagic == IMAGE_NT_OPTIONAL_HDR64_MAGIC && Machine == IMAGE_FILE_MACHINE_I386)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "PE32+ optional header with i386 machine type");
+ }
+ else if (OptionalHeaderMagic == IMAGE_NT_OPTIONAL_HDR32_MAGIC &&
+ (Machine == IMAGE_FILE_MACHINE_AMD64 || Machine == IMAGE_FILE_MACHINE_IA64))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "PE32 optional header with 64-bit machine type");
+ }
+
+ for (UINT32 i = 0; i < Reader->FileHeader->NumberOfSections; i++)
+ {
+ CHAR SectionName[IMAGE_SIZEOF_SHORT_NAME + 1];
+ const IMAGE_SECTION_HEADER * Section = &Reader->SectionHeaders[i];
+ DWORD VirtualSpan = Section->Misc.VirtualSize > Section->SizeOfRawData ? Section->Misc.VirtualSize : Section->SizeOfRawData;
+ DWORD VirtualEnd = 0;
+
+ PeImageReaderGetSectionName(Section, SectionName, sizeof(SectionName));
+
+ if (VirtualSpan != 0)
+ {
+ if (!PeAddDword(Section->VirtualAddress, VirtualSpan, &VirtualEnd))
+ {
+ ShowMessages("\n%-36ssection '%s' RVA range overflows", "Warning :", SectionName);
+ }
+ else if (SizeOfImage != 0 && VirtualEnd > SizeOfImage)
+ {
+ ShowMessages("\n%-36ssection '%s' RVA range exceeds SizeOfImage", "Warning :", SectionName);
+ }
+ }
+
+ if (Section->SizeOfRawData != 0)
+ {
+ ULONGLONG RawStart = Section->PointerToRawData;
+ ULONGLONG RawEnd = 0;
+
+ if (!PeAddUlonglong(RawStart, Section->SizeOfRawData, &RawEnd))
+ {
+ ShowMessages("\n%-36ssection '%s' raw data range overflows", "Warning :", SectionName);
+ OverlayUnreliable = TRUE;
+ }
+ else if (RawStart > (ULONGLONG)Reader->ImageSize || RawEnd > (ULONGLONG)Reader->ImageSize)
+ {
+ ShowMessages("\n%-36ssection '%s' raw data is outside file", "Warning :", SectionName);
+ OverlayUnreliable = TRUE;
+ }
+ else if (RawEnd > OverlayOffset)
+ {
+ OverlayOffset = RawEnd;
+ }
+ }
+ }
+
+ if (Reader->FileHeader->NumberOfSections > 1)
+ {
+ PE_RAW_SECTION_RANGE * Ranges = (PE_RAW_SECTION_RANGE *)malloc(sizeof(PE_RAW_SECTION_RANGE) * Reader->FileHeader->NumberOfSections);
+ UINT32 Count = 0;
+
+ if (Ranges == NULL)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "raw section overlap check skipped, allocation failed");
+ }
+ else
+ {
+ for (UINT32 i = 0; i < Reader->FileHeader->NumberOfSections; i++)
+ {
+ const IMAGE_SECTION_HEADER * Section = &Reader->SectionHeaders[i];
+ ULONGLONG End;
+
+ if (Section->SizeOfRawData == 0 ||
+ !PeAddUlonglong(Section->PointerToRawData, Section->SizeOfRawData, &End) ||
+ Section->PointerToRawData > Reader->ImageSize || End > Reader->ImageSize)
+ {
+ continue;
+ }
+
+ Ranges[Count].Start = Section->PointerToRawData;
+ Ranges[Count].End = End;
+ Ranges[Count].Section = Section;
+ Count++;
+ }
+
+ if (Count > 1)
+ {
+ UINT32 MaxEndIndex = 0;
+
+ qsort(Ranges, Count, sizeof(Ranges[0]), PeCompareRawSectionRange);
+
+ for (UINT32 i = 1; i < Count; i++)
+ {
+ if (Ranges[i].Start < Ranges[MaxEndIndex].End)
+ {
+ CHAR LeftName[IMAGE_SIZEOF_SHORT_NAME + 1];
+ CHAR RightName[IMAGE_SIZEOF_SHORT_NAME + 1];
+
+ PeImageReaderGetSectionName(Ranges[MaxEndIndex].Section, LeftName, sizeof(LeftName));
+ PeImageReaderGetSectionName(Ranges[i].Section, RightName, sizeof(RightName));
+ ShowMessages("\n%-36sraw data overlap detected between '%s' and '%s'; additional overlaps may be omitted",
+ "Warning :",
+ LeftName,
+ RightName);
+ }
+
+ if (Ranges[i].End > Ranges[MaxEndIndex].End)
+ {
+ MaxEndIndex = i;
+ }
+ }
+ }
+
+ free(Ranges);
+ }
+ }
+
+ if (AddressOfEntryPoint != 0)
+ {
+ BOOLEAN EntrypointFound = FALSE;
+ const IMAGE_SECTION_HEADER * EntrypointSection = NULL;
+
+ for (UINT32 i = 0; i < Reader->FileHeader->NumberOfSections; i++)
+ {
+ const IMAGE_SECTION_HEADER * Section = &Reader->SectionHeaders[i];
+ DWORD VirtualSpan = Section->Misc.VirtualSize > Section->SizeOfRawData ? Section->Misc.VirtualSize : Section->SizeOfRawData;
+ DWORD VirtualEnd = 0;
+
+ if (VirtualSpan == 0 || !PeAddDword(Section->VirtualAddress, VirtualSpan, &VirtualEnd))
+ {
+ continue;
+ }
+
+ if (AddressOfEntryPoint >= Section->VirtualAddress && AddressOfEntryPoint < VirtualEnd)
+ {
+ EntrypointFound = TRUE;
+ EntrypointSection = Section;
+ break;
+ }
+ }
+
+ if (!EntrypointFound)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "entrypoint is outside all sections");
+ }
+ else if ((EntrypointSection->Characteristics & IMAGE_SCN_MEM_EXECUTE) == 0)
+ {
+ CHAR SectionName[IMAGE_SIZEOF_SHORT_NAME + 1];
+
+ PeImageReaderGetSectionName(EntrypointSection, SectionName, sizeof(SectionName));
+ ShowMessages("\n%-36sentrypoint section '%s' is not executable", "Warning :", SectionName);
+ }
+ }
+
+ if (OverlayUnreliable)
+ {
+ ShowMessages("\n%-36s%s", "Overlay :", "not computed because section raw data is invalid");
+ }
+ else if ((ULONGLONG)Reader->ImageSize > OverlayOffset)
+ {
+ ULONGLONG OverlaySize = (ULONGLONG)Reader->ImageSize - OverlayOffset;
+
+ ShowMessages("\n%-36s%#llx", "Overlay offset :", OverlayOffset);
+ ShowMessages("\n%-36s%#llx", "Overlay size :", OverlaySize);
+
+ if (Directories != NULL && NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_SECURITY)
+ {
+ const IMAGE_DATA_DIRECTORY * SecurityDirectory = &Directories[IMAGE_DIRECTORY_ENTRY_SECURITY];
+
+ if (SecurityDirectory->VirtualAddress != 0 && SecurityDirectory->Size != 0 &&
+ (ULONGLONG)SecurityDirectory->VirtualAddress >= OverlayOffset)
+ {
+ ShowMessages("\n%-36s%s", "Info :", "overlay includes certificate data; not necessarily suspicious");
+ }
+ }
+ }
+ else
+ {
+ ShowMessages("\n%-36s%s", "Overlay :", "none");
+ }
+}
+
static VOID
PeShowImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ImportDirectory, BOOLEAN Is32Bit)
{
@@ -2001,6 +2252,15 @@ SkipRichHeader:
}
}
+ PeShowOverlayAndWarnings(&Reader,
+ Header.Machine,
+ Is32Bit ? OpHeader32.Magic : OpHeader64.Magic,
+ Is32Bit ? OpHeader32.AddressOfEntryPoint : OpHeader64.AddressOfEntryPoint,
+ Is32Bit ? OpHeader32.SizeOfImage : OpHeader64.SizeOfImage,
+ Is32Bit ? OpHeader32.SizeOfHeaders : OpHeader64.SizeOfHeaders,
+ Is32Bit ? OpHeader32.DataDirectory : OpHeader64.DataDirectory,
+ Is32Bit ? OpHeader32.NumberOfRvaAndSizes : OpHeader64.NumberOfRvaAndSizes);
+
if (SectionToShow != NULL && !SectionFound)
{
ShowMessages("\nerr, section '%s' was not found\n", SectionToShow);
From ac78efff1b34905044b7471f3fb5441e38b85a53 Mon Sep 17 00:00:00 2001
From: jtaw5649 <213313463+jtaw5649@users.noreply.github.com>
Date: Tue, 2 Jun 2026 12:26:20 +0100
Subject: [PATCH 231/323] docs(pe): refresh command help
---
.../libhyperdbg/code/debugger/commands/meta-commands/pe.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pe.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pe.cpp
index 0f6b32b7..c315e6f9 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pe.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pe.cpp
@@ -21,10 +21,10 @@ using namespace std;
VOID
CommandPeHelp()
{
- ShowMessages(".pe : parses portable executable (PE) files and dump sections.\n\n");
+ ShowMessages(".pe : parses portable executable (PE) files, displays header metadata, and dumps sections.\n\n");
- ShowMessages("syntax : \t.pe [header] [FilePath (string)]\n");
- ShowMessages("syntax : \t.pe [section] [SectionName (string)] [FilePath (string)]\n");
+ ShowMessages("syntax : \t.pe header \n");
+ ShowMessages("syntax : \t.pe section \n");
ShowMessages("\n");
ShowMessages("\t\te.g : .pe header c:\\reverse\\myfile.exe\n");
From 6155304d7f83f5ec9c1d2ed387140017c05d94c8 Mon Sep 17 00:00:00 2001
From: jtaw5649 <213313463+jtaw5649@users.noreply.github.com>
Date: Tue, 2 Jun 2026 12:37:30 +0100
Subject: [PATCH 232/323] feat(pe): expand PE metadata reporting
---
.../code/tests/test-pe-parser.cpp | 137 +-
.../debugger/commands/meta-commands/pe.cpp | 20 +-
.../code/debugger/user-level/pe-parser.cpp | 1811 ++++++++++++++++-
hyperdbg/libhyperdbg/header/pe-parser.h | 38 -
.../command-parser-testcases.txt | 58 +
5 files changed, 1924 insertions(+), 140 deletions(-)
diff --git a/hyperdbg/hyperdbg-test/code/tests/test-pe-parser.cpp b/hyperdbg/hyperdbg-test/code/tests/test-pe-parser.cpp
index 382eb9a3..daceaa65 100644
--- a/hyperdbg/hyperdbg-test/code/tests/test-pe-parser.cpp
+++ b/hyperdbg/hyperdbg-test/code/tests/test-pe-parser.cpp
@@ -23,9 +23,9 @@ PeOptionalHeaderOffset()
}
static SIZE_T
-PeSectionHeaderOffset()
+PeSectionHeaderOffset(SIZE_T OptionalHeaderSize)
{
- return PeOptionalHeaderOffset() + sizeof(IMAGE_OPTIONAL_HEADER64);
+ return PeOptionalHeaderOffset() + OptionalHeaderSize;
}
static VOID
@@ -64,7 +64,26 @@ BuildMinimalPe64(BYTE * Buffer)
}
static VOID
-SetOptionalHeaderSizeOfHeaders(BYTE * Buffer, DWORD SizeOfHeaders)
+BuildMinimalPe32(BYTE * Buffer)
+{
+ ZeroMemory(Buffer, PeFixtureSize);
+
+ WriteWord(Buffer, 0, IMAGE_DOS_SIGNATURE);
+ WriteDword(Buffer, offsetof(IMAGE_DOS_HEADER, e_lfanew), PeHeaderOffset);
+
+ WriteDword(Buffer, PeHeaderOffset, IMAGE_NT_SIGNATURE);
+ WriteWord(Buffer, PeHeaderOffset + sizeof(DWORD) + offsetof(IMAGE_FILE_HEADER, Machine), IMAGE_FILE_MACHINE_I386);
+ WriteWord(Buffer, PeHeaderOffset + sizeof(DWORD) + offsetof(IMAGE_FILE_HEADER, NumberOfSections), 1);
+ WriteWord(Buffer,
+ PeHeaderOffset + sizeof(DWORD) + offsetof(IMAGE_FILE_HEADER, SizeOfOptionalHeader),
+ sizeof(IMAGE_OPTIONAL_HEADER32));
+ WriteWord(Buffer,
+ PeHeaderOffset + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER),
+ IMAGE_NT_OPTIONAL_HDR32_MAGIC);
+}
+
+static VOID
+SetPe64OptionalHeaderSizeOfHeaders(BYTE * Buffer, DWORD SizeOfHeaders)
{
SIZE_T Offset = PeOptionalHeaderOffset() + offsetof(IMAGE_OPTIONAL_HEADER64, SizeOfHeaders);
@@ -72,15 +91,15 @@ SetOptionalHeaderSizeOfHeaders(BYTE * Buffer, DWORD SizeOfHeaders)
}
static IMAGE_SECTION_HEADER *
-GetFixtureSectionHeader(BYTE * Buffer)
+GetFixtureSectionHeader(BYTE * Buffer, SIZE_T OptionalHeaderSize)
{
- return (IMAGE_SECTION_HEADER *)(Buffer + PeSectionHeaderOffset());
+ return (IMAGE_SECTION_HEADER *)(Buffer + PeSectionHeaderOffset(OptionalHeaderSize));
}
static VOID
-ConfigureTextSection(BYTE * Buffer, DWORD VirtualAddress, DWORD VirtualSize, DWORD PointerToRawData, DWORD SizeOfRawData)
+ConfigureTextSection(BYTE * Buffer, SIZE_T OptionalHeaderSize, DWORD VirtualAddress, DWORD VirtualSize, DWORD PointerToRawData, DWORD SizeOfRawData)
{
- IMAGE_SECTION_HEADER * SectionHeader = GetFixtureSectionHeader(Buffer);
+ IMAGE_SECTION_HEADER * SectionHeader = GetFixtureSectionHeader(Buffer, OptionalHeaderSize);
ZeroMemory(SectionHeader, sizeof(*SectionHeader));
CopyMemory(SectionHeader->Name, ".text", sizeof(".text") - 1);
@@ -114,6 +133,23 @@ TestPeParser()
}
}
+ BuildMinimalPe32(Buffer);
+ TestNum++;
+ {
+ PE_IMAGE_READER Reader = {0};
+
+ if (PeImageReaderInitialize(Buffer, sizeof(Buffer), &Reader) && PeImageReaderIs32Bit(&Reader))
+ {
+ printf("[+] Test number %d Passed\n", TestNum);
+ }
+ else
+ {
+ printf("[-] Test number %d Failed\n", TestNum);
+ printf("[x] valid PE32 did not initialize as PE32\n");
+ return FALSE;
+ }
+ }
+
BuildMinimalPe64(Buffer);
WriteWord(Buffer, 0, 0);
TestNum++;
@@ -133,8 +169,46 @@ TestPeParser()
}
BuildMinimalPe64(Buffer);
- SetOptionalHeaderSizeOfHeaders(Buffer, 0x1c0);
- ConfigureTextSection(Buffer, 0x1000, 0x50, 0x1c0, 0x40);
+ WriteWord(Buffer,
+ PeHeaderOffset + sizeof(DWORD) + offsetof(IMAGE_FILE_HEADER, SizeOfOptionalHeader),
+ sizeof(IMAGE_OPTIONAL_HEADER64) - 1);
+ TestNum++;
+ {
+ PE_IMAGE_READER Reader = {0};
+
+ if (!PeImageReaderInitialize(Buffer, sizeof(Buffer), &Reader))
+ {
+ printf("[+] Test number %d Passed\n", TestNum);
+ }
+ else
+ {
+ printf("[-] Test number %d Failed\n", TestNum);
+ printf("[x] truncated optional header initialized successfully\n");
+ return FALSE;
+ }
+ }
+
+ BuildMinimalPe64(Buffer);
+ WriteDword(Buffer, offsetof(IMAGE_DOS_HEADER, e_lfanew), PeFixtureSize);
+ TestNum++;
+ {
+ PE_IMAGE_READER Reader = {0};
+
+ if (!PeImageReaderInitialize(Buffer, sizeof(Buffer), &Reader))
+ {
+ printf("[+] Test number %d Passed\n", TestNum);
+ }
+ else
+ {
+ printf("[-] Test number %d Failed\n", TestNum);
+ printf("[x] invalid e_lfanew initialized successfully\n");
+ return FALSE;
+ }
+ }
+
+ BuildMinimalPe64(Buffer);
+ SetPe64OptionalHeaderSizeOfHeaders(Buffer, 0x1c0);
+ ConfigureTextSection(Buffer, sizeof(IMAGE_OPTIONAL_HEADER64), 0x1000, 0x50, 0x1c0, 0x40);
TestNum++;
{
PE_IMAGE_READER Reader = {0};
@@ -154,8 +228,49 @@ TestPeParser()
}
BuildMinimalPe64(Buffer);
- SetOptionalHeaderSizeOfHeaders(Buffer, 0x1c0);
- ConfigureTextSection(Buffer, 0x1000, 0x40, 0x300, 0x20);
+ SetPe64OptionalHeaderSizeOfHeaders(Buffer, 0x1c0);
+ TestNum++;
+ {
+ PE_IMAGE_READER Reader = {0};
+ SIZE_T FileOffset = 0;
+
+ if (PeImageReaderInitialize(Buffer, sizeof(Buffer), &Reader) &&
+ PeImageReaderRvaToFileOffset(&Reader, 0x20, 4, &FileOffset) && FileOffset == 0x20 &&
+ !PeImageReaderRvaToFileOffset(&Reader, 0x1be, 4, &FileOffset))
+ {
+ printf("[+] Test number %d Passed\n", TestNum);
+ }
+ else
+ {
+ printf("[-] Test number %d Failed\n", TestNum);
+ printf("[x] header RVA bounds were not enforced\n");
+ return FALSE;
+ }
+ }
+
+ TestNum++;
+ {
+ IMAGE_SECTION_HEADER SectionHeader = {0};
+ CHAR Name[9];
+
+ FillMemory(Name, sizeof(Name), 'X');
+ CopyMemory(SectionHeader.Name, "ABCDEFGH", IMAGE_SIZEOF_SHORT_NAME);
+ if (PeImageReaderGetSectionName(&SectionHeader, Name, sizeof(Name)) &&
+ strcmp(Name, "ABCDEFGH") == 0 && Name[IMAGE_SIZEOF_SHORT_NAME] == '\0')
+ {
+ printf("[+] Test number %d Passed\n", TestNum);
+ }
+ else
+ {
+ printf("[-] Test number %d Failed\n", TestNum);
+ printf("[x] 8-byte section name was not null-terminated\n");
+ return FALSE;
+ }
+ }
+
+ BuildMinimalPe64(Buffer);
+ SetPe64OptionalHeaderSizeOfHeaders(Buffer, 0x1c0);
+ ConfigureTextSection(Buffer, sizeof(IMAGE_OPTIONAL_HEADER64), 0x1000, 0x40, 0x300, 0x20);
TestNum++;
{
PE_IMAGE_READER Reader = {0};
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pe.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pe.cpp
index c315e6f9..abaef694 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pe.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pe.cpp
@@ -25,6 +25,7 @@ CommandPeHelp()
ShowMessages("syntax : \t.pe header \n");
ShowMessages("syntax : \t.pe section \n");
+ ShowMessages("\n.pe section dumps are capped at 1 MiB per matching section and 4 MiB total.\n");
ShowMessages("\n");
ShowMessages("\t\te.g : .pe header c:\\reverse\\myfile.exe\n");
@@ -62,7 +63,16 @@ CommandPe(vector CommandTokens, string Command)
{
if (CommandTokens.size() == 3)
{
- ShowMessages("please specify a valid PE file\n\n");
+ ShowMessages("err, incorrect use of the '%s' command\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
+ CommandPeHelp();
+ return;
+ }
+
+ if (CommandTokens.size() != 4)
+ {
+ ShowMessages("err, incorrect use of the '%s' command\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
CommandPeHelp();
return;
}
@@ -71,6 +81,14 @@ CommandPe(vector CommandTokens, string Command)
}
else if (CompareLowerCaseStrings(CommandTokens.at(1), "header"))
{
+ if (CommandTokens.size() != 3)
+ {
+ ShowMessages("err, incorrect use of the '%s' command\n\n",
+ GetCaseSensitiveStringFromCommandToken(CommandTokens.at(0)).c_str());
+ CommandPeHelp();
+ return;
+ }
+
ShowDumpOfSection = FALSE;
TempFilePath = GetCaseSensitiveStringFromCommandToken(CommandTokens.at(2));
}
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index af4347b4..b535563d 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -11,8 +11,38 @@
*/
#include "pch.h"
+#include
+#include
+#include
+
#include "header/pe-image-reader.h"
+typedef struct _RICH_HEADER_INFO
+{
+ int Size;
+ char * PtrToBuffer;
+ int Entries;
+} RICH_HEADER_INFO, *PRICH_HEADER_INFO;
+
+typedef struct _RICH_HEADER_ENTRY
+{
+ WORD ProdID;
+ WORD BuildID;
+ DWORD UseCount;
+} RICH_HEADER_ENTRY, *PRICH_HEADER_ENTRY;
+
+typedef struct _RICH_HEADER
+{
+ PRICH_HEADER_ENTRY Entries;
+} RICH_HEADER, *PRICH_HEADER;
+
+typedef struct _PE_RAW_SECTION_RANGE
+{
+ ULONGLONG Start;
+ ULONGLONG End;
+ const IMAGE_SECTION_HEADER * Section;
+} PE_RAW_SECTION_RANGE, *PPE_RAW_SECTION_RANGE;
+
static const char *
PeGetSubsystemName(WORD Subsystem)
{
@@ -140,13 +170,6 @@ PeAddUlonglong(ULONGLONG Left, ULONGLONG Right, ULONGLONG * Result)
return TRUE;
}
-typedef struct _PE_RAW_SECTION_RANGE
-{
- ULONGLONG Start;
- ULONGLONG End;
- const IMAGE_SECTION_HEADER * Section;
-} PE_RAW_SECTION_RANGE, *PPE_RAW_SECTION_RANGE;
-
static INT
PeCompareRawSectionRange(const VOID * Left, const VOID * Right)
{
@@ -289,6 +312,24 @@ PeReadDwordFromBuffer(const BYTE * Buffer, SIZE_T Offset)
return Value;
}
+static WORD
+PeReadWordFromBuffer(const BYTE * Buffer, SIZE_T Offset)
+{
+ WORD Value = 0;
+
+ CopyMemory(&Value, Buffer + Offset, sizeof(Value));
+ return Value;
+}
+
+static BYTE
+PeReadByteFromBuffer(const BYTE * Buffer, SIZE_T Offset)
+{
+ BYTE Value = 0;
+
+ CopyMemory(&Value, Buffer + Offset, sizeof(Value));
+ return Value;
+}
+
static ULONGLONG
PeReadQwordFromBuffer(const BYTE * Buffer, SIZE_T Offset)
{
@@ -332,6 +373,431 @@ PeReadAsciiStringFromBuffer(const BYTE * StringPointer, DWORD MaxLength, CHAR *
return PeAsciiStringTruncated;
}
+static PE_ASCII_STRING_STATUS
+PeReadAsciiStringInDirectory(PPE_IMAGE_READER Reader,
+ const IMAGE_DATA_DIRECTORY * Directory,
+ DWORD Offset,
+ DWORD MaxLength,
+ CHAR * Buffer,
+ SIZE_T BufferSize)
+{
+ DWORD StringRva = 0;
+
+ if (Directory == NULL || Offset >= Directory->Size || !PeAddDword(Directory->VirtualAddress, Offset, &StringRva))
+ {
+ return PeAsciiStringInvalid;
+ }
+
+ DWORD Remaining = Directory->Size - Offset;
+ return PeReadAsciiStringAtRva(Reader, StringRva, Remaining < MaxLength ? Remaining : MaxLength, Buffer, BufferSize);
+}
+
+static BOOLEAN
+PeComputeChecksum(PPE_IMAGE_READER Reader, SIZE_T ChecksumOffset, DWORD * Checksum)
+{
+ ULONGLONG Sum = 0;
+
+ if (Reader == NULL || Checksum == NULL || ChecksumOffset > Reader->ImageSize || sizeof(DWORD) > Reader->ImageSize - ChecksumOffset)
+ {
+ return FALSE;
+ }
+
+ for (SIZE_T Offset = 0; Offset < Reader->ImageSize; Offset += sizeof(WORD))
+ {
+ WORD Value = 0;
+
+ if (Offset >= ChecksumOffset && Offset < ChecksumOffset + sizeof(DWORD))
+ {
+ Value = 0;
+ }
+ else if (Offset + 1 < Reader->ImageSize)
+ {
+ CopyMemory(&Value, Reader->ImageBase + Offset, sizeof(Value));
+ }
+ else
+ {
+ Value = Reader->ImageBase[Offset];
+ }
+
+ Sum += Value;
+ Sum = (Sum & 0xffff) + (Sum >> 16);
+ }
+
+ Sum = (Sum & 0xffff) + (Sum >> 16);
+ *Checksum = (DWORD)Sum + (DWORD)Reader->ImageSize;
+ return TRUE;
+}
+
+static VOID
+PeShowChecksum(PPE_IMAGE_READER Reader, DWORD HeaderChecksum, SIZE_T ChecksumOffset)
+{
+ const SIZE_T MaxChecksumBytes = 64 * 1024 * 1024;
+ DWORD ComputedChecksum = 0;
+
+ ShowMessages("\n%-36s%#x", "Optional header checksum :", HeaderChecksum);
+ if (Reader != NULL && Reader->ImageSize > MaxChecksumBytes)
+ {
+ ShowMessages("\n%-36s%s", "Computed PE checksum :", "skipped, file is larger than local cap");
+ return;
+ }
+
+ if (PeComputeChecksum(Reader, ChecksumOffset, &ComputedChecksum))
+ {
+ ShowMessages("\n%-36s%#x (%s)", "Computed PE checksum :", ComputedChecksum, ComputedChecksum == HeaderChecksum ? "matches" : "differs");
+ }
+ else
+ {
+ ShowMessages("\n%-36s%s", "Computed PE checksum :", "not available");
+ }
+}
+
+static VOID
+PeShowCertificateTable(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * SecurityDirectory)
+{
+ const DWORD MaxCertificates = 0x1000;
+
+ ShowMessages("\n\nCertificate table\n-----------------");
+
+ if (SecurityDirectory->VirtualAddress == 0 || SecurityDirectory->Size == 0)
+ {
+ ShowMessages("\n%-36s%s", "Certificate table :", "empty");
+ return;
+ }
+
+ const BYTE * DirectoryPointer = NULL;
+ if (!PeImageReaderGetPointerAtOffset(Reader, SecurityDirectory->VirtualAddress, SecurityDirectory->Size, &DirectoryPointer))
+ {
+ ShowMessages("\n%-36s%s", "Certificate table :", "invalid bounds");
+ return;
+ }
+
+ DWORD Offset = 0;
+ DWORD Count = 0;
+ while (Offset < SecurityDirectory->Size && Count < MaxCertificates)
+ {
+ if (SecurityDirectory->Size - Offset < 8)
+ {
+ ShowMessages("\n%-36s%#llx", "Warning, truncated certificate at :", (UINT64)SecurityDirectory->VirtualAddress + Offset);
+ break;
+ }
+
+ const BYTE * Entry = DirectoryPointer + Offset;
+ DWORD Length = PeReadDwordFromBuffer(Entry, 0);
+ WORD Revision = PeReadWordFromBuffer(Entry, 4);
+ WORD Type = PeReadWordFromBuffer(Entry, 6);
+
+ ShowMessages("\n[%u] file offset %#llx length %#x revision %#x type %#x", Count, (UINT64)SecurityDirectory->VirtualAddress + Offset, Length, Revision, Type);
+
+ if (Length < 8)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "certificate length is smaller than header");
+ break;
+ }
+
+ if (Length > SecurityDirectory->Size - Offset)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "certificate entry extends past directory");
+ break;
+ }
+
+ DWORD AlignedLength = (Length + 7) & ~7u;
+ if (AlignedLength < Length || AlignedLength > SecurityDirectory->Size - Offset)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "certificate alignment extends past directory");
+ break;
+ }
+
+ Offset += AlignedLength;
+ Count++;
+ }
+
+ ShowMessages("\n%-36s%u", "Certificate entry count :", Count);
+ if (Count == MaxCertificates)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, certificate cap reached :", MaxCertificates);
+ }
+}
+
+static VOID
+PeShowBaseRelocations(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * RelocDirectory)
+{
+ const DWORD MaxBlocks = 0x10000;
+ const DWORD MaxEntries = 0x100000;
+ const DWORD MaxPrintedBlocks = 0x20;
+ DWORD TypeCounts[16] = {0};
+ DWORD BlockCount = 0;
+ ULONGLONG EntryCount = 0;
+ BOOLEAN EntryCapped = FALSE;
+
+ ShowMessages("\n\nBase relocations\n----------------");
+
+ if (RelocDirectory->VirtualAddress == 0 || RelocDirectory->Size == 0)
+ {
+ ShowMessages("\n%-36s%s", "Base relocation table :", "empty");
+ return;
+ }
+
+ DWORD Offset = 0;
+ while (Offset < RelocDirectory->Size && BlockCount < MaxBlocks && EntryCount < MaxEntries)
+ {
+ DWORD BlockRva = 0;
+ if (!PeAddDword(RelocDirectory->VirtualAddress, Offset, &BlockRva) || RelocDirectory->Size - Offset < sizeof(IMAGE_BASE_RELOCATION))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "relocation block header is truncated");
+ break;
+ }
+
+ const BYTE * BlockPointer = NULL;
+ if (!PeGetPointerAtRva(Reader, BlockRva, sizeof(IMAGE_BASE_RELOCATION), &BlockPointer))
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid relocation block RVA :", BlockRva);
+ break;
+ }
+
+ DWORD PageRva = PeReadDwordFromBuffer(BlockPointer, 0);
+ DWORD SizeOfBlock = PeReadDwordFromBuffer(BlockPointer, 4);
+
+ if (SizeOfBlock < sizeof(IMAGE_BASE_RELOCATION))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "relocation block size is smaller than header");
+ break;
+ }
+
+ if (SizeOfBlock > RelocDirectory->Size - Offset)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "relocation block extends past directory");
+ break;
+ }
+
+ if (((SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) & 1) != 0)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, odd relocation block size :", SizeOfBlock);
+ }
+
+ DWORD EntriesInBlock = (SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) / sizeof(WORD);
+ if (BlockCount < MaxPrintedBlocks)
+ {
+ ShowMessages("\n[%u] page RVA %#x block size %#x entries %u", BlockCount, PageRva, SizeOfBlock, EntriesInBlock);
+ }
+
+ DWORD EntriesRva = 0;
+ if (!PeAddDword(BlockRva, sizeof(IMAGE_BASE_RELOCATION), &EntriesRva))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "relocation entries RVA overflow");
+ break;
+ }
+
+ const BYTE * Entries = NULL;
+ if (EntriesInBlock != 0 && !PeGetPointerAtRva(Reader, EntriesRva, EntriesInBlock * sizeof(WORD), &Entries))
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid relocation entries RVA :", EntriesRva);
+ break;
+ }
+
+ for (DWORD EntryIndex = 0; EntryIndex < EntriesInBlock && EntryCount < MaxEntries; EntryIndex++)
+ {
+ WORD Entry = PeReadWordFromBuffer(Entries, EntryIndex * sizeof(WORD));
+ WORD Type = (Entry >> 12) & 0xf;
+
+ TypeCounts[Type]++;
+ EntryCount++;
+ if (EntryCount == MaxEntries)
+ {
+ EntryCapped = TRUE;
+ break;
+ }
+
+ if (Type == IMAGE_REL_BASED_HIGHADJ)
+ {
+ if (EntryIndex + 1 >= EntriesInBlock)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "HIGHADJ relocation is missing its pair entry");
+ }
+ else
+ {
+ EntryIndex++;
+ EntryCount++;
+ }
+ }
+ }
+
+ if (EntryCount == MaxEntries)
+ {
+ EntryCapped = TRUE;
+ }
+
+ Offset += SizeOfBlock;
+ BlockCount++;
+ }
+
+ ShowMessages("\n%-36s%u", "Relocation block count :", BlockCount);
+ ShowMessages("\n%-36s%llu", "Relocation entry count :", EntryCount);
+ for (DWORD Type = 0; Type < RTL_NUMBER_OF(TypeCounts); Type++)
+ {
+ if (TypeCounts[Type] != 0)
+ {
+ ShowMessages("\n%-36s%u = %u", "Relocation type count :", Type, TypeCounts[Type]);
+ }
+ }
+
+ if (BlockCount == MaxBlocks)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, relocation block cap reached :", MaxBlocks);
+ }
+ if (EntryCapped)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, relocation entry cap reached :", MaxEntries);
+ }
+ if (BlockCount > MaxPrintedBlocks)
+ {
+ ShowMessages("\n%-36s%#x", "Info, printed relocation blocks :", MaxPrintedBlocks);
+ }
+}
+
+static VOID
+PeShowBoundImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * BoundImportDirectory)
+{
+ const DWORD MaxDescriptors = 0x1000;
+ const DWORD MaxNameLength = 0x200;
+
+ ShowMessages("\n\nBound imports\n-------------");
+
+ if (BoundImportDirectory->VirtualAddress == 0 || BoundImportDirectory->Size == 0)
+ {
+ ShowMessages("\n%-36s%s", "Bound import directory :", "empty");
+ return;
+ }
+
+ DWORD Offset = 0;
+ DWORD DescriptorCount = 0;
+ while (Offset < BoundImportDirectory->Size && DescriptorCount < MaxDescriptors)
+ {
+ DWORD DescriptorRva = 0;
+ if (!PeAddDword(BoundImportDirectory->VirtualAddress, Offset, &DescriptorRva) || BoundImportDirectory->Size - Offset < sizeof(IMAGE_BOUND_IMPORT_DESCRIPTOR))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "bound import descriptor is truncated");
+ break;
+ }
+
+ const BYTE * Descriptor = NULL;
+ if (!PeGetPointerAtRva(Reader, DescriptorRva, sizeof(IMAGE_BOUND_IMPORT_DESCRIPTOR), &Descriptor))
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid bound descriptor RVA :", DescriptorRva);
+ break;
+ }
+
+ DWORD TimeDateStamp = PeReadDwordFromBuffer(Descriptor, 0);
+ WORD OffsetModuleName = PeReadWordFromBuffer(Descriptor, 4);
+ WORD NumberOfModuleForwarders = PeReadWordFromBuffer(Descriptor, 6);
+
+ if (TimeDateStamp == 0 && OffsetModuleName == 0 && NumberOfModuleForwarders == 0)
+ {
+ break;
+ }
+
+ CHAR ModuleName[MaxNameLength + 1] = {0};
+ PE_ASCII_STRING_STATUS NameStatus = PeReadAsciiStringInDirectory(Reader,
+ BoundImportDirectory,
+ OffsetModuleName,
+ MaxNameLength,
+ ModuleName,
+ sizeof(ModuleName));
+
+ ShowMessages("\n[%u] module %s timestamp %#x forwarder refs %u",
+ DescriptorCount,
+ NameStatus == PeAsciiStringOk ? ModuleName : PeAsciiStatusName(NameStatus),
+ TimeDateStamp,
+ NumberOfModuleForwarders);
+
+ DWORD DescriptorSpan = sizeof(IMAGE_BOUND_IMPORT_DESCRIPTOR) + (NumberOfModuleForwarders * (DWORD)sizeof(IMAGE_BOUND_FORWARDER_REF));
+ if (DescriptorSpan > BoundImportDirectory->Size - Offset)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "bound import forwarder refs extend past directory");
+ break;
+ }
+
+ for (WORD ForwarderIndex = 0; ForwarderIndex < NumberOfModuleForwarders; ForwarderIndex++)
+ {
+ DWORD ForwarderOffset = Offset + sizeof(IMAGE_BOUND_IMPORT_DESCRIPTOR) + (ForwarderIndex * (DWORD)sizeof(IMAGE_BOUND_FORWARDER_REF));
+ DWORD ForwarderRva = 0;
+
+ if (!PeAddDword(BoundImportDirectory->VirtualAddress, ForwarderOffset, &ForwarderRva))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "bound forwarder RVA overflow");
+ break;
+ }
+
+ const BYTE * Forwarder = NULL;
+ if (!PeGetPointerAtRva(Reader, ForwarderRva, sizeof(IMAGE_BOUND_FORWARDER_REF), &Forwarder))
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid bound forwarder RVA :", ForwarderRva);
+ break;
+ }
+
+ DWORD ForwarderTimeDateStamp = PeReadDwordFromBuffer(Forwarder, 0);
+ WORD ForwarderOffsetModuleName = PeReadWordFromBuffer(Forwarder, 4);
+ CHAR ForwarderName[MaxNameLength + 1] = {0};
+
+ PE_ASCII_STRING_STATUS ForwarderNameStatus = PeReadAsciiStringInDirectory(Reader,
+ BoundImportDirectory,
+ ForwarderOffsetModuleName,
+ MaxNameLength,
+ ForwarderName,
+ sizeof(ForwarderName));
+ ShowMessages("\n [%u] forwarder %s timestamp %#x",
+ ForwarderIndex,
+ ForwarderNameStatus == PeAsciiStringOk ? ForwarderName : PeAsciiStatusName(ForwarderNameStatus),
+ ForwarderTimeDateStamp);
+ }
+
+ Offset += DescriptorSpan;
+ DescriptorCount++;
+ }
+
+ ShowMessages("\n%-36s%u", "Bound import descriptor count :", DescriptorCount);
+ if (DescriptorCount == MaxDescriptors)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, bound import cap reached :", MaxDescriptors);
+ }
+}
+
+static ULONGLONG
+PeFnv1a64(const BYTE * Data, DWORD Size)
+{
+ ULONGLONG Hash = 14695981039346656037ull;
+
+ for (DWORD Index = 0; Index < Size; Index++)
+ {
+ Hash ^= Data[Index];
+ Hash *= 1099511628211ull;
+ }
+
+ return Hash;
+}
+
+static double
+PeCalculateEntropy(const BYTE * Data, DWORD Size)
+{
+ DWORD Counts[256] = {0};
+ double Entropy = 0.0;
+
+ for (DWORD Index = 0; Index < Size; Index++)
+ {
+ Counts[Data[Index]]++;
+ }
+
+ for (DWORD Index = 0; Index < RTL_NUMBER_OF(Counts); Index++)
+ {
+ if (Counts[Index] != 0)
+ {
+ double Probability = (double)Counts[Index] / (double)Size;
+ Entropy -= Probability * (log(Probability) / log(2.0));
+ }
+ }
+
+ return Entropy;
+}
+
static BOOLEAN
PeReadWordAtRva(PPE_IMAGE_READER Reader, DWORD Rva, WORD * Value)
{
@@ -371,6 +837,810 @@ PeReadThunkAtRva(PPE_IMAGE_READER Reader, DWORD Rva, BOOLEAN Is32Bit, ULONGLONG
return TRUE;
}
+static VOID
+PeShowResourceTypeCount(DWORD TypeId, DWORD Count)
+{
+ const CHAR * TypeName = NULL;
+
+ switch (TypeId)
+ {
+ case 1:
+ TypeName = "cursor";
+ break;
+ case 2:
+ TypeName = "bitmap";
+ break;
+ case 3:
+ TypeName = "icon";
+ break;
+ case 4:
+ TypeName = "menu";
+ break;
+ case 5:
+ TypeName = "dialog";
+ break;
+ case 6:
+ TypeName = "string";
+ break;
+ case 7:
+ TypeName = "font directory";
+ break;
+ case 8:
+ TypeName = "font";
+ break;
+ case 9:
+ TypeName = "accelerator";
+ break;
+ case 10:
+ TypeName = "rcdata";
+ break;
+ case 11:
+ TypeName = "message table";
+ break;
+ case 12:
+ TypeName = "group cursor";
+ break;
+ case 14:
+ TypeName = "group icon";
+ break;
+ case 16:
+ TypeName = "version";
+ break;
+ case 24:
+ TypeName = "manifest";
+ break;
+ default:
+ TypeName = NULL;
+ break;
+ }
+
+ if (TypeName != NULL)
+ {
+ ShowMessages("\n%-36s%s (%u) = %u", "Resource type count :", TypeName, TypeId, Count);
+ }
+}
+
+static VOID
+PeShowResources(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ResourceDirectory)
+{
+ const DWORD MaxDepth = 8;
+ const DWORD MaxNodes = 0x4000;
+ const DWORD MaxEntries = 0x10000;
+ const DWORD MaxVisitedOffsets = 0x4000;
+
+ typedef struct _RESOURCE_NODE
+ {
+ DWORD Offset;
+ DWORD Depth;
+ DWORD TypeId;
+ } RESOURCE_NODE;
+
+ RESOURCE_NODE * Stack = NULL;
+ DWORD * Visited = NULL;
+ DWORD StackCount = 0;
+ DWORD VisitedCount = 0;
+ DWORD TypeCounts[25] = {0};
+ DWORD DirectoryCount = 0;
+ DWORD EntryCount = 0;
+ DWORD DeclaredDataEntryCount = 0;
+ DWORD MappedDataEntryCount = 0;
+ DWORD InvalidEntryCount = 0;
+ DWORD NamedRootTypeCount = 0;
+ ULONGLONG DeclaredDataBytes = 0;
+ ULONGLONG MappedDataBytes = 0;
+ BOOLEAN NodeCapReached = FALSE;
+ BOOLEAN EntryCapReached = FALSE;
+
+ ShowMessages("\n\nResources\n---------");
+
+ if (ResourceDirectory->VirtualAddress == 0 || ResourceDirectory->Size == 0)
+ {
+ ShowMessages("\n%-36s%s", "Resource directory :", "empty");
+ return;
+ }
+
+ if (ResourceDirectory->Size < 16)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "resource directory is smaller than one header");
+ return;
+ }
+
+ Stack = new (std::nothrow) RESOURCE_NODE[MaxNodes];
+ Visited = new (std::nothrow) DWORD[MaxVisitedOffsets];
+
+ if (Stack == NULL || Visited == NULL)
+ {
+ ShowMessages("\n%-36s%s", "Resource directory :", "memory allocation failed");
+ delete[] Stack;
+ delete[] Visited;
+ return;
+ }
+
+ ZeroMemory(Stack, sizeof(RESOURCE_NODE) * MaxNodes);
+ ZeroMemory(Visited, sizeof(DWORD) * MaxVisitedOffsets);
+
+ Stack[StackCount].Offset = 0;
+ Stack[StackCount].Depth = 0;
+ Stack[StackCount].TypeId = 0;
+ StackCount++;
+
+ while (StackCount != 0)
+ {
+ RESOURCE_NODE Node = Stack[--StackCount];
+
+ if (DirectoryCount >= MaxNodes)
+ {
+ NodeCapReached = TRUE;
+ break;
+ }
+
+ if (Node.Depth > MaxDepth)
+ {
+ InvalidEntryCount++;
+ continue;
+ }
+
+ BOOLEAN Seen = FALSE;
+ for (DWORD Index = 0; Index < VisitedCount; Index++)
+ {
+ if (Visited[Index] == Node.Offset)
+ {
+ Seen = TRUE;
+ break;
+ }
+ }
+
+ if (Seen)
+ {
+ InvalidEntryCount++;
+ continue;
+ }
+
+ if (VisitedCount < MaxVisitedOffsets)
+ {
+ Visited[VisitedCount++] = Node.Offset;
+ }
+ else
+ {
+ NodeCapReached = TRUE;
+ break;
+ }
+
+ DWORD DirectoryRva = 0;
+ if (!PeAddDword(ResourceDirectory->VirtualAddress, Node.Offset, &DirectoryRva) ||
+ Node.Offset > ResourceDirectory->Size || ResourceDirectory->Size - Node.Offset < 16)
+ {
+ InvalidEntryCount++;
+ continue;
+ }
+
+ const BYTE * Directory = NULL;
+ if (!PeGetPointerAtRva(Reader, DirectoryRva, 16, &Directory))
+ {
+ InvalidEntryCount++;
+ continue;
+ }
+
+ WORD NamedEntries = PeReadWordFromBuffer(Directory, 12);
+ WORD IdEntries = PeReadWordFromBuffer(Directory, 14);
+ DWORD EntryTotal = (DWORD)NamedEntries + (DWORD)IdEntries;
+ DWORD EntryBytes = 0;
+
+ if (EntryTotal > (MAXDWORD - 16) / 8 || !PeAddDword(16, EntryTotal * 8, &EntryBytes) ||
+ EntryBytes > ResourceDirectory->Size - Node.Offset)
+ {
+ InvalidEntryCount++;
+ continue;
+ }
+
+ DirectoryCount++;
+
+ const BYTE * Entries = NULL;
+ if (EntryTotal != 0 && !PeGetPointerAtRva(Reader, DirectoryRva, EntryBytes, &Entries))
+ {
+ InvalidEntryCount++;
+ continue;
+ }
+
+ for (DWORD EntryIndex = 0; EntryIndex < EntryTotal; EntryIndex++)
+ {
+ if (EntryCount >= MaxEntries)
+ {
+ EntryCapReached = TRUE;
+ break;
+ }
+
+ const BYTE * Entry = Entries + 16 + (EntryIndex * 8);
+ DWORD NameOrId = PeReadDwordFromBuffer(Entry, 0);
+ DWORD OffsetToData = PeReadDwordFromBuffer(Entry, 4);
+ DWORD ChildOffset = OffsetToData & 0x7fffffff;
+ DWORD TypeId = Node.TypeId;
+
+ EntryCount++;
+
+ if ((NameOrId & 0x80000000) != 0)
+ {
+ DWORD StringOffset = NameOrId & 0x7fffffff;
+ DWORD StringRva = 0;
+
+ if (StringOffset > ResourceDirectory->Size || ResourceDirectory->Size - StringOffset < sizeof(WORD) ||
+ !PeAddDword(ResourceDirectory->VirtualAddress, StringOffset, &StringRva))
+ {
+ InvalidEntryCount++;
+ }
+ else
+ {
+ const BYTE * String = NULL;
+ if (!PeGetPointerAtRva(Reader, StringRva, sizeof(WORD), &String))
+ {
+ InvalidEntryCount++;
+ }
+ else
+ {
+ WORD StringLength = PeReadWordFromBuffer(String, 0);
+ DWORD StringBytes = (DWORD)sizeof(WORD) + ((DWORD)StringLength * sizeof(WCHAR));
+
+ if (StringBytes > ResourceDirectory->Size - StringOffset || !PeGetPointerAtRva(Reader, StringRva, StringBytes, &String))
+ {
+ InvalidEntryCount++;
+ }
+ }
+ }
+ if (Node.Depth == 0)
+ {
+ NamedRootTypeCount++;
+ }
+ }
+ else if (Node.Depth == 0)
+ {
+ TypeId = NameOrId & 0xffff;
+ if (TypeId < RTL_NUMBER_OF(TypeCounts))
+ {
+ TypeCounts[TypeId]++;
+ }
+ }
+
+ if ((OffsetToData & 0x80000000) != 0)
+ {
+ if (ChildOffset > ResourceDirectory->Size || ResourceDirectory->Size - ChildOffset < 16 || Node.Depth + 1 > MaxDepth)
+ {
+ InvalidEntryCount++;
+ continue;
+ }
+
+ if (StackCount >= MaxNodes)
+ {
+ NodeCapReached = TRUE;
+ continue;
+ }
+
+ Stack[StackCount].Offset = ChildOffset;
+ Stack[StackCount].Depth = Node.Depth + 1;
+ Stack[StackCount].TypeId = TypeId;
+ StackCount++;
+ }
+ else
+ {
+ DWORD DataEntryRva = 0;
+ if (ChildOffset > ResourceDirectory->Size || ResourceDirectory->Size - ChildOffset < 16 ||
+ !PeAddDword(ResourceDirectory->VirtualAddress, ChildOffset, &DataEntryRva))
+ {
+ InvalidEntryCount++;
+ continue;
+ }
+
+ const BYTE * DataEntry = NULL;
+ if (!PeGetPointerAtRva(Reader, DataEntryRva, 16, &DataEntry))
+ {
+ InvalidEntryCount++;
+ continue;
+ }
+
+ DWORD DataRva = PeReadDwordFromBuffer(DataEntry, 0);
+ DWORD DataSize = PeReadDwordFromBuffer(DataEntry, 4);
+
+ BOOLEAN PayloadMapped = TRUE;
+ if (DataSize != 0)
+ {
+ const BYTE * Payload = NULL;
+ if (!PeGetPointerAtRva(Reader, DataRva, DataSize, &Payload))
+ {
+ InvalidEntryCount++;
+ PayloadMapped = FALSE;
+ }
+ }
+
+ DeclaredDataBytes += DataSize;
+ DeclaredDataEntryCount++;
+ if (PayloadMapped)
+ {
+ MappedDataBytes += DataSize;
+ MappedDataEntryCount++;
+ }
+ }
+ }
+
+ if (EntryCapReached)
+ {
+ break;
+ }
+ }
+
+ ShowMessages("\n%-36s%u", "Resource directory count :", DirectoryCount);
+ ShowMessages("\n%-36s%u", "Resource entry count :", EntryCount);
+ ShowMessages("\n%-36s%u", "Resource declared data entries :", DeclaredDataEntryCount);
+ ShowMessages("\n%-36s%u", "Resource mapped data entries :", MappedDataEntryCount);
+ ShowMessages("\n%-36s%u", "Resource invalid entry count :", InvalidEntryCount);
+ ShowMessages("\n%-36s%u", "Resource named root types :", NamedRootTypeCount);
+ ShowMessages("\n%-36s%#llx", "Resource declared data bytes :", DeclaredDataBytes);
+ ShowMessages("\n%-36s%#llx", "Resource mapped data bytes :", MappedDataBytes);
+
+ for (DWORD TypeId = 0; TypeId < RTL_NUMBER_OF(TypeCounts); TypeId++)
+ {
+ if (TypeCounts[TypeId] != 0)
+ {
+ PeShowResourceTypeCount(TypeId, TypeCounts[TypeId]);
+ }
+ }
+
+ if (NodeCapReached)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, resource node cap reached :", MaxNodes);
+ }
+ if (EntryCapReached)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, resource entry cap reached :", MaxEntries);
+ }
+
+ delete[] Stack;
+ delete[] Visited;
+}
+
+static VOID
+PeShowExceptions(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ExceptionDirectory, WORD Machine, BOOLEAN Is32Bit)
+{
+ const DWORD RuntimeFunctionSize = 12;
+ const DWORD MaxEntries = 0x100000;
+ const DWORD MaxPrintedEntries = 0x20;
+ const DWORD MaxWarnings = 8;
+
+ ShowMessages("\n\nExceptions\n----------");
+
+ if (ExceptionDirectory->VirtualAddress == 0 || ExceptionDirectory->Size == 0)
+ {
+ ShowMessages("\n%-36s%s", "Exception directory :", "empty");
+ return;
+ }
+
+ if (Machine != IMAGE_FILE_MACHINE_AMD64 || Is32Bit)
+ {
+ ShowMessages("\n%-36s%s", "Exception directory :", "present, x64 runtime-function decoding skipped for this machine");
+ ShowMessages("\n%-36s%#x", "Raw exception directory size :", ExceptionDirectory->Size);
+ return;
+ }
+
+ if (ExceptionDirectory->Size < RuntimeFunctionSize)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "exception directory is smaller than one runtime function entry");
+ return;
+ }
+
+ if ((ExceptionDirectory->Size % RuntimeFunctionSize) != 0)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, malformed exception size :", ExceptionDirectory->Size);
+ }
+
+ DWORD EntryCount = ExceptionDirectory->Size / RuntimeFunctionSize;
+ BOOLEAN EntryCapped = FALSE;
+ DWORD RangeWarnings = 0;
+ DWORD UnwindWarnings = 0;
+ DWORD SkippedNullEntries = 0;
+ DWORD PrintedEntries = 0;
+ if (EntryCount > MaxEntries)
+ {
+ EntryCount = MaxEntries;
+ EntryCapped = TRUE;
+ }
+
+ ShowMessages("\n%-36s%u", "Runtime function count :", EntryCount);
+
+ for (DWORD EntryIndex = 0; EntryIndex < EntryCount; EntryIndex++)
+ {
+ DWORD EntryRva = 0;
+ if (!PeAddDword(ExceptionDirectory->VirtualAddress, EntryIndex * RuntimeFunctionSize, &EntryRva))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "runtime function entry RVA overflow");
+ break;
+ }
+
+ const BYTE * Entry = NULL;
+ if (!PeGetPointerAtRva(Reader, EntryRva, RuntimeFunctionSize, &Entry))
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid runtime entry RVA :", EntryRva);
+ break;
+ }
+
+ DWORD BeginAddress = PeReadDwordFromBuffer(Entry, 0);
+ DWORD EndAddress = PeReadDwordFromBuffer(Entry, 4);
+ DWORD UnwindRva = PeReadDwordFromBuffer(Entry, 8);
+
+ if (BeginAddress == 0 && EndAddress == 0 && UnwindRva == 0)
+ {
+ SkippedNullEntries++;
+ continue;
+ }
+
+ if (BeginAddress >= EndAddress)
+ {
+ if (RangeWarnings < MaxWarnings && PrintedEntries < MaxPrintedEntries)
+ {
+ ShowMessages("\n%-36s%u", "Warning, invalid runtime range index :", EntryIndex);
+ }
+ RangeWarnings++;
+ }
+
+ const BYTE * Unwind = NULL;
+ BOOLEAN UnwindMapped = UnwindRva != 0 && PeGetPointerAtRva(Reader, UnwindRva, 4, &Unwind);
+ if (!UnwindMapped)
+ {
+ if (UnwindWarnings < MaxWarnings && PrintedEntries < MaxPrintedEntries)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid unwind RVA :", UnwindRva);
+ }
+ UnwindWarnings++;
+ }
+
+ if (PrintedEntries < MaxPrintedEntries)
+ {
+ if (UnwindMapped)
+ {
+ BYTE VersionAndFlags = PeReadByteFromBuffer(Unwind, 0);
+ BYTE Frame = PeReadByteFromBuffer(Unwind, 3);
+
+ ShowMessages("\n[%u] begin %#x end %#x unwind %#x version %u flags %#x prolog %#x codes %u frame reg %u frame off %u",
+ EntryIndex,
+ BeginAddress,
+ EndAddress,
+ UnwindRva,
+ VersionAndFlags & 0x7,
+ VersionAndFlags >> 3,
+ PeReadByteFromBuffer(Unwind, 1),
+ PeReadByteFromBuffer(Unwind, 2),
+ Frame & 0xf,
+ Frame >> 4);
+ }
+ else
+ {
+ ShowMessages("\n[%u] begin %#x end %#x unwind %#x", EntryIndex, BeginAddress, EndAddress, UnwindRva);
+ }
+ PrintedEntries++;
+ }
+ }
+
+ if (EntryCapped)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, exception entry cap reached :", MaxEntries);
+ }
+ if (EntryCount > MaxPrintedEntries)
+ {
+ ShowMessages("\n%-36s%u", "Info, printed exception entries :", PrintedEntries);
+ }
+ if (SkippedNullEntries != 0)
+ {
+ ShowMessages("\n%-36s%u", "Info, skipped null runtime entries :", SkippedNullEntries);
+ }
+ if (RangeWarnings > MaxWarnings)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid range warnings shown :", MaxWarnings);
+ }
+ if (UnwindWarnings > MaxWarnings)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid unwind warnings shown :", MaxWarnings);
+ }
+}
+
+static BOOLEAN
+PeResolveDelayImportAddress(ULONGLONG Address, BOOLEAN UsesRva, ULONGLONG ImageBase, DWORD * Rva)
+{
+ if (Rva == NULL)
+ {
+ return FALSE;
+ }
+
+ if (UsesRva)
+ {
+ if (Address > MAXDWORD)
+ {
+ return FALSE;
+ }
+
+ *Rva = (DWORD)Address;
+ return TRUE;
+ }
+
+ return PeVaToRva(Address, ImageBase, Rva);
+}
+
+static VOID
+PeShowDelayImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * DelayImportDirectory, BOOLEAN Is32Bit, ULONGLONG ImageBase)
+{
+ const DWORD MaxDescriptors = 0x1000;
+ const DWORD MaxTotalImports = 0x2000;
+ const DWORD MaxDllNameLength = 0x200;
+ const DWORD MaxImportNameLength = 0x200;
+ const DWORD DescriptorSize = 32;
+
+ ShowMessages("\n\nDelay imports\n-------------");
+
+ if (DelayImportDirectory->VirtualAddress == 0 || DelayImportDirectory->Size == 0)
+ {
+ ShowMessages("\n%-36s%s", "Delay import directory :", "empty");
+ return;
+ }
+
+ if (DelayImportDirectory->Size < DescriptorSize)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "delay import directory is smaller than one descriptor");
+ return;
+ }
+
+ DWORD DescriptorCount = DelayImportDirectory->Size / DescriptorSize;
+ if ((DelayImportDirectory->Size % DescriptorSize) != 0)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, malformed delay import size :", DelayImportDirectory->Size);
+ }
+
+ BOOLEAN DescriptorCapped = FALSE;
+ if (DescriptorCount > MaxDescriptors)
+ {
+ DescriptorCount = MaxDescriptors;
+ DescriptorCapped = TRUE;
+ }
+
+ DWORD TotalImports = 0;
+ BOOLEAN FoundTerminator = FALSE;
+ BOOLEAN TotalImportsCapped = FALSE;
+
+ for (DWORD DescriptorIndex = 0; DescriptorIndex < DescriptorCount; DescriptorIndex++)
+ {
+ DWORD DescriptorRva = 0;
+ if (!PeAddDword(DelayImportDirectory->VirtualAddress, DescriptorIndex * DescriptorSize, &DescriptorRva))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "delay import descriptor RVA overflow");
+ break;
+ }
+
+ const BYTE * Descriptor = NULL;
+ if (!PeGetPointerAtRva(Reader, DescriptorRva, DescriptorSize, &Descriptor))
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid delay descriptor RVA :", DescriptorRva);
+ break;
+ }
+
+ DWORD Attributes = PeReadDwordFromBuffer(Descriptor, 0);
+ DWORD NameValue = PeReadDwordFromBuffer(Descriptor, 4);
+ DWORD IatValue = PeReadDwordFromBuffer(Descriptor, 12);
+ DWORD IntValue = PeReadDwordFromBuffer(Descriptor, 16);
+ DWORD BoundIatValue = PeReadDwordFromBuffer(Descriptor, 20);
+ DWORD UnloadIatValue = PeReadDwordFromBuffer(Descriptor, 24);
+ DWORD TimeDateStamp = PeReadDwordFromBuffer(Descriptor, 28);
+
+ if (Attributes == 0 && NameValue == 0 && PeReadDwordFromBuffer(Descriptor, 8) == 0 && IatValue == 0 && IntValue == 0 &&
+ BoundIatValue == 0 && UnloadIatValue == 0 && TimeDateStamp == 0)
+ {
+ FoundTerminator = TRUE;
+ break;
+ }
+
+ BOOLEAN UsesRva = (Attributes & 1) != 0;
+ DWORD NameRva = 0;
+ DWORD LookupThunkRva = 0;
+ DWORD IatThunkRva = 0;
+
+ if (!UsesRva)
+ {
+ ShowMessages("\n%-36s%s", "Info :", "delay import descriptor uses VA fields");
+ }
+
+ if (!PeResolveDelayImportAddress(NameValue, UsesRva, ImageBase, &NameRva))
+ {
+ ShowMessages("\n[%u] DLL name %s", DescriptorIndex, "invalid VA/RVA");
+ ShowMessages("\n%-36s%s", "Warning :", "skipping delay imports for descriptor with unreadable DLL name");
+ continue;
+ }
+
+ CHAR DllName[MaxDllNameLength + 1] = {0};
+ PE_ASCII_STRING_STATUS DllNameStatus = PeReadAsciiStringAtRva(Reader,
+ NameRva,
+ MaxDllNameLength,
+ DllName,
+ sizeof(DllName));
+ if (DllNameStatus != PeAsciiStringOk)
+ {
+ ShowMessages("\n[%u] DLL name %s", DescriptorIndex, PeAsciiStatusName(DllNameStatus));
+ ShowMessages("\n%-36s%s", "Warning :", "skipping delay imports for descriptor with unreadable DLL name");
+ continue;
+ }
+
+ ShowMessages("\n[%u] DLL name %s attributes %#x timestamp %#x", DescriptorIndex, DllName, Attributes, TimeDateStamp);
+
+ if (!PeResolveDelayImportAddress(IntValue != 0 ? IntValue : IatValue, UsesRva, ImageBase, &LookupThunkRva) ||
+ !PeResolveDelayImportAddress(IatValue, UsesRva, ImageBase, &IatThunkRva))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "delay import thunk VA/RVA is invalid");
+ continue;
+ }
+
+ DWORD ThunkSize = Is32Bit ? sizeof(DWORD) : sizeof(ULONGLONG);
+ for (DWORD ThunkIndex = 0; TotalImports < MaxTotalImports; ThunkIndex++)
+ {
+ DWORD LookupEntryRva = 0;
+ DWORD IatEntryRva = 0;
+ if (!PeAddDword(LookupThunkRva, ThunkIndex * ThunkSize, &LookupEntryRva) ||
+ !PeAddDword(IatThunkRva, ThunkIndex * ThunkSize, &IatEntryRva))
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "delay import thunk RVA overflow");
+ break;
+ }
+
+ ULONGLONG ThunkValue = 0;
+ if (!PeReadThunkAtRva(Reader, LookupEntryRva, Is32Bit, &ThunkValue))
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid delay thunk RVA :", LookupEntryRva);
+ break;
+ }
+
+ if (ThunkValue == 0)
+ {
+ break;
+ }
+
+ ULONGLONG OrdinalFlag = Is32Bit ? IMAGE_ORDINAL_FLAG32 : IMAGE_ORDINAL_FLAG64;
+ if ((ThunkValue & OrdinalFlag) != 0)
+ {
+ ShowMessages("\n [%u] ordinal %u thunk RVA %#x", ThunkIndex, (UINT32)(ThunkValue & 0xffff), IatEntryRva);
+ TotalImports++;
+ continue;
+ }
+
+ DWORD NameRvaFromThunk = 0;
+ if (!PeResolveDelayImportAddress(ThunkValue, UsesRva, ImageBase, &NameRvaFromThunk))
+ {
+ ShowMessages("\n%-36s%#llx", "Warning, invalid delay import name VA/RVA :", (UINT64)ThunkValue);
+ TotalImports++;
+ continue;
+ }
+
+ WORD Hint = 0;
+ if (!PeReadWordAtRva(Reader, NameRvaFromThunk, &Hint))
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid delay import hint RVA :", NameRvaFromThunk);
+ TotalImports++;
+ continue;
+ }
+
+ DWORD ImportNameRva = 0;
+ if (!PeAddDword(NameRvaFromThunk, sizeof(WORD), &ImportNameRva))
+ {
+ ShowMessages("\n%-36s%#x", "Warning, invalid delay import name RVA :", NameRvaFromThunk);
+ TotalImports++;
+ continue;
+ }
+
+ CHAR ImportName[MaxImportNameLength + 1] = {0};
+ PE_ASCII_STRING_STATUS ImportNameStatus = PeReadAsciiStringAtRva(Reader,
+ ImportNameRva,
+ MaxImportNameLength,
+ ImportName,
+ sizeof(ImportName));
+ if (ImportNameStatus != PeAsciiStringOk)
+ {
+ ShowMessages("\n%-36s%#x, %s", "Warning, invalid delay import name RVA :", ImportNameRva, PeAsciiStatusName(ImportNameStatus));
+ TotalImports++;
+ continue;
+ }
+
+ ShowMessages("\n [%u] hint %#x name %s thunk RVA %#x", ThunkIndex, Hint, ImportName, IatEntryRva);
+ TotalImports++;
+ }
+
+ if (TotalImports >= MaxTotalImports)
+ {
+ TotalImportsCapped = TRUE;
+ break;
+ }
+ }
+
+ if (!FoundTerminator)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "delay import descriptor terminator not found before bounds or cap");
+ }
+ if (DescriptorCapped)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, delay descriptor cap reached :", MaxDescriptors);
+ }
+ if (TotalImportsCapped)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, delay import cap reached :", MaxTotalImports);
+ }
+}
+
+static VOID
+PeShowClrDirectoryBounds(PPE_IMAGE_READER Reader, const BYTE * Header, DWORD AvailableSize, SIZE_T Offset, const CHAR * Label)
+{
+ if (Offset > AvailableSize || sizeof(IMAGE_DATA_DIRECTORY) > AvailableSize - Offset)
+ {
+ return;
+ }
+
+ DWORD Rva = PeReadDwordFromBuffer(Header, Offset);
+ DWORD Size = PeReadDwordFromBuffer(Header, Offset + sizeof(DWORD));
+
+ ShowMessages("\n%-36sRVA %#x size %#x", Label, Rva, Size);
+ if (Rva != 0 && Size != 0)
+ {
+ const BYTE * Pointer = NULL;
+ ShowMessages(", %s", PeGetPointerAtRva(Reader, Rva, Size, &Pointer) ? "mapped" : "not mapped");
+ }
+}
+
+static VOID
+PeShowClrRuntime(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ClrDirectory)
+{
+ ShowMessages("\n\nCLR runtime\n-----------");
+
+ if (ClrDirectory->VirtualAddress == 0 || ClrDirectory->Size == 0)
+ {
+ ShowMessages("\n%-36s%s", "CLR runtime header :", "empty");
+ return;
+ }
+
+ if (ClrDirectory->Size < 0x48)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "CLR runtime header is smaller than required fields");
+ return;
+ }
+
+ const BYTE * Header = NULL;
+ if (!PeGetPointerAtRva(Reader, ClrDirectory->VirtualAddress, 0x48, &Header))
+ {
+ ShowMessages("\n%-36s%s", "CLR runtime header :", "not mapped");
+ return;
+ }
+
+ DWORD HeaderSize = PeReadDwordFromBuffer(Header, 0);
+ DWORD AvailableSize = ClrDirectory->Size < HeaderSize ? ClrDirectory->Size : HeaderSize;
+
+ ShowMessages("\n%-36s%#x", "Header size :", HeaderSize);
+ if (HeaderSize < 0x48 || AvailableSize < 0x48)
+ {
+ ShowMessages("\n%-36s%s", "Warning :", "CLR runtime header is truncated");
+ return;
+ }
+
+ if (!PeGetPointerAtRva(Reader, ClrDirectory->VirtualAddress, AvailableSize, &Header))
+ {
+ ShowMessages("\n%-36s%s", "CLR runtime header :", "invalid bounds");
+ return;
+ }
+
+ WORD MajorRuntimeVersion = PeReadWordFromBuffer(Header, 4);
+ WORD MinorRuntimeVersion = PeReadWordFromBuffer(Header, 6);
+ DWORD Flags = PeReadDwordFromBuffer(Header, 16);
+ DWORD EntryPoint = PeReadDwordFromBuffer(Header, 20);
+
+ ShowMessages("\n%-36s%u.%u", "Runtime version :", MajorRuntimeVersion, MinorRuntimeVersion);
+ PeShowClrDirectoryBounds(Reader, Header, AvailableSize, 8, "Metadata directory :");
+ ShowMessages("\n%-36s%#x", "Flags :", Flags);
+ ShowMessages("\n%-36s%#x (%s)", "Entry point token/RVA :", EntryPoint, (Flags & 0x10) != 0 ? "native RVA" : "managed token");
+ PeShowClrDirectoryBounds(Reader, Header, AvailableSize, 24, "Resources directory :");
+ PeShowClrDirectoryBounds(Reader, Header, AvailableSize, 32, "Strong name directory :");
+ PeShowClrDirectoryBounds(Reader, Header, AvailableSize, 40, "Code manager table :");
+ PeShowClrDirectoryBounds(Reader, Header, AvailableSize, 48, "VTable fixups :");
+ PeShowClrDirectoryBounds(Reader, Header, AvailableSize, 56, "Export address table jumps :");
+ PeShowClrDirectoryBounds(Reader, Header, AvailableSize, 64, "Managed native header :");
+}
+
static VOID
PeShowTls(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * TlsDirectory, BOOLEAN Is32Bit, ULONGLONG ImageBase)
{
@@ -568,6 +1838,11 @@ PeShowDebug(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * DebugDirectory
return;
}
+ if ((DebugDirectory->Size % sizeof(IMAGE_DEBUG_DIRECTORY)) != 0)
+ {
+ ShowMessages("\n%-36s%#x", "Warning, malformed debug size :", DebugDirectory->Size);
+ }
+
BOOLEAN EntryCapped = FALSE;
if (EntryCount > MaxDebugEntries)
{
@@ -643,6 +1918,100 @@ PeShowLoadConfigPointer(const BYTE * Config, DWORD AvailableSize, SIZE_T Offset,
}
}
+static VOID
+PeShowLoadConfigCount(const BYTE * Config, DWORD AvailableSize, SIZE_T Offset, const CHAR * Label, BOOLEAN Is32Bit)
+{
+ SIZE_T FieldSize = Is32Bit ? sizeof(DWORD) : sizeof(ULONGLONG);
+
+ if (PeLoadConfigHasField(AvailableSize, Offset, FieldSize))
+ {
+ ShowMessages("\n%-36s%llu", Label, PeReadLoadConfigPointer(Config, Offset, Is32Bit));
+ }
+}
+
+static VOID
+PeShowLoadConfigGuardFlags(DWORD GuardFlags)
+{
+ BOOLEAN AnyFlag = FALSE;
+ DWORD KnownMask = 0;
+
+ struct GUARD_FLAG_NAME
+ {
+ DWORD Flag;
+ const char * Name;
+ };
+
+ static const GUARD_FLAG_NAME GuardFlagNames[] = {
+ {0x00000100, "CF instrumented"},
+ {0x00000200, "CFW instrumented"},
+ {0x00000400, "CF function table present"},
+ {0x00000800, "Security cookie unused"},
+ {0x00001000, "Protect delayed load IAT"},
+ {0x00002000, "Delayed load IAT in its own section"},
+ {0x00004000, "Export suppression info present"},
+ {0x00008000, "Enable export suppression"},
+ {0x00010000, "Long jump table present"},
+ {0x00020000, "RF instrumented"},
+ {0x00040000, "RF enable"},
+ {0x00080000, "RF strict"},
+ {0x00100000, "Retpoline present"},
+ {0x00200000, "EH continuation table present"},
+ {0x00400000, "XFG enabled"},
+ {0x00800000, "CastGuard present"},
+ {0x01000000, "Memcpy function present"},
+ };
+
+ for (UINT32 Index = 0; Index < RTL_NUMBER_OF(GuardFlagNames); Index++)
+ {
+ KnownMask |= GuardFlagNames[Index].Flag;
+ if ((GuardFlags & GuardFlagNames[Index].Flag) == GuardFlagNames[Index].Flag)
+ {
+ ShowMessages("%s%s", AnyFlag ? ", " : "", GuardFlagNames[Index].Name);
+ AnyFlag = TRUE;
+ }
+ }
+
+ if (!AnyFlag)
+ {
+ ShowMessages(GuardFlags == 0 ? "None" : "No known guard flags");
+ }
+
+ DWORD UnknownMask = GuardFlags & ~KnownMask;
+ if (UnknownMask != 0)
+ {
+ ShowMessages(", unknown mask %#x", UnknownMask);
+ }
+}
+
+static VOID
+PeShowLoadConfigModernFields(const BYTE * Config, DWORD AvailableSize, BOOLEAN Is32Bit)
+{
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 104 : 160, "Guard address-taken IAT table :", Is32Bit);
+ PeShowLoadConfigCount(Config, AvailableSize, Is32Bit ? 108 : 168, "Guard address-taken IAT count :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 112 : 176, "Guard long jump target table :", Is32Bit);
+ PeShowLoadConfigCount(Config, AvailableSize, Is32Bit ? 116 : 184, "Guard long jump target count :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 120 : 192, "Dynamic value reloc table :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 124 : 200, "CHPE metadata pointer :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 128 : 208, "Guard RF failure routine :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 132 : 216, "Guard RF failure routine ptr :", Is32Bit);
+ PeShowLoadConfigDword(Config, AvailableSize, Is32Bit ? 136 : 224, "Dynamic value reloc offset :");
+ if (PeLoadConfigHasField(AvailableSize, Is32Bit ? 140 : 228, sizeof(WORD)))
+ {
+ ShowMessages("\n%-36s%#x", "Dynamic value reloc section :", PeReadWordFromBuffer(Config, Is32Bit ? 140 : 228));
+ }
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 144 : 232, "Guard RF verify stack ptr :", Is32Bit);
+ PeShowLoadConfigDword(Config, AvailableSize, Is32Bit ? 148 : 240, "Hot patch table offset :");
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 156 : 248, "Enclave config pointer :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 160 : 256, "Volatile metadata pointer :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 164 : 264, "Guard EH continuation table :", Is32Bit);
+ PeShowLoadConfigCount(Config, AvailableSize, Is32Bit ? 168 : 272, "Guard EH continuation count :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 172 : 280, "Guard XFG check pointer :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 176 : 288, "Guard XFG dispatch pointer :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 180 : 296, "Guard XFG table dispatch ptr :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 184 : 304, "CastGuard failure mode :", Is32Bit);
+ PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 188 : 312, "Guard memcpy pointer :", Is32Bit);
+}
+
static VOID
PeShowLoadConfig(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * LoadConfigDirectory, BOOLEAN Is32Bit)
{
@@ -702,12 +2071,19 @@ PeShowLoadConfig(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * LoadConfi
PeShowLoadConfigDword(Config, AvailableSize, Is32Bit ? 44 : 72, "Process heap flags :");
PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 60 : 88, "Security cookie :", Is32Bit);
PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 64 : 96, "SE handler table :", Is32Bit);
- PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 68 : 104, "SE handler count :", Is32Bit);
+ PeShowLoadConfigCount(Config, AvailableSize, Is32Bit ? 68 : 104, "SE handler count :", Is32Bit);
PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 72 : 112, "Guard CF check pointer :", Is32Bit);
PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 76 : 120, "Guard CF dispatch pointer :", Is32Bit);
PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 80 : 128, "Guard CF function table :", Is32Bit);
- PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 84 : 136, "Guard CF function count :", Is32Bit);
+ PeShowLoadConfigCount(Config, AvailableSize, Is32Bit ? 84 : 136, "Guard CF function count :", Is32Bit);
PeShowLoadConfigDword(Config, AvailableSize, Is32Bit ? 88 : 144, "Guard flags :");
+ if (PeLoadConfigHasField(AvailableSize, Is32Bit ? 88 : 144, sizeof(DWORD)))
+ {
+ DWORD GuardFlags = PeReadDwordFromBuffer(Config, Is32Bit ? 88 : 144);
+ ShowMessages("\n%-36s", "Guard flag names :");
+ PeShowLoadConfigGuardFlags(GuardFlags);
+ }
+ PeShowLoadConfigModernFields(Config, AvailableSize, Is32Bit);
}
static VOID
@@ -772,7 +2148,7 @@ PeShowDataDirectories(PPE_IMAGE_READER Reader,
if (PeImageReaderRvaToFileOffset(Reader, Directory->VirtualAddress, Directory->Size, &FileOffset))
{
- ShowMessages("\n[%2u] %-27s RVA %#x, size %#x, mapped, mapped file offset %#llx",
+ ShowMessages("\n[%2u] %-27s RVA %#x, size %#x, mapped file offset %#llx",
Index,
Name,
Directory->VirtualAddress,
@@ -1163,7 +2539,7 @@ PeShowImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ImportDirect
if (!FoundTerminator)
{
- ShowMessages("\n%-36s%s", "Warning :", "import descriptor terminator not found before bound or cap");
+ ShowMessages("\n%-36s%s", "Warning :", "import descriptor terminator not found before bounds or cap");
}
if (DescriptorCapped)
@@ -1428,38 +2804,51 @@ PeShowExports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ExportDirect
* This function searches for the "Rich" signature string within the DOS stub area.
*
* @param DosHeader Pointer to the DOS header structure of the PE file
- * @param Key Output buffer to store the 4-byte XOR key found after "Rich" signature
+ * @param SearchSize Capped number of bytes to search
+ * @param StartOffset Offset to start searching from
+ * @param Key Output buffer to store the 4-byte XOR key found after "Rich" signature
*
* @note The Rich header is located between the DOS header and PE header
* @note The XOR key is used to decode the actual Rich header entries
**/
-INT
-FindRichHeader(PIMAGE_DOS_HEADER DosHeader, DWORD FileSize, CHAR Key[])
+static INT
+FindRichHeader(PIMAGE_DOS_HEADER DosHeader, DWORD SearchSize, DWORD StartOffset, CHAR Key[])
{
- //
- // Get base address for offset calculations
- //
- CHAR * BaseAddr = (CHAR *)DosHeader;
+ if (DosHeader == NULL || Key == NULL)
+ {
+ return -1;
+ }
//
// Get PE header offset - this defines our search boundary
//
- DWORD Offset = DosHeader->e_lfanew;
+ LONG Offset = DosHeader->e_lfanew;
- if (FileSize < sizeof(IMAGE_DOS_HEADER) ||
+ if (SearchSize < sizeof(IMAGE_DOS_HEADER) ||
DosHeader->e_magic != IMAGE_DOS_SIGNATURE ||
- Offset < sizeof(IMAGE_DOS_HEADER) ||
- Offset > FileSize ||
+ Offset < (LONG)sizeof(IMAGE_DOS_HEADER) ||
Offset < 8)
{
- return 0;
+ return -1;
+ }
+
+ CHAR * BaseAddr = (CHAR *)DosHeader;
+ DWORD SearchLimit = (DWORD)Offset;
+ if (SearchLimit > SearchSize)
+ {
+ SearchLimit = SearchSize;
+ }
+
+ if (StartOffset + 8 < StartOffset || StartOffset + 8 > SearchLimit)
+ {
+ return -1;
}
//
// Search for "Rich" signature
- // We stop 4 bytes before the PE header to avoid reading beyond bounds
+ // We need 4 bytes for "Rich" and 4 bytes for the key before the PE header.
//
- for (DWORD i = 0; i < Offset - 4; ++i)
+ for (DWORD i = StartOffset; i + 8 <= SearchLimit; ++i)
{
//
// Check for "Rich" signature (4 ASCII bytes)
@@ -1484,7 +2873,7 @@ FindRichHeader(PIMAGE_DOS_HEADER DosHeader, DWORD FileSize, CHAR Key[])
//
// Rich header signature not found
//
- return 0;
+ return -1;
}
/**
@@ -1504,12 +2893,25 @@ FindRichHeader(PIMAGE_DOS_HEADER DosHeader, DWORD FileSize, CHAR Key[])
* @note Each entry represents one compilation tool (compiler, linker, assembler, etc.)
*
*/
-VOID
+static BOOLEAN
FindRichEntries(CHAR * RichHeaderPtr,
INT RichHeaderSize,
CHAR Key[],
PRICH_HEADER_INFO PeFileRichHeaderInfo)
{
+ if (RichHeaderPtr == NULL || Key == NULL || PeFileRichHeaderInfo == NULL ||
+ RichHeaderSize < 16 || ((RichHeaderSize - 16) % 8) != 0)
+ {
+ return FALSE;
+ }
+
+ INT EntryCount = (RichHeaderSize - 16) / 8;
+
+ if (EntryCount <= 0)
+ {
+ return FALSE;
+ }
+
//
// Decrypt the entire Rich header using XOR with the 4-byte key
//
@@ -1524,6 +2926,20 @@ FindRichEntries(CHAR * RichHeaderPtr,
}
}
+ if (RichHeaderPtr[0] != 'D' || RichHeaderPtr[1] != 'a' ||
+ RichHeaderPtr[2] != 'n' || RichHeaderPtr[3] != 'S')
+ {
+ return FALSE;
+ }
+
+ for (int i = 4; i < 16; i++)
+ {
+ if (RichHeaderPtr[i] != 0)
+ {
+ return FALSE;
+ }
+ }
+
//
// Initialize the Rich header info structure
//
@@ -1533,7 +2949,9 @@ FindRichEntries(CHAR * RichHeaderPtr,
//
// Calculate number of entries: subtract 16-byte header, divide by 8 bytes per entry
//
- PeFileRichHeaderInfo->Entries = (RichHeaderSize - 16) / 8;
+ PeFileRichHeaderInfo->Entries = EntryCount;
+
+ return TRUE;
}
/**
@@ -1553,13 +2971,26 @@ FindRichEntries(CHAR * RichHeaderPtr,
*
* @warning Assumes the Rich header has been properly decrypted first
*/
-VOID
+static BOOLEAN
SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr, PRICH_HEADER PeFileRichHeader)
{
+ if (RichHeaderPtr == NULL || PeFileRichHeader == NULL || PeFileRichHeader->Entries == NULL ||
+ RichHeaderSize < 16 || ((RichHeaderSize - 16) % 8) != 0)
+ {
+ return FALSE;
+ }
+
+ INT EntryCount = (RichHeaderSize - 16) / 8;
+
+ if (EntryCount <= 0)
+ {
+ return FALSE;
+ }
+
//
// Start at offset 16 to skip the header metadata, process 8-byte entries
//
- for (int i = 16; i < RichHeaderSize; i += 8)
+ for (int i = 16, EntryIndex = 0; i + 8 <= RichHeaderSize; i += 8, EntryIndex++)
{
//
// Extract Product ID (bytes 2-3 of entry, little-endian)
@@ -1574,24 +3005,17 @@ SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr, PRICH_HEADER PeFileRich
//
// Extract Use Count (bytes 4-7 of entry, little-endian 32-bit)
//
- DWORD UseCount = ((UCHAR)RichHeaderPtr[i + 7] << 24) |
- ((UCHAR)RichHeaderPtr[i + 6] << 16) |
- ((UCHAR)RichHeaderPtr[i + 5] << 8) |
- (UCHAR)RichHeaderPtr[i + 4];
+ DWORD UseCount = PeReadDwordFromBuffer((const BYTE *)RichHeaderPtr, i + 4);
//
// Store the parsed entry (adjust index: i/8 gives entry number, -2 for header offset)
//
- PeFileRichHeader->Entries[(i / 8) - 2] = {ProdID, BuildID, UseCount};
-
- //
- // Add null terminator entry if this is the last entry
- //
- if (i + 8 >= RichHeaderSize)
- {
- PeFileRichHeader->Entries[(i / 8) - 1] = {0x0000, 0x0000, 0x00000000};
- }
+ PeFileRichHeader->Entries[EntryIndex] = {ProdID, BuildID, UseCount};
}
+
+ PeFileRichHeader->Entries[EntryCount] = {0x0000, 0x0000, 0x00000000};
+
+ return TRUE;
}
/**
@@ -1611,13 +3035,13 @@ SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr, PRICH_HEADER PeFileRich
* @return INT Size of the Rich header in bytes, or 0 if DanS signature not found
*
*/
-INT
-DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr)
+static INT
+DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr, INT DataSize)
{
- //
- // Copy the XOR key from the 4 bytes immediately following "Rich"
- //
- memcpy(Key, DataPtr + (Index + 4), 4);
+ if (Key == NULL || DataPtr == NULL || DataSize < 16 || Index < 16 || Index + 4 > DataSize)
+ {
+ return 0;
+ }
//
// Start searching backwards from just before the "Rich" signature
@@ -1649,10 +3073,9 @@ DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr)
RichHeaderSize += 4;
//
- // Check for DanS signature (0x44='D', 0x61='a' after decryption)
- // Note: Checking bytes 1,0 due to little-endian storage
+ // Check for DanS signature after decryption.
//
- if (TmpChar[1] == 0x61 && TmpChar[0] == 0x44)
+ if (TmpChar[0] == 'D' && TmpChar[1] == 'a' && TmpChar[2] == 'n' && TmpChar[3] == 'S')
{
return RichHeaderSize;
}
@@ -1670,17 +3093,23 @@ DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr)
* @return VOID
*/
-VOID
-PeHexDump(CHAR * Ptr, INT Size, INT SecAddress)
+static VOID
+PeHexDump(CHAR * Ptr, SIZE_T Size, ULONGLONG SecAddress)
{
- INT i = 1, Temp = 0;
+ SIZE_T i = 1;
+ INT Temp = 0;
+
+ if (Ptr == NULL || Size == 0)
+ {
+ return;
+ }
//
// Buffer to store the character dump displayed at the
// right side
//
- WCHAR Buf[18];
- ShowMessages("\n\n%x: |", SecAddress);
+ CHAR Buf[18];
+ ShowMessages("\n\n%llx: |", SecAddress);
Buf[Temp] = ' '; // initial space
Buf[Temp + 16] = ' '; // final space
@@ -1689,7 +3118,7 @@ PeHexDump(CHAR * Ptr, INT Size, INT SecAddress)
for (; i <= Size; i++, Ptr++, Temp++)
{
- Buf[Temp] = !iswcntrl((*Ptr) & 0xff) ? (*Ptr) & 0xff : '.';
+ Buf[Temp] = !iscntrl((*Ptr) & 0xff) ? (*Ptr) & 0xff : '.';
ShowMessages("%-3.2x", (*Ptr) & 0xff);
if (i % 16 == 0)
@@ -1697,9 +3126,9 @@ PeHexDump(CHAR * Ptr, INT Size, INT SecAddress)
//
// print the character dump to the right
//
- _putws(Buf);
+ ShowMessages("%s\n", Buf);
if (i + 1 <= Size)
- ShowMessages("%x: ", SecAddress += 16);
+ ShowMessages("%llx: ", SecAddress += 16);
Temp = 0;
}
if (i % 4 == 0)
@@ -1710,7 +3139,7 @@ PeHexDump(CHAR * Ptr, INT Size, INT SecAddress)
Buf[Temp] = 0;
for (; i % 16 != 0; i++)
ShowMessages("%-3.2c", ' ');
- _putws(Buf);
+ ShowMessages("%s\n", Buf);
}
}
@@ -1730,6 +3159,13 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
RICH_HEADER_INFO PeFileRichHeaderInfo {0};
RICH_HEADER PeFileRichHeader {0};
BOOLEAN Result = FALSE, RichFound = FALSE, SectionFound = FALSE;
+ const DWORD MaxRichReadSize = 1024 * 1024;
+ const INT MaxRichHeaderSize = 256 * 1024;
+ const INT MaxRichHeaderEntries = 0x4000;
+ const DWORD MaxSectionScanBytes = 16 * 1024 * 1024;
+ const ULONGLONG MaxTotalSectionScanBytes = 64 * 1024 * 1024;
+ const SIZE_T MaxSectionDumpBytes = 1024 * 1024;
+ const ULONGLONG MaxTotalSectionDumpBytes = 4 * 1024 * 1024;
HANDLE MapObjectHandle = NULL, FileHandle = INVALID_HANDLE_VALUE; // File Mapping Object
UINT32 NumberOfSections; // Number of sections
LPVOID BaseAddr = NULL; // Pointer to the base memory of mapped file
@@ -1744,7 +3180,11 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
IMAGE_DATA_DIRECTORY EmptyDirectory = {0};
LARGE_INTEGER FileSize;
CHAR Key[4];
- INT RichHeaderOffset;
+ INT RichHeaderOffset = -1;
+ const CHAR * RichHeaderStatus = "not found";
+ BOOLEAN RichSearchCapped = FALSE;
+ ULONGLONG RemainingSectionScanBytes = MaxTotalSectionScanBytes;
+ ULONGLONG RemainingSectionDumpBytes = MaxTotalSectionDumpBytes;
time_t TimeDateStamp;
//
@@ -1806,36 +3246,126 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
goto Finished;
}
- RichHeaderOffset = FindRichHeader(DosHeader, (DWORD)FileSize.QuadPart, Key);
-
- if (RichHeaderOffset != 0)
+ if (DosHeader->e_lfanew > 0 && (ULONGLONG)DosHeader->e_lfanew <= (ULONGLONG)MAXDWORD)
{
- char * DataPtr = new char[DosHeader->e_lfanew];
- DWORD BytesRead = 0;
+ char * DataPtr = NULL;
+ DWORD BytesRead = 0;
+ DWORD RichReadSize = (DWORD)DosHeader->e_lfanew;
+ DWORD SearchOffset = 0;
+ BOOLEAN HadCandidate = FALSE;
+ LARGE_INTEGER FileStart = {0};
- BOOL result = ReadFile(FileHandle, DataPtr, DosHeader->e_lfanew, &BytesRead, NULL);
- if (!result || BytesRead != DosHeader->e_lfanew)
+ if (RichReadSize > MaxRichReadSize)
{
- ShowMessages("ReadFile failed or incomplete read");
+ RichReadSize = MaxRichReadSize;
+ RichHeaderStatus = "not found in first 1 MiB";
+ RichSearchCapped = TRUE;
}
- int RichHeaderSize = DecryptRichHeader(Key, RichHeaderOffset, DataPtr);
- int IndexPointer = RichHeaderOffset - RichHeaderSize;
- if (RichHeaderSize < 16 || ((RichHeaderSize - 16) % 8) != 0 || (RichHeaderSize - 16) / 8 == 0 || IndexPointer < 0)
+ if (RichReadSize >= 8)
{
+ DataPtr = new (std::nothrow) char[RichReadSize];
+ if (DataPtr == NULL)
+ {
+ RichHeaderStatus = "allocation failed";
+ goto SkipRichHeader;
+ }
+
+ if (!SetFilePointerEx(FileHandle, FileStart, NULL, FILE_BEGIN))
+ {
+ RichHeaderStatus = "read failed";
+ delete[] DataPtr;
+ goto SkipRichHeader;
+ }
+
+ BOOL result = ReadFile(FileHandle, DataPtr, RichReadSize, &BytesRead, NULL);
+ if (!result || BytesRead != RichReadSize)
+ {
+ RichHeaderStatus = "read failed";
+ delete[] DataPtr;
+ goto SkipRichHeader;
+ }
+
+ for (;;)
+ {
+ char * richHeaderPtr = NULL;
+
+ RichHeaderOffset = FindRichHeader(DosHeader, RichReadSize, SearchOffset, Key);
+ if (RichHeaderOffset < 0)
+ {
+ break;
+ }
+
+ HadCandidate = TRUE;
+ RichHeaderStatus = RichSearchCapped ? "malformed candidate in first 1 MiB" : "malformed";
+
+ int RichHeaderSize = DecryptRichHeader(Key, RichHeaderOffset, DataPtr, (INT)RichReadSize);
+ int IndexPointer = RichHeaderOffset - RichHeaderSize;
+
+ if (RichHeaderSize < 16 || RichHeaderSize > MaxRichHeaderSize || ((RichHeaderSize - 16) % 8) != 0 ||
+ (RichHeaderSize - 16) / 8 == 0 || (RichHeaderSize - 16) / 8 > MaxRichHeaderEntries ||
+ IndexPointer < 0 || RichHeaderSize > (INT)RichReadSize || IndexPointer > (INT)RichReadSize - RichHeaderSize)
+ {
+ SearchOffset = (DWORD)RichHeaderOffset + 1;
+ continue;
+ }
+
+ richHeaderPtr = new (std::nothrow) char[RichHeaderSize];
+ if (richHeaderPtr == NULL)
+ {
+ RichHeaderStatus = "allocation failed";
+ break;
+ }
+
+ memcpy(richHeaderPtr, DataPtr + IndexPointer, RichHeaderSize);
+
+ if (!FindRichEntries(richHeaderPtr, RichHeaderSize, Key, &PeFileRichHeaderInfo))
+ {
+ delete[] richHeaderPtr;
+ SearchOffset = (DWORD)RichHeaderOffset + 1;
+ continue;
+ }
+
+ richHeaderPtr = NULL;
+
+ if (PeFileRichHeaderInfo.Entries > MaxRichHeaderEntries || PeFileRichHeaderInfo.Entries >= INT_MAX / (INT)sizeof(RICH_HEADER_ENTRY) - 1)
+ {
+ delete[] PeFileRichHeaderInfo.PtrToBuffer;
+ PeFileRichHeaderInfo = {0};
+ SearchOffset = (DWORD)RichHeaderOffset + 1;
+ continue;
+ }
+
+ PeFileRichHeader.Entries = new (std::nothrow) RICH_HEADER_ENTRY[PeFileRichHeaderInfo.Entries + 1];
+ if (PeFileRichHeader.Entries == NULL)
+ {
+ RichHeaderStatus = "allocation failed";
+ delete[] PeFileRichHeaderInfo.PtrToBuffer;
+ PeFileRichHeaderInfo = {0};
+ break;
+ }
+
+ if (!SetRichEntries(RichHeaderSize, PeFileRichHeaderInfo.PtrToBuffer, &PeFileRichHeader))
+ {
+ delete[] PeFileRichHeaderInfo.PtrToBuffer;
+ PeFileRichHeaderInfo = {0};
+ delete[] PeFileRichHeader.Entries;
+ PeFileRichHeader.Entries = NULL;
+ SearchOffset = (DWORD)RichHeaderOffset + 1;
+ continue;
+ }
+
+ RichFound = TRUE;
+ break;
+ }
+
+ if (!RichFound && !HadCandidate && (DWORD)DosHeader->e_lfanew <= MaxRichReadSize)
+ {
+ RichHeaderStatus = "not found";
+ }
+
delete[] DataPtr;
- goto SkipRichHeader;
}
-
- char * richHeaderPtr = new char[RichHeaderSize];
- memcpy(richHeaderPtr, DataPtr + IndexPointer, RichHeaderSize);
- delete[] DataPtr;
-
- FindRichEntries(richHeaderPtr, RichHeaderSize, Key, &PeFileRichHeaderInfo);
- PeFileRichHeader.Entries = new RICH_HEADER_ENTRY[PeFileRichHeaderInfo.Entries + 1];
-
- SetRichEntries(RichHeaderSize, richHeaderPtr, &PeFileRichHeader);
- RichFound = TRUE;
}
SkipRichHeader:
@@ -1900,7 +3430,7 @@ SkipRichHeader:
for (int i = 0; i < PeFileRichHeaderInfo.Entries; i++)
{
- ShowMessages("0x%08X 0x%08X %10d\n",
+ ShowMessages("0x%08X 0x%08X %10u\n",
PeFileRichHeader.Entries[i].BuildID,
PeFileRichHeader.Entries[i].ProdID,
PeFileRichHeader.Entries[i].UseCount);
@@ -1910,7 +3440,7 @@ SkipRichHeader:
}
else
{
- ShowMessages("=========== Rich Header Not Found ===========\n");
+ ShowMessages("=========== Rich Header Not Shown (%s) ===========\n", RichHeaderStatus);
}
//
@@ -2061,6 +3591,9 @@ SkipRichHeader:
ShowMessages("\n%-36s%#x", "File Alignment :", OpHeader32.FileAlignment);
ShowMessages("\n%-36s%#x", "Size of Image :", OpHeader32.SizeOfImage);
ShowMessages("\n%-36s%#x", "Size of Headers :", OpHeader32.SizeOfHeaders);
+ PeShowChecksum(&Reader,
+ OpHeader32.CheckSum,
+ (SIZE_T)(Reader.NtHeaders - Reader.ImageBase) + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER) + FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, CheckSum));
ShowMessages("\n%-36s%#x", "Raw DLL characteristics value :", OpHeader32.DllCharacteristics);
ShowMessages("\n%-36s", "DLL characteristics flags :");
PeShowDllCharacteristics(OpHeader32.DllCharacteristics);
@@ -2080,6 +3613,24 @@ SkipRichHeader:
ShowMessages("\n%-36s%d", "Major Linker Version : ", OpHeader32.MajorLinkerVersion);
ShowMessages("\n%-36s%d", "Minor Linker Version : ", OpHeader32.MinorLinkerVersion);
PeShowDataDirectories(&Reader, OpHeader32.DataDirectory, OpHeader32.NumberOfRvaAndSizes);
+ PeShowCertificateTable(&Reader,
+ OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_SECURITY ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY] : &EmptyDirectory);
+ PeShowBaseRelocations(&Reader,
+ OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_BASERELOC ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC] : &EmptyDirectory);
+ PeShowBoundImports(&Reader,
+ OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT] : &EmptyDirectory);
+ PeShowResources(&Reader,
+ OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_RESOURCE ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE] : &EmptyDirectory);
+ PeShowExceptions(&Reader,
+ OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_EXCEPTION ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXCEPTION] : &EmptyDirectory,
+ Header.Machine,
+ TRUE);
+ PeShowDelayImports(&Reader,
+ OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT] : &EmptyDirectory,
+ TRUE,
+ OpHeader32.ImageBase);
+ PeShowClrRuntime(&Reader,
+ OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR] : &EmptyDirectory);
PeShowTls(&Reader,
OpHeader32.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_TLS ? &OpHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS] : &EmptyDirectory,
TRUE,
@@ -2113,6 +3664,9 @@ SkipRichHeader:
ShowMessages("\n%-36s%#x", "File Alignment :", OpHeader64.FileAlignment);
ShowMessages("\n%-36s%#x", "Size of Image :", OpHeader64.SizeOfImage);
ShowMessages("\n%-36s%#x", "Size of Headers :", OpHeader64.SizeOfHeaders);
+ PeShowChecksum(&Reader,
+ OpHeader64.CheckSum,
+ (SIZE_T)(Reader.NtHeaders - Reader.ImageBase) + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER) + FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, CheckSum));
ShowMessages("\n%-36s%#x", "Raw DLL characteristics value :", OpHeader64.DllCharacteristics);
ShowMessages("\n%-36s", "DLL characteristics flags :");
PeShowDllCharacteristics(OpHeader64.DllCharacteristics);
@@ -2128,6 +3682,24 @@ SkipRichHeader:
ShowMessages("\n%-36s%d", "Major Linker Version : ", OpHeader64.MajorLinkerVersion);
ShowMessages("\n%-36s%d", "Minor Linker Version : ", OpHeader64.MinorLinkerVersion);
PeShowDataDirectories(&Reader, OpHeader64.DataDirectory, OpHeader64.NumberOfRvaAndSizes);
+ PeShowCertificateTable(&Reader,
+ OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_SECURITY ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY] : &EmptyDirectory);
+ PeShowBaseRelocations(&Reader,
+ OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_BASERELOC ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC] : &EmptyDirectory);
+ PeShowBoundImports(&Reader,
+ OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT] : &EmptyDirectory);
+ PeShowResources(&Reader,
+ OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_RESOURCE ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE] : &EmptyDirectory);
+ PeShowExceptions(&Reader,
+ OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_EXCEPTION ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXCEPTION] : &EmptyDirectory,
+ Header.Machine,
+ FALSE);
+ PeShowDelayImports(&Reader,
+ OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT] : &EmptyDirectory,
+ FALSE,
+ OpHeader64.ImageBase);
+ PeShowClrRuntime(&Reader,
+ OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR] : &EmptyDirectory);
PeShowTls(&Reader,
OpHeader64.NumberOfRvaAndSizes > IMAGE_DIRECTORY_ENTRY_TLS ? &OpHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS] : &EmptyDirectory,
FALSE,
@@ -2186,6 +3758,26 @@ SkipRichHeader:
"Pointer to Raw Data : ",
SecHeader->PointerToRawData);
ShowMessages("\n%-36s%s", "Raw data bounds :", RawDataBounds);
+ if (Pointer != NULL && SecHeader->SizeOfRawData != 0)
+ {
+ if (SecHeader->SizeOfRawData > MaxSectionScanBytes)
+ {
+ ShowMessages("\n%-36s%s", "Raw data entropy :", "skipped, section is larger than local cap");
+ ShowMessages("\n%-36s%s", "Raw data FNV-1a64 :", "skipped, section is larger than local cap");
+ }
+ else if ((ULONGLONG)SecHeader->SizeOfRawData > RemainingSectionScanBytes)
+ {
+ RemainingSectionScanBytes = 0;
+ ShowMessages("\n%-36s%s", "Raw data entropy :", "skipped, global scan budget exhausted");
+ ShowMessages("\n%-36s%s", "Raw data FNV-1a64 :", "skipped, global scan budget exhausted");
+ }
+ else
+ {
+ ShowMessages("\n%-36s%.4f", "Raw data entropy :", PeCalculateEntropy(Pointer, SecHeader->SizeOfRawData));
+ ShowMessages("\n%-36s%#llx", "Raw data FNV-1a64 :", PeFnv1a64(Pointer, SecHeader->SizeOfRawData));
+ RemainingSectionScanBytes -= SecHeader->SizeOfRawData;
+ }
+ }
if (SecHeader->SizeOfRawData != 0 && SecHeader->Misc.VirtualSize > SecHeader->SizeOfRawData)
{
ShowMessages("\n%-36s%s", "Warning :", "virtual size is larger than raw data");
@@ -2229,24 +3821,63 @@ SkipRichHeader:
if (SecHeader->SizeOfRawData != 0)
{
+ SIZE_T DumpSize = SecHeader->SizeOfRawData;
+ BOOLEAN TruncatedBySectionCap = FALSE;
+ BOOLEAN TruncatedByGlobalCap = FALSE;
+
if (Pointer == NULL)
{
ShowMessages("\nerr, invalid section raw data\n");
continue;
}
+ if (RemainingSectionDumpBytes == 0)
+ {
+ ShowMessages("\n%-36s%s", "Warning, section dump skipped :", "global dump budget exhausted");
+ continue;
+ }
+
+ if (DumpSize > MaxSectionDumpBytes)
+ {
+ DumpSize = MaxSectionDumpBytes;
+ TruncatedBySectionCap = TRUE;
+ }
+
+ if ((ULONGLONG)DumpSize > RemainingSectionDumpBytes)
+ {
+ DumpSize = (SIZE_T)RemainingSectionDumpBytes;
+ TruncatedByGlobalCap = TRUE;
+ }
+
+ if (TruncatedBySectionCap)
+ {
+ ShowMessages("\n%-36s%#llx of %#x bytes",
+ "Warning, section dump truncated by section cap :",
+ (UINT64)DumpSize,
+ SecHeader->SizeOfRawData);
+ }
+ if (TruncatedByGlobalCap)
+ {
+ ShowMessages("\n%-36s%#llx of %#x bytes",
+ "Warning, section dump truncated by global cap :",
+ (UINT64)DumpSize,
+ SecHeader->SizeOfRawData);
+ }
+
if (Is32Bit)
{
PeHexDump((char *)Pointer,
- SecHeader->SizeOfRawData,
- OpHeader32.ImageBase + SecHeader->VirtualAddress);
+ DumpSize,
+ (ULONGLONG)OpHeader32.ImageBase + SecHeader->VirtualAddress);
}
else
{
PeHexDump((char *)Pointer,
- SecHeader->SizeOfRawData,
- (int)(OpHeader64.ImageBase + SecHeader->VirtualAddress));
+ DumpSize,
+ OpHeader64.ImageBase + SecHeader->VirtualAddress);
}
+
+ RemainingSectionDumpBytes -= DumpSize;
}
}
}
diff --git a/hyperdbg/libhyperdbg/header/pe-parser.h b/hyperdbg/libhyperdbg/header/pe-parser.h
index 0aea703e..c324a6c2 100644
--- a/hyperdbg/libhyperdbg/header/pe-parser.h
+++ b/hyperdbg/libhyperdbg/header/pe-parser.h
@@ -11,29 +11,6 @@
*/
#pragma once
-//////////////////////////////////////////////////
-// Structures //
-//////////////////////////////////////////////////
-
-typedef struct _RICH_HEADER_INFO
-{
- int Size;
- char * PtrToBuffer;
- int Entries;
-} RICH_HEADER_INFO, *PRICH_HEADER_INFO;
-
-typedef struct _RICH_HEADER_ENTRY
-{
- WORD ProdID;
- WORD BuildID;
- DWORD UseCount;
-} RICH_HEADER_ENTRY, *PRICH_HEADER_ENTRY;
-
-typedef struct _RICH_HEADER
-{
- PRICH_HEADER_ENTRY Entries;
-} RICH_HEADER, *PRICH_HEADER;
-
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
@@ -48,18 +25,3 @@ PeIsPE32BitOr64Bit(const WCHAR * AddressOfFile, PBOOLEAN Is32Bit);
UINT32
PeGetSyscallNumber(LPCSTR NtFunctionName);
-
-INT
-FindRichHeader(PIMAGE_DOS_HEADER DosHeader, DWORD FileSize, CHAR Key[]);
-
-VOID
-SetRichEntries(INT RichHeaderSize, CHAR * RichHeaderPtr, PRICH_HEADER PeFileRichHeader);
-
-VOID
-FindRichEntries(CHAR * RichHeaderPtr,
- INT RichHeaderSize,
- CHAR Key[],
- PRICH_HEADER_INFO PeFileRichHeaderInfo);
-
-INT
-DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr);
diff --git a/hyperdbg/tests/command-parser/command-parser-testcases.txt b/hyperdbg/tests/command-parser/command-parser-testcases.txt
index 894badcc..91cd475a 100644
--- a/hyperdbg/tests/command-parser/command-parser-testcases.txt
+++ b/hyperdbg/tests/command-parser/command-parser-testcases.txt
@@ -5472,3 +5472,61 @@ _____________________________________________________________
----------------------------------
SRV*c:\Symbols*https://msdl.microsoft.com/download/symbols
_____________________________________________________________
+.pe header c:\reverse\myfile.exe
+----------------------------------
+.pe
+----------------------------------
+header
+----------------------------------
+c:\reverse\myfile.exe
+_____________________________________________________________
+.pe section .text c:\reverse\myfile.exe
+----------------------------------
+.pe
+----------------------------------
+section
+----------------------------------
+.text
+----------------------------------
+c:\reverse\myfile.exe
+_____________________________________________________________
+.pe section .rdata "c:\reverse files\myfile.exe"
+----------------------------------
+.pe
+----------------------------------
+section
+----------------------------------
+.rdata
+----------------------------------
+c:\reverse files\myfile.exe
+_____________________________________________________________
+.pe section .text
+----------------------------------
+.pe
+----------------------------------
+section
+----------------------------------
+.text
+_____________________________________________________________
+.pe header c:\reverse\myfile.exe extra
+----------------------------------
+.pe
+----------------------------------
+header
+----------------------------------
+c:\reverse\myfile.exe
+----------------------------------
+extra
+_____________________________________________________________
+.pe section .text c:\reverse\myfile.exe extra
+----------------------------------
+.pe
+----------------------------------
+section
+----------------------------------
+.text
+----------------------------------
+c:\reverse\myfile.exe
+----------------------------------
+extra
+_____________________________________________________________
From 0a874d31a9d5f30e1581ee12f9174530041faf55 Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 2 Jun 2026 14:04:47 +0200
Subject: [PATCH 233/323] create multiple IOCTL handlers for different modules
---
.../hyperdbg_driver/code/driver/Ioctl.c | 2 +-
.../hyperdbg_driver/code/driver/Loader.c | 4 +-
.../hyperdbg_driver/header/misc/Global.h | 4 +-
hyperdbg/hyperkd/code/driver/Ioctl.c | 570 +++++++++++-------
hyperdbg/hyperkd/code/driver/Loader.c | 15 +-
hyperdbg/hyperkd/header/driver/Driver.h | 12 +
hyperdbg/hyperkd/header/globals/Global.h | 18 +-
hyperdbg/include/SDK/headers/Ioctls.h | 128 ++--
8 files changed, 477 insertions(+), 276 deletions(-)
diff --git a/examples/kernel/hyperdbg_driver/code/driver/Ioctl.c b/examples/kernel/hyperdbg_driver/code/driver/Ioctl.c
index ceb117c0..679a8aef 100644
--- a/examples/kernel/hyperdbg_driver/code/driver/Ioctl.c
+++ b/examples/kernel/hyperdbg_driver/code/driver/Ioctl.c
@@ -36,7 +36,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
PoolManagerCheckAndPerformAllocationAndDeallocation();
- if (g_AllowIoctlFromUsermode)
+ if (g_VmmInitialized)
{
IrpStack = IoGetCurrentIrpStackLocation(Irp);
diff --git a/examples/kernel/hyperdbg_driver/code/driver/Loader.c b/examples/kernel/hyperdbg_driver/code/driver/Loader.c
index 4eaae9f8..a49fe01f 100644
--- a/examples/kernel/hyperdbg_driver/code/driver/Loader.c
+++ b/examples/kernel/hyperdbg_driver/code/driver/Loader.c
@@ -24,7 +24,7 @@ LoaderInitVmmAndReversingMachine()
//
// Allow to server IOCTL
//
- g_AllowIoctlFromUsermode = TRUE;
+ g_VmmInitialized = TRUE;
//
// Fill the callbacks for the message tracer
@@ -90,7 +90,7 @@ LoaderInitVmmAndReversingMachine()
//
// Not loaded
//
- g_AllowIoctlFromUsermode = FALSE;
+ g_VmmInitialized = FALSE;
return FALSE;
}
diff --git a/examples/kernel/hyperdbg_driver/header/misc/Global.h b/examples/kernel/hyperdbg_driver/header/misc/Global.h
index 7113ff2f..db81c9d8 100644
--- a/examples/kernel/hyperdbg_driver/header/misc/Global.h
+++ b/examples/kernel/hyperdbg_driver/header/misc/Global.h
@@ -18,7 +18,7 @@
BOOLEAN g_HandleInUse;
/**
- * @brief Determines whether the clients are allowed to send IOCTL to the drive or not
+ * @brief Shows whether the VMM is initialized or not
*
*/
-BOOLEAN g_AllowIoctlFromUsermode;
+BOOLEAN g_VmmInitialized;
\ No newline at end of file
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index 94b0d9d0..c74b1742 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -95,106 +95,63 @@ IoctlCheckIoctlAllowed(ULONG Ioctl)
ULONG IoctlFunction = CTL_CODE_FUNCTION(Ioctl);
//
- // First 10 IOCTLs are about loading and initializing modules
+ // First 100 IOCTLs are about loading and initializing modules
//
- if (IoctlFunction > IOCTL_START_CODE && IoctlFunction <= IOCTL_START_CODE + 0x10)
+ if (IoctlFunction > IOCTL_BASIC_IOCTL && IoctlFunction <= IOCTL_BASIC_IOCTL + 0x100)
{
//
- // Allow these IOCTLs even if we don't allow IOCTL from user-mode, because they are used for loading and initializing the driver and its components
+ // Always allow these IOCTLs even if we don't allow IOCTL from user-mode, because they are used for loading and initializing the driver and its components
//
return TRUE;
}
-
- return g_AllowIoctlFromUsermode;
+ else if (IoctlFunction > IOCTL_KD_IOCTL && IoctlFunction <= IOCTL_KD_IOCTL + 0x100)
+ {
+ //
+ // Allow if the KD module is initialized
+ //
+ return g_KdInitialized;
+ }
+ else if (IoctlFunction > IOCTL_VMM_IOCTL && IoctlFunction <= IOCTL_VMM_IOCTL + 0x100)
+ {
+ //
+ // Allow if the VMM module is initialized
+ //
+ return g_VmmInitialized;
+ }
+ else if (IoctlFunction > IOCTL_HYPERTRACE_IOCTL && IoctlFunction <= IOCTL_HYPERTRACE_IOCTL + 0x100)
+ {
+ //
+ // Allow if the HyperTrace module is initialized
+ //
+ return g_HyperTraceInitialized;
+ }
+ else
+ {
+ //
+ // For other (unknown) IOCTLs, we don't allow them
+ //
+ return FALSE;
+ }
}
/**
- * @brief Driver IOCTL Dispatcher
+ * @brief IOCTL Dispatcher for Basic IOCTLs (initialization and event registration)
*
- * @param DeviceObject
* @param Irp
+ * @param IrpStack
+ * @param DoNotChangeInformation
* @return NTSTATUS
*/
NTSTATUS
-DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
+DrvDispatchBasicIoControl(PIRP Irp, PIO_STACK_LOCATION IrpStack, BOOLEAN * DoNotChangeInformation)
{
- UNREFERENCED_PARAMETER(DeviceObject);
-
- PIO_STACK_LOCATION IrpStack;
- PREGISTER_NOTIFY_BUFFER RegisterEventRequest;
- PDEBUGGER_READ_MEMORY DebuggerReadMemRequest;
- PDEBUGGER_READ_AND_WRITE_ON_MSR DebuggerReadOrWriteMsrRequest;
- PDEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE DebuggerHideAndUnhideRequest;
- PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS DebuggerPteRequest;
- PDEBUGGER_PAGE_IN_REQUEST DebuggerPageinRequest;
- PDEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET PcitreeRequest;
- PDEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET PcidevinfoRequest;
- PDEBUGGER_VA2PA_AND_PA2VA_COMMANDS DebuggerVa2paAndPa2vaRequest;
- PDEBUGGER_EDIT_MEMORY DebuggerEditMemoryRequest;
- PDEBUGGER_SEARCH_MEMORY DebuggerSearchMemoryRequest;
- PDEBUGGER_GENERAL_EVENT_DETAIL DebuggerNewEventRequest;
- PDEBUGGER_MODIFY_EVENTS DebuggerModifyEventRequest;
- PDEBUGGER_FLUSH_LOGGING_BUFFERS DebuggerFlushBuffersRequest;
- PDEBUGGER_INIT_VMM_PACKET InitVmmRequest;
- PDEBUGGER_INIT_HYPERTRACE_PACKET InitHyperTraceRequest;
- PDEBUGGER_PREALLOC_COMMAND DebuggerReservePreallocPoolRequest;
- PDEBUGGER_PREACTIVATE_COMMAND DebuggerPreactivationRequest;
- PDEBUGGER_APIC_REQUEST DebuggerApicRequest;
- PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS DebuggerQueryIdtRequest;
- PDEBUGGEE_BP_PACKET DebuggerBreakpointRequest;
- PDEBUGGER_UD_COMMAND_PACKET DebuggerUdCommandRequest;
- PUSERMODE_LOADED_MODULE_DETAILS DebuggerUsermodeModulesRequest;
- PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS DebuggerUsermodeProcessOrThreadQueryRequest;
- PDEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET GetInformationProcessRequest;
- PREVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST RevServiceRequest;
- PDEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET GetInformationThreadRequest;
- PDEBUGGER_PERFORM_KERNEL_TESTS DebuggerKernelTestRequest;
- PDEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL DebuggerCommandExecutionFinishedRequest;
- PDEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER DebuggerSendUsermodeMessageRequest;
- PDEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER DebuggerSendBufferFromDebuggeeToDebuggerRequest;
- PDEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS DebuggerAttachOrDetachToThreadRequest;
- PDEBUGGER_PREPARE_DEBUGGEE DebuggeeRequest;
- PDEBUGGER_PAUSE_PACKET_RECEIVED DebuggerPauseKernelRequest;
- PDEBUGGER_GENERAL_ACTION DebuggerNewActionRequest;
- PSMI_OPERATION_PACKETS SmiOperationRequest;
- PHYPERTRACE_LBR_OPERATION_PACKETS HyperTraceLbrOperationRequest;
- PHYPERTRACE_LBR_DUMP_PACKETS HyperTraceLbrdumpRequest;
- PHYPERTRACE_PT_OPERATION_PACKETS HyperTracePtOperationRequest;
- PVOID BufferToStoreThreadsAndProcessesDetails;
- ULONG InBuffLength; // Input buffer length
- ULONG OutBuffLength; // Output buffer length
- SIZE_T ReturnSize;
- NTSTATUS Status = STATUS_SUCCESS;
- BOOLEAN DoNotChangeInformation = FALSE;
- UINT32 Ioctl = 0;
-
- //
- // Here's the best place to see if there is any allocation pending
- // to be allcated as we're in PASSIVE_LEVEL
- //
- PoolManagerCheckAndPerformAllocationAndDeallocation();
-
- //
- // Get the current stack location of the IRP to access the parameters of the IOCTL request
- //
- IrpStack = IoGetCurrentIrpStackLocation(Irp);
-
- //
- // Get the IOCTL code from the parameters
- //
- Ioctl = IrpStack->Parameters.DeviceIoControl.IoControlCode;
-
- //
- // If we don't allow IOCTL from user-mode, we just complete the request with success, and return
- //
- if (!IoctlCheckIoctlAllowed(Ioctl))
- {
- Irp->IoStatus.Status = STATUS_SUCCESS;
- Irp->IoStatus.Information = 0;
- IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
- return STATUS_SUCCESS;
- }
+ PREGISTER_NOTIFY_BUFFER RegisterEventRequest;
+ PDEBUGGER_INIT_VMM_PACKET InitVmmRequest;
+ PDEBUGGER_INIT_HYPERTRACE_PACKET InitHyperTraceRequest;
+ ULONG InBuffLength;
+ ULONG OutBuffLength;
+ NTSTATUS Status = STATUS_SUCCESS;
+ UINT32 Ioctl = IrpStack->Parameters.DeviceIoControl.IoControlCode;
switch (Ioctl)
{
@@ -232,7 +189,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_INIT_VMM_PACKET, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_INIT_VMM_PACKET, DoNotChangeInformation, Irp, &Status);
break;
@@ -260,7 +217,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_INIT_HYPERTRACE_PACKET, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_INIT_HYPERTRACE_PACKET, DoNotChangeInformation, Irp, &Status);
break;
@@ -310,12 +267,102 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
break;
+ default:
+ LogError("Err, unknown IOCTL");
+ Status = STATUS_NOT_IMPLEMENTED;
+ break;
+ }
+
+ return Status;
+}
+
+/**
+ * @brief IOCTL Dispatcher for KD (Kernel Debugger) IOCTLs
+ *
+ * @param Irp
+ * @param IrpStack
+ * @param DoNotChangeInformation
+ * @return NTSTATUS
+ */
+NTSTATUS
+DrvDispatchKdIoControl(PIRP Irp, PIO_STACK_LOCATION IrpStack, BOOLEAN * DoNotChangeInformation)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ UINT32 Ioctl = IrpStack->Parameters.DeviceIoControl.IoControlCode;
+
+ UNREFERENCED_PARAMETER(Irp);
+ UNREFERENCED_PARAMETER(DoNotChangeInformation);
+
+ switch (Ioctl)
+ {
+ default:
+ LogError("Err, unknown IOCTL");
+ Status = STATUS_NOT_IMPLEMENTED;
+ break;
+ }
+
+ return Status;
+}
+
+/**
+ * @brief IOCTL Dispatcher for VMM IOCTLs
+ *
+ * @param Irp
+ * @param IrpStack
+ * @param DoNotChangeInformation
+ * @return NTSTATUS
+ */
+NTSTATUS
+DrvDispatchVmmIoControl(PIRP Irp, PIO_STACK_LOCATION IrpStack, BOOLEAN * DoNotChangeInformation)
+{
+ PDEBUGGER_READ_MEMORY DebuggerReadMemRequest;
+ PDEBUGGER_READ_AND_WRITE_ON_MSR DebuggerReadOrWriteMsrRequest;
+ PDEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE DebuggerHideAndUnhideRequest;
+ PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS DebuggerPteRequest;
+ PDEBUGGER_PAGE_IN_REQUEST DebuggerPageinRequest;
+ PDEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET PcitreeRequest;
+ PDEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET PcidevinfoRequest;
+ PDEBUGGER_VA2PA_AND_PA2VA_COMMANDS DebuggerVa2paAndPa2vaRequest;
+ PDEBUGGER_EDIT_MEMORY DebuggerEditMemoryRequest;
+ PDEBUGGER_SEARCH_MEMORY DebuggerSearchMemoryRequest;
+ PDEBUGGER_GENERAL_EVENT_DETAIL DebuggerNewEventRequest;
+ PDEBUGGER_MODIFY_EVENTS DebuggerModifyEventRequest;
+ PDEBUGGER_FLUSH_LOGGING_BUFFERS DebuggerFlushBuffersRequest;
+ PDEBUGGER_PREALLOC_COMMAND DebuggerReservePreallocPoolRequest;
+ PDEBUGGER_PREACTIVATE_COMMAND DebuggerPreactivationRequest;
+ PDEBUGGER_APIC_REQUEST DebuggerApicRequest;
+ PINTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS DebuggerQueryIdtRequest;
+ PDEBUGGEE_BP_PACKET DebuggerBreakpointRequest;
+ PDEBUGGER_UD_COMMAND_PACKET DebuggerUdCommandRequest;
+ PUSERMODE_LOADED_MODULE_DETAILS DebuggerUsermodeModulesRequest;
+ PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS DebuggerUsermodeProcessOrThreadQueryRequest;
+ PDEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET GetInformationProcessRequest;
+ PREVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST RevServiceRequest;
+ PDEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET GetInformationThreadRequest;
+ PDEBUGGER_PERFORM_KERNEL_TESTS DebuggerKernelTestRequest;
+ PDEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL DebuggerCommandExecutionFinishedRequest;
+ PDEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER DebuggerSendUsermodeMessageRequest;
+ PDEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER DebuggerSendBufferFromDebuggeeToDebuggerRequest;
+ PDEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS DebuggerAttachOrDetachToThreadRequest;
+ PDEBUGGER_PREPARE_DEBUGGEE DebuggeeRequest;
+ PDEBUGGER_PAUSE_PACKET_RECEIVED DebuggerPauseKernelRequest;
+ PDEBUGGER_GENERAL_ACTION DebuggerNewActionRequest;
+ PSMI_OPERATION_PACKETS SmiOperationRequest;
+ PVOID BufferToStoreThreadsAndProcessesDetails;
+ ULONG InBuffLength; // Input buffer length
+ ULONG OutBuffLength; // Output buffer length
+ SIZE_T ReturnSize;
+ NTSTATUS Status = STATUS_SUCCESS;
+ UINT32 Ioctl = IrpStack->Parameters.DeviceIoControl.IoControlCode;
+
+ switch (Ioctl)
+ {
case IOCTL_RETURN_IRP_PENDING_PACKETS_AND_DISALLOW_IOCTL:
//
- // Disallow new IOCTL
+ // Disallow new VMM IOCTL (TODO: needs to be changed)
//
- g_AllowIoctlFromUsermode = FALSE;
+ g_VmmInitialized = FALSE;
//
// Send an immediate message, and we're no longer get new IRP
@@ -368,14 +415,14 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Return the header a read bytes
//
- DrvAdjustStatusAndSetOutputSize((UINT32)(ReturnSize + SIZEOF_DEBUGGER_READ_MEMORY), &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize((UINT32)(ReturnSize + SIZEOF_DEBUGGER_READ_MEMORY), DoNotChangeInformation, Irp, &Status);
}
else
{
//
// Just return the header to the user-mode
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_READ_MEMORY, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_READ_MEMORY, DoNotChangeInformation, Irp, &Status);
}
break;
@@ -410,7 +457,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize((UINT32)ReturnSize, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize((UINT32)ReturnSize, DoNotChangeInformation, Irp, &Status);
}
break;
@@ -440,7 +487,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS, DoNotChangeInformation, Irp, &Status);
break;
@@ -471,7 +518,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(sizeof(DEBUGGER_EVENT_AND_ACTION_RESULT), &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(sizeof(DEBUGGER_EVENT_AND_ACTION_RESULT), DoNotChangeInformation, Irp, &Status);
break;
@@ -502,7 +549,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(sizeof(DEBUGGER_EVENT_AND_ACTION_RESULT), &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(sizeof(DEBUGGER_EVENT_AND_ACTION_RESULT), DoNotChangeInformation, Irp, &Status);
break;
@@ -543,7 +590,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE, DoNotChangeInformation, Irp, &Status);
break;
@@ -572,7 +619,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS, DoNotChangeInformation, Irp, &Status);
break;
@@ -611,7 +658,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_EDIT_MEMORY, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_EDIT_MEMORY, DoNotChangeInformation, Irp, &Status);
break;
@@ -669,7 +716,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
// Configure IRP status, and also we send the results
// buffer, with it's null values (if any)
//
- DrvAdjustStatusAndSetOutputSize(MaximumSearchResults * sizeof(UINT64), &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(MaximumSearchResults * sizeof(UINT64), DoNotChangeInformation, Irp, &Status);
break;
@@ -698,7 +745,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_MODIFY_EVENTS, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_MODIFY_EVENTS, DoNotChangeInformation, Irp, &Status);
break;
@@ -726,7 +773,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_FLUSH_LOGGING_BUFFERS, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_FLUSH_LOGGING_BUFFERS, DoNotChangeInformation, Irp, &Status);
break;
@@ -754,7 +801,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS, DoNotChangeInformation, Irp, &Status);
break;
@@ -782,7 +829,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREPARE_DEBUGGEE, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREPARE_DEBUGGEE, DoNotChangeInformation, Irp, &Status);
break;
@@ -810,7 +857,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PAUSE_PACKET_RECEIVED, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PAUSE_PACKET_RECEIVED, DoNotChangeInformation, Irp, &Status);
break;
@@ -838,7 +885,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL, DoNotChangeInformation, Irp, &Status);
break;
@@ -876,7 +923,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER, DoNotChangeInformation, Irp, &Status);
break;
@@ -914,7 +961,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER, DoNotChangeInformation, Irp, &Status);
break;
@@ -942,7 +989,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS, DoNotChangeInformation, Irp, &Status);
break;
@@ -970,7 +1017,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREALLOC_COMMAND, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREALLOC_COMMAND, DoNotChangeInformation, Irp, &Status);
break;
@@ -998,7 +1045,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREACTIVATE_COMMAND, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PREACTIVATE_COMMAND, DoNotChangeInformation, Irp, &Status);
break;
@@ -1021,7 +1068,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(ExtensionCommandPerformActionsForApicRequests(DebuggerApicRequest), &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(ExtensionCommandPerformActionsForApicRequests(DebuggerApicRequest), DoNotChangeInformation, Irp, &Status);
break;
@@ -1049,7 +1096,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS, DoNotChangeInformation, Irp, &Status);
break;
@@ -1080,7 +1127,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_BP_PACKET, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_BP_PACKET, DoNotChangeInformation, Irp, &Status);
break;
@@ -1108,91 +1155,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_SMI_OPERATION_PACKETS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS,
- (PVOID *)&HyperTraceLbrOperationRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the HyperTrace LBR operation
- //
- HyperTraceLbrPerformOperation(HyperTraceLbrOperationRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PERFORM_HYPERTRACE_LBR_DUMP:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS,
- (PVOID *)&HyperTraceLbrdumpRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the HyperTrace LBR dump operation
- //
- HyperTraceLbrPerformDump(HyperTraceLbrdumpRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS, &DoNotChangeInformation, Irp, &Status);
-
- break;
-
- case IOCTL_PERFORM_HYPERTRACE_PT_OPERATION:
-
- //
- // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
- //
- if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS,
- (PVOID *)&HyperTracePtOperationRequest,
- Irp,
- IrpStack,
- &InBuffLength,
- &OutBuffLength))
- {
- Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- //
- // Perform the HyperTrace PT operation
- //
- HyperTracePtPerformOperation(HyperTracePtOperationRequest);
-
- //
- // Adjust the status and output size
- //
- DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_SMI_OPERATION_PACKETS, DoNotChangeInformation, Irp, &Status);
break;
@@ -1220,7 +1183,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(OutBuffLength, DoNotChangeInformation, Irp, &Status);
break;
@@ -1247,7 +1210,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(OutBuffLength, DoNotChangeInformation, Irp, &Status);
break;
@@ -1275,7 +1238,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(OutBuffLength, DoNotChangeInformation, Irp, &Status);
break;
@@ -1310,7 +1273,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS, DoNotChangeInformation, Irp, &Status);
break;
@@ -1349,7 +1312,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(OutBuffLength, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(OutBuffLength, DoNotChangeInformation, Irp, &Status);
break;
@@ -1377,7 +1340,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET, DoNotChangeInformation, Irp, &Status);
break;
@@ -1405,7 +1368,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET, DoNotChangeInformation, Irp, &Status);
break;
@@ -1433,7 +1396,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST, DoNotChangeInformation, Irp, &Status);
break;
@@ -1462,7 +1425,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PAGE_IN_REQUEST, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGER_PAGE_IN_REQUEST, DoNotChangeInformation, Irp, &Status);
break;
@@ -1491,7 +1454,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET, DoNotChangeInformation, Irp, &Status);
break;
@@ -1520,7 +1483,7 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
//
// Adjust the status and output size
//
- DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET, &DoNotChangeInformation, Irp, &Status);
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET, DoNotChangeInformation, Irp, &Status);
break;
@@ -1530,6 +1493,195 @@ DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
break;
}
+ return Status;
+}
+
+/**
+ * @brief IOCTL Dispatcher for HyperTrace IOCTLs
+ *
+ * @param Irp
+ * @param IrpStack
+ * @param DoNotChangeInformation
+ * @return NTSTATUS
+ */
+NTSTATUS
+DrvDispatchHyperTraceIoControl(PIRP Irp, PIO_STACK_LOCATION IrpStack, BOOLEAN * DoNotChangeInformation)
+{
+ PHYPERTRACE_LBR_OPERATION_PACKETS HyperTraceLbrOperationRequest;
+ PHYPERTRACE_LBR_DUMP_PACKETS HyperTraceLbrdumpRequest;
+ PHYPERTRACE_PT_OPERATION_PACKETS HyperTracePtOperationRequest;
+ ULONG InBuffLength;
+ ULONG OutBuffLength;
+ NTSTATUS Status = STATUS_SUCCESS;
+ UINT32 Ioctl = IrpStack->Parameters.DeviceIoControl.IoControlCode;
+
+ switch (Ioctl)
+ {
+ case IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS,
+ (PVOID *)&HyperTraceLbrOperationRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the HyperTrace LBR operation
+ //
+ HyperTraceLbrPerformOperation(HyperTraceLbrOperationRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS, DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_PERFORM_HYPERTRACE_LBR_DUMP:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS,
+ (PVOID *)&HyperTraceLbrdumpRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the HyperTrace LBR dump operation
+ //
+ HyperTraceLbrPerformDump(HyperTraceLbrdumpRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_LBR_DUMP_PACKETS, DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ case IOCTL_PERFORM_HYPERTRACE_PT_OPERATION:
+
+ //
+ // Validate and adjust the parameters, and set the target buffer to the system buffer of the IRP
+ //
+ if (!DrvValidateAndAdjustIoctlParameter(SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS,
+ (PVOID *)&HyperTracePtOperationRequest,
+ Irp,
+ IrpStack,
+ &InBuffLength,
+ &OutBuffLength))
+ {
+ Status = STATUS_INVALID_PARAMETER;
+ break;
+ }
+
+ //
+ // Perform the HyperTrace PT operation
+ //
+ HyperTracePtPerformOperation(HyperTracePtOperationRequest);
+
+ //
+ // Adjust the status and output size
+ //
+ DrvAdjustStatusAndSetOutputSize(SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS, DoNotChangeInformation, Irp, &Status);
+
+ break;
+
+ default:
+ LogError("Err, unknown IOCTL");
+ Status = STATUS_NOT_IMPLEMENTED;
+ break;
+ }
+
+ return Status;
+}
+
+/**
+ * @brief Driver IOCTL Dispatcher
+ *
+ * @param DeviceObject
+ * @param Irp
+ * @return NTSTATUS
+ */
+NTSTATUS
+DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
+{
+ UNREFERENCED_PARAMETER(DeviceObject);
+
+ PIO_STACK_LOCATION IrpStack;
+ NTSTATUS Status = STATUS_SUCCESS;
+ BOOLEAN DoNotChangeInformation = FALSE;
+ UINT32 Ioctl = 0;
+ ULONG IoctlFunction = 0;
+
+ //
+ // Here's the best place to see if there is any allocation pending
+ // to be allocated as we're in PASSIVE_LEVEL
+ //
+ PoolManagerCheckAndPerformAllocationAndDeallocation();
+
+ //
+ // Get the current stack location of the IRP to access the parameters of the IOCTL request
+ //
+ IrpStack = IoGetCurrentIrpStackLocation(Irp);
+
+ //
+ // Get the IOCTL code from the parameters
+ //
+ Ioctl = IrpStack->Parameters.DeviceIoControl.IoControlCode;
+
+ //
+ // If we don't allow IOCTL from user-mode, we just complete the request with success, and return
+ //
+ if (!IoctlCheckIoctlAllowed(Ioctl))
+ {
+ Irp->IoStatus.Status = STATUS_SUCCESS;
+ Irp->IoStatus.Information = 0;
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+ return STATUS_SUCCESS;
+ }
+
+ //
+ // Dispatch to the appropriate handler based on the IOCTL range
+ //
+ IoctlFunction = CTL_CODE_FUNCTION(Ioctl);
+
+ if (IoctlFunction > IOCTL_BASIC_IOCTL && IoctlFunction <= IOCTL_BASIC_IOCTL + 0x100)
+ {
+ Status = DrvDispatchBasicIoControl(Irp, IrpStack, &DoNotChangeInformation);
+ }
+ else if (IoctlFunction > IOCTL_KD_IOCTL && IoctlFunction <= IOCTL_KD_IOCTL + 0x100)
+ {
+ Status = DrvDispatchKdIoControl(Irp, IrpStack, &DoNotChangeInformation);
+ }
+ else if (IoctlFunction > IOCTL_VMM_IOCTL && IoctlFunction <= IOCTL_VMM_IOCTL + 0x100)
+ {
+ Status = DrvDispatchVmmIoControl(Irp, IrpStack, &DoNotChangeInformation);
+ }
+ else if (IoctlFunction > IOCTL_HYPERTRACE_IOCTL && IoctlFunction <= IOCTL_HYPERTRACE_IOCTL + 0x100)
+ {
+ Status = DrvDispatchHyperTraceIoControl(Irp, IrpStack, &DoNotChangeInformation);
+ }
+ else
+ {
+ Status = STATUS_NOT_IMPLEMENTED;
+ }
+
if (Status != STATUS_PENDING)
{
Irp->IoStatus.Status = Status;
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index 5adf9f5c..0239dfa9 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -170,11 +170,6 @@ LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
return FALSE;
}
- //
- // Allow to serve IOCTL
- //
- g_AllowIoctlFromUsermode = TRUE;
-
//
// *** Fill the callbacks for using hyperlog in VMM ***
//
@@ -223,6 +218,11 @@ LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
{
LogDebugInfo("HyperDbg's hypervisor loaded successfully");
+ //
+ // VMM module initialized
+ //
+ g_AllowVmmIoctls = TRUE;
+
//
// Initialize the debugger
//
@@ -247,11 +247,6 @@ LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
LogError("Err, HyperDbg's hypervisor was not loaded");
}
- //
- // Not loaded
- //
- g_AllowIoctlFromUsermode = FALSE;
-
return FALSE;
}
diff --git a/hyperdbg/hyperkd/header/driver/Driver.h b/hyperdbg/hyperkd/header/driver/Driver.h
index b5739220..e3233b0b 100644
--- a/hyperdbg/hyperkd/header/driver/Driver.h
+++ b/hyperdbg/hyperkd/header/driver/Driver.h
@@ -45,3 +45,15 @@ DrvUnsupported(PDEVICE_OBJECT DeviceObject, PIRP Irp);
NTSTATUS
DrvDispatchIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp);
+
+NTSTATUS
+DrvDispatchBasicIoControl(PIRP Irp, PIO_STACK_LOCATION IrpStack, BOOLEAN * DoNotChangeInformation);
+
+NTSTATUS
+DrvDispatchKdIoControl(PIRP Irp, PIO_STACK_LOCATION IrpStack, BOOLEAN * DoNotChangeInformation);
+
+NTSTATUS
+DrvDispatchVmmIoControl(PIRP Irp, PIO_STACK_LOCATION IrpStack, BOOLEAN * DoNotChangeInformation);
+
+NTSTATUS
+DrvDispatchHyperTraceIoControl(PIRP Irp, PIO_STACK_LOCATION IrpStack, BOOLEAN * DoNotChangeInformation);
diff --git a/hyperdbg/hyperkd/header/globals/Global.h b/hyperdbg/hyperkd/header/globals/Global.h
index 8d98a8ae..68f7b133 100644
--- a/hyperdbg/hyperkd/header/globals/Global.h
+++ b/hyperdbg/hyperkd/header/globals/Global.h
@@ -22,6 +22,18 @@ PROCESSOR_DEBUGGING_STATE * g_DbgState;
*/
BOOLEAN g_HyperLogInitialized;
+/**
+ * @brief Shows whether the KD module is initialized or not
+ *
+ */
+BOOLEAN g_KdInitialized;
+
+/**
+ * @brief Shows whether the VMM is initialized or not
+ *
+ */
+BOOLEAN g_VmmInitialized;
+
/**
* @brief Shows whether the hypertrace module is initialized or not
*
@@ -71,12 +83,6 @@ DEBUGGER_TRAP_FLAG_STATE g_TrapFlagState;
*/
BOOLEAN g_HandleInUse;
-/**
- * @brief Determines whether the clients are allowed to send IOCTL to the drive or not
- *
- */
-BOOLEAN g_AllowIoctlFromUsermode;
-
/**
* @brief events list (for debugger)
*
diff --git a/hyperdbg/include/SDK/headers/Ioctls.h b/hyperdbg/include/SDK/headers/Ioctls.h
index 26d8df3b..10eaa333 100644
--- a/hyperdbg/include/SDK/headers/Ioctls.h
+++ b/hyperdbg/include/SDK/headers/Ioctls.h
@@ -60,13 +60,37 @@
#define CTL_CODE_FUNCTION(Code) (((Code) >> 2) & 0xFFF)
/**
- * @brief Base code for IOCTLs, to avoid conflicts with other drivers
+ * @brief Base code for IOCTLs
*
*/
#define IOCTL_START_CODE 0x800
+/**
+ * @brief ioctl, for basic communication between user-mode and kernel-mode, and for loading and initializing the driver and its components
+ *
+ */
+#define IOCTL_BASIC_IOCTL IOCTL_START_CODE + 0x00
+
+/**
+ * @brief ioctl, for KD (Kernel Debugger) related functionalities
+ *
+ */
+#define IOCTL_KD_IOCTL IOCTL_START_CODE + 0x100
+
+/**
+ * @brief ioctl, for VMM and debugger related functionalities
+ *
+ */
+#define IOCTL_VMM_IOCTL IOCTL_START_CODE + 0x200
+
+/**
+ * @brief ioctl, for HyperTrace related functionalities
+ *
+ */
+#define IOCTL_HYPERTRACE_IOCTL IOCTL_START_CODE + 0x300
+
//////////////////////////////////////////////////
-// IOCTLs //
+// Basic IOCTLs //
//////////////////////////////////////////////////
/**
@@ -74,119 +98,127 @@
*
*/
#define IOCTL_INIT_VMM \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_BASIC_IOCTL + 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, initialize the HyperTrace module
*
*/
#define IOCTL_INIT_HYPERTRACE \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x02, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_BASIC_IOCTL + 0x02, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, register a new event
*
*/
#define IOCTL_REGISTER_EVENT \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x03, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_BASIC_IOCTL + 0x03, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//////////////////////////////////////////////////
+// KD IOCTLs //
+//////////////////////////////////////////////////
+
+//////////////////////////////////////////////////
+// VMM IOCTLs //
+//////////////////////////////////////////////////
/**
* @brief ioctl, irp pending mechanism for reading from message tracing buffers
*
*/
#define IOCTL_RETURN_IRP_PENDING_PACKETS_AND_DISALLOW_IOCTL \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x10, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to terminate vmx and exit form debugger
*
*/
#define IOCTL_TERMINATE_VMX \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x12, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x02, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to read memory
*
*/
#define IOCTL_DEBUGGER_READ_MEMORY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x13, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x03, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to read or write on a special MSR
*
*/
#define IOCTL_DEBUGGER_READ_OR_WRITE_MSR \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x14, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x04, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to read page table entries
*
*/
#define IOCTL_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x15, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x05, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, register an event
*
*/
#define IOCTL_DEBUGGER_REGISTER_EVENT \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x16, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x06, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, add action to event
*
*/
#define IOCTL_DEBUGGER_ADD_ACTION_TO_EVENT \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x17, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x07, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to enable or disable transparent-mode
*
*/
#define IOCTL_DEBUGGER_HIDE_AND_UNHIDE_TO_TRANSPARENT_THE_DEBUGGER \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x18, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, for !va2pa and !pa2va commands
*
*/
#define IOCTL_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x19, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x09, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to edit virtual and physical memory
*
*/
#define IOCTL_DEBUGGER_EDIT_MEMORY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x1a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x0a, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to search virtual and physical memory
*
*/
#define IOCTL_DEBUGGER_SEARCH_MEMORY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x1b, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x0b, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to modify an event (enable/disable/clear)
*
*/
#define IOCTL_DEBUGGER_MODIFY_EVENTS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x1c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x0c, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, flush the kernel buffers
*
*/
#define IOCTL_DEBUGGER_FLUSH_LOGGING_BUFFERS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x1d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x0d, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, attach or detach user-mode processes
*
*/
#define IOCTL_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x1e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x0e, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, print states (Deprecated)
@@ -194,186 +226,190 @@
*
*/
#define IOCTL_DEBUGGER_PRINT \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x1f, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x0f, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, prepare debuggee
*
*/
#define IOCTL_PREPARE_DEBUGGEE \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x20, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x10, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, pause and halt the system
*
*/
#define IOCTL_PAUSE_PACKET_RECEIVED \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x21, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x11, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, send a signal that execution of command finished
*
*/
#define IOCTL_SEND_SIGNAL_EXECUTION_IN_DEBUGGEE_FINISHED \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x22, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x12, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, send user-mode messages to the debugger
*
*/
#define IOCTL_SEND_USERMODE_MESSAGES_TO_DEBUGGER \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x23, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x13, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, send general buffer from debuggee to debugger
*
*/
#define IOCTL_SEND_GENERAL_BUFFER_FROM_DEBUGGEE_TO_DEBUGGER \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x24, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x14, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform kernel-side tests
*
*/
#define IOCTL_PERFORM_KERNEL_SIDE_TESTS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x25, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x15, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to reserve pre-allocated pools
*
*/
#define IOCTL_RESERVE_PRE_ALLOCATED_POOLS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x26, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x16, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to send user debugger commands
*
*/
#define IOCTL_SEND_USER_DEBUGGER_COMMANDS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x27, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x17, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to get active threads/processes that are debugging
*
*/
#define IOCTL_GET_DETAIL_OF_ACTIVE_THREADS_AND_PROCESSES \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x28, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x18, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to get user mode modules details
*
*/
#define IOCTL_GET_USER_MODE_MODULE_DETAILS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x29, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x19, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, query count of active threads or processes
*
*/
#define IOCTL_QUERY_COUNT_OF_ACTIVE_PROCESSES_OR_THREADS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x2a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x1a, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to get list threads/processes
*
*/
#define IOCTL_GET_LIST_OF_THREADS_AND_PROCESSES \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x2b, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x1b, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, query the current process details
*
*/
#define IOCTL_QUERY_CURRENT_PROCESS \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x2c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x1c, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, query the current thread details
*
*/
#define IOCTL_QUERY_CURRENT_THREAD \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x2d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x1d, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request service from the reversing machine
*
*/
#define IOCTL_REQUEST_REV_MACHINE_SERVICE \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x2e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x1e, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, request to bring pages in
*
*/
#define IOCTL_DEBUGGER_BRING_PAGES_IN \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x2f, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x1f, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to preactivate a functionality
*
*/
#define IOCTL_PREACTIVATE_FUNCTIONALITY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x30, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x20, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to enumerate PCIe endpoints
*
*/
#define IOCTL_PCIE_ENDPOINT_ENUM \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x31, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x21, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform actions related to APIC
*
*/
#define IOCTL_PERFORM_ACTIONS_ON_APIC \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x32, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x22, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to query for PCI endpoint info
*
*/
#define IOCTL_PCIDEVINFO_ENUM \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x33, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x23, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to query the IDT entries
*
*/
#define IOCTL_QUERY_IDT_ENTRY \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x34, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x24, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to set breakpoint for the user debugger
*
*/
#define IOCTL_SET_BREAKPOINT_USER_DEBUGGER \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x35, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x26, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform SMI operations
*
*/
#define IOCTL_PERFORM_SMI_OPERATION \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x36, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_VMM_IOCTL + 0x27, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//////////////////////////////////////////////////
+// HyperTrace IOCTLs //
+//////////////////////////////////////////////////
/**
* @brief ioctl, to perform HyperTrace LBR operations
*
*/
#define IOCTL_PERFORM_HYPERTRACE_LBR_OPERATION \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x37, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_HYPERTRACE_IOCTL + 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform HyperTrace LBR dump
*
*/
#define IOCTL_PERFORM_HYPERTRACE_LBR_DUMP \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x38, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_HYPERTRACE_IOCTL + 0x02, METHOD_BUFFERED, FILE_ANY_ACCESS)
/**
* @brief ioctl, to perform HyperTrace PT operations
*
*/
#define IOCTL_PERFORM_HYPERTRACE_PT_OPERATION \
- CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_START_CODE + 0x39, METHOD_BUFFERED, FILE_ANY_ACCESS)
+ CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_HYPERTRACE_IOCTL + 0x03, METHOD_BUFFERED, FILE_ANY_ACCESS)
From 65bcf4f4c611668868ef7bfa4889edf57fe44c9b Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 2 Jun 2026 19:28:19 +0200
Subject: [PATCH 234/323] integrating the new enhanced PE parser
---
CHANGELOG.md | 3 +
CONTRIBUTING.md | 2 +-
README.md | 3 +-
.../code/tests/test-pe-parser.cpp | 106 ++-
hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj | 4 +-
.../hyperdbg-test.vcxproj.filters | 24 +-
hyperdbg/hyperdbg-test/pch.h | 5 +
hyperdbg/hyperdbg.sln | 16 +
.../components/pe/code}/pe-image-reader.cpp | 106 ++-
.../components/pe/header/pe-image-reader.h | 100 +++
.../commands/debugging-commands/test.cpp | 2 +-
.../debugger/commands/meta-commands/pe.cpp | 6 +-
.../code/debugger/user-level/pe-parser.cpp | 808 +++++++++++++++---
hyperdbg/libhyperdbg/header/pe-image-reader.h | 47 -
hyperdbg/libhyperdbg/header/pe-parser.h | 30 +
hyperdbg/libhyperdbg/libhyperdbg.vcxproj | 4 +-
.../libhyperdbg/libhyperdbg.vcxproj.filters | 26 +-
hyperdbg/libhyperdbg/pch.h | 5 +
18 files changed, 1102 insertions(+), 195 deletions(-)
rename hyperdbg/{libhyperdbg/code/debugger/user-level => include/components/pe/code}/pe-image-reader.cpp (59%)
create mode 100644 hyperdbg/include/components/pe/header/pe-image-reader.h
delete mode 100644 hyperdbg/libhyperdbg/header/pe-image-reader.h
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 53f81c7b..1462173d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -25,6 +25,7 @@ New release of the HyperDbg Debugger.
- Exported SDK API for detecting CPU vendors
- Initial codes for the HyperTrace project by using Intel Processor Trace (PT), thanks to [@masoudrahimi01](https://github.com/masoudrahimi01) ([link](https://github.com/HyperDbg/HyperDbg/pull/589))
- Exported SDK APIs for loading the 'kd' and the 'trace' modules
+- Added tests for checking PE parser in 'hyperdbg-test' project
### Changed
- Fix the problem of not applying the EAX index in the CPUID event extension command ([link](https://docs.hyperdbg.org/commands/extension-commands/cpuid#parameters))
@@ -37,6 +38,8 @@ New release of the HyperDbg Debugger.
- Extensive refactoring of code base (doxygen, variables, function names)
- Building certain modules on Linux and fixing CMake files thanks to [@maxraulea](https://github.com/maxraulea) ([link](https://github.com/HyperDbg/HyperDbg/pull/592))
- Fix the '!hide' command's HyperEvade activation guard thanks to [@jtaw5649](https://github.com/jtaw5649) ([link](https://github.com/HyperDbg/HyperDbg/pull/593))
+- Fix synchronous debugger device IOCTL handles thanks to [@jtaw5649](https://github.com/jtaw5649) ([link](https://github.com/HyperDbg/HyperDbg/pull/595))
+- PE parser ('.pe' command) now supports richer DOS/NT/COFF/optional-header output, section bounds checking, data directory reporting, import/export parsing, TLS/debug/PDB/load-config metadata, overlay reporting, and malformed metadata warnings thanks to [@jtaw5649](https://github.com/jtaw5649) ([link](https://github.com/HyperDbg/HyperDbg/pull/598))([link](https://docs.hyperdbg.org/commands/meta-commands/.pe))
## [0.18.1.0] - 2026-04-09
New release of the HyperDbg Debugger.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3b67c60f..bc90e82f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -14,7 +14,6 @@ Please make sure to create a [discussion](https://github.com/orgs/HyperDbg/discu
- Troubleshooting problems with running on VirtualBox's nested virtualization.
- Supporting KDNET (sending data over the network).
- Enhancing HyperDbg's [Transparent Mode](https://docs.hyperdbg.org/using-hyperdbg/prerequisites/operation-modes#transparent-mode). These features should be added as an extension to the [HyperEvade](https://www.vusec.net/projects/hyperevade/) project (e.g., by bypassing [al-khaser](https://github.com/LordNoteworthy/al-khaser) and similar anti-debugging and anti-hypervisor projects).
-- Enhancing and adding more features to the ['.pe'](https://docs.hyperdbg.org/commands/meta-commands/.pe) command.
- Adding HyperDbg to the system startup using UEFI.
- Creating a QT-based GUI.
- Creating a SoftICE-style GUI.
@@ -43,6 +42,7 @@ Please make sure to create a [discussion](https://github.com/orgs/HyperDbg/discu
- Adding support for [Hardware Performance Counters (HPC)](https://en.wikipedia.org/wiki/Hardware_performance_counter).
- Any other interesting tasks you might find!
+- ~~Enhancing and adding more features to the ['.pe'](https://docs.hyperdbg.org/commands/meta-commands/.pe) command.~~ Added: [link ][link ]
- ~~Adding routines to activate and use Last Branch Record (LBR) and Branch Trace Store (BTS).~~ Added: [link ][link ]
- ~~Creating commands to inspect and read details of PCIe devices.~~ Added: [link ][link ]
- ~~Mitigating the anti-hypervisor method described [here](https://howtohypervise.blogspot.com/2019/01/a-common-missight-in-most-hypervisors.html).~~ [[Fixed](https://github.com/HyperDbg/HyperDbg/pull/497)]
diff --git a/README.md b/README.md
index 00171431..98b06c23 100644
--- a/README.md
+++ b/README.md
@@ -178,7 +178,8 @@ You can also read [this article](https://research.hyperdbg.org/debugger/kernel-d
* Attaching to the User-mode Process and Preventing Execution [link ]
* Intercepting Execution of XSETBV Instructions [link ]
* Writing Library Script Files [link ]
-* Tracing Branches using Last Branch Record [link ][link ][link ][link ][link ][link ][link ]
+* Enhanced Portable Executable (PE) Parser [link ]
+* Tracing Branches using Last Branch Record (LBR) [link ][link ][link ][link ][link ][link ][link ]
## How does it work?
diff --git a/hyperdbg/hyperdbg-test/code/tests/test-pe-parser.cpp b/hyperdbg/hyperdbg-test/code/tests/test-pe-parser.cpp
index daceaa65..194b042b 100644
--- a/hyperdbg/hyperdbg-test/code/tests/test-pe-parser.cpp
+++ b/hyperdbg/hyperdbg-test/code/tests/test-pe-parser.cpp
@@ -3,7 +3,7 @@
* @author jtaw5649
* @brief Test cases for PE parser helpers
* @details
- * @version 0.11
+ * @version 0.19
* @date 2026-06-01
*
* @copyright This project is released under the GNU Public License v3.
@@ -11,23 +11,46 @@
*/
#include "pch.h"
-#include "header/pe-image-reader.h"
-
static constexpr SIZE_T PeFixtureSize = 0x200;
static constexpr LONG PeHeaderOffset = 0x80;
+/**
+ * @brief Returns the byte offset of the optional header within the test fixture buffer
+ *
+ * The optional header immediately follows the NT signature DWORD and the
+ * IMAGE_FILE_HEADER at a fixed offset determined by PeHeaderOffset.
+ *
+ * @return SIZE_T Byte offset from the start of the fixture buffer
+ */
static SIZE_T
PeOptionalHeaderOffset()
{
return PeHeaderOffset + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER);
}
+/**
+ * @brief Returns the byte offset of the section header table within the test fixture buffer
+ *
+ * The section table begins immediately after the optional header, whose size
+ * is supplied by the caller.
+ *
+ * @param OptionalHeaderSize Size in bytes of the optional header (32-bit or 64-bit variant)
+ *
+ * @return SIZE_T Byte offset from the start of the fixture buffer
+ */
static SIZE_T
PeSectionHeaderOffset(SIZE_T OptionalHeaderSize)
{
return PeOptionalHeaderOffset() + OptionalHeaderSize;
}
+/**
+ * @brief Writes a little-endian 16-bit value into a byte buffer at the given offset
+ *
+ * @param Buffer Pointer to the destination byte buffer
+ * @param Offset Byte offset within Buffer at which to write
+ * @param Value 16-bit value to write in little-endian order
+ */
static VOID
WriteWord(BYTE * Buffer, SIZE_T Offset, WORD Value)
{
@@ -35,6 +58,13 @@ WriteWord(BYTE * Buffer, SIZE_T Offset, WORD Value)
Buffer[Offset + 1] = (BYTE)((Value >> 8) & 0xff);
}
+/**
+ * @brief Writes a little-endian 32-bit value into a byte buffer at the given offset
+ *
+ * @param Buffer Pointer to the destination byte buffer
+ * @param Offset Byte offset within Buffer at which to write
+ * @param Value 32-bit value to write in little-endian order
+ */
static VOID
WriteDword(BYTE * Buffer, SIZE_T Offset, DWORD Value)
{
@@ -44,6 +74,16 @@ WriteDword(BYTE * Buffer, SIZE_T Offset, DWORD Value)
Buffer[Offset + 3] = (BYTE)((Value >> 24) & 0xff);
}
+/**
+ * @brief Builds a minimal valid 64-bit PE (PE32+) fixture in the supplied buffer
+ *
+ * Zeroes the buffer, then writes a valid IMAGE_DOS_HEADER pointing to PeHeaderOffset,
+ * an NT signature, an IMAGE_FILE_HEADER with machine type AMD64 and one section,
+ * and an IMAGE_OPTIONAL_HEADER64 magic value. The result is the smallest byte
+ * sequence accepted by PeImageReaderInitialize as a 64-bit PE image.
+ *
+ * @param Buffer Pointer to a buffer of at least PeFixtureSize bytes
+ */
static VOID
BuildMinimalPe64(BYTE * Buffer)
{
@@ -63,6 +103,16 @@ BuildMinimalPe64(BYTE * Buffer)
IMAGE_NT_OPTIONAL_HDR64_MAGIC);
}
+/**
+ * @brief Builds a minimal valid 32-bit PE (PE32) fixture in the supplied buffer
+ *
+ * Zeroes the buffer, then writes a valid IMAGE_DOS_HEADER pointing to PeHeaderOffset,
+ * an NT signature, an IMAGE_FILE_HEADER with machine type I386 and one section,
+ * and an IMAGE_OPTIONAL_HEADER32 magic value. The result is the smallest byte
+ * sequence accepted by PeImageReaderInitialize as a 32-bit PE image.
+ *
+ * @param Buffer Pointer to a buffer of at least PeFixtureSize bytes
+ */
static VOID
BuildMinimalPe32(BYTE * Buffer)
{
@@ -82,6 +132,15 @@ BuildMinimalPe32(BYTE * Buffer)
IMAGE_NT_OPTIONAL_HDR32_MAGIC);
}
+/**
+ * @brief Sets the SizeOfHeaders field in the PE64 optional header of a fixture buffer
+ *
+ * Computes the field offset within IMAGE_OPTIONAL_HEADER64 and writes a 32-bit
+ * little-endian value at that position.
+ *
+ * @param Buffer Pointer to a fixture buffer previously initialised by BuildMinimalPe64
+ * @param SizeOfHeaders Value to write into the SizeOfHeaders field
+ */
static VOID
SetPe64OptionalHeaderSizeOfHeaders(BYTE * Buffer, DWORD SizeOfHeaders)
{
@@ -90,12 +149,37 @@ SetPe64OptionalHeaderSizeOfHeaders(BYTE * Buffer, DWORD SizeOfHeaders)
WriteDword(Buffer, Offset, SizeOfHeaders);
}
+/**
+ * @brief Returns a pointer to the first section header in a fixture buffer
+ *
+ * Computes the section header table offset using OptionalHeaderSize and casts
+ * the corresponding location in Buffer to IMAGE_SECTION_HEADER *.
+ *
+ * @param Buffer Pointer to a fixture buffer
+ * @param OptionalHeaderSize Size in bytes of the optional header used by the fixture
+ *
+ * @return IMAGE_SECTION_HEADER* Pointer to the first section header within the buffer
+ */
static IMAGE_SECTION_HEADER *
GetFixtureSectionHeader(BYTE * Buffer, SIZE_T OptionalHeaderSize)
{
return (IMAGE_SECTION_HEADER *)(Buffer + PeSectionHeaderOffset(OptionalHeaderSize));
}
+/**
+ * @brief Configures the .text section header in a fixture buffer
+ *
+ * Zeroes the first section header slot, writes the name ".text", and sets
+ * the virtual address, virtual size, raw data pointer, and raw data size
+ * fields to the supplied values.
+ *
+ * @param Buffer Pointer to a fixture buffer
+ * @param OptionalHeaderSize Size in bytes of the optional header used by the fixture
+ * @param VirtualAddress RVA at which the section is loaded
+ * @param VirtualSize Virtual size of the section
+ * @param PointerToRawData Raw file offset of the section data
+ * @param SizeOfRawData Size of the raw data on disk
+ */
static VOID
ConfigureTextSection(BYTE * Buffer, SIZE_T OptionalHeaderSize, DWORD VirtualAddress, DWORD VirtualSize, DWORD PointerToRawData, DWORD SizeOfRawData)
{
@@ -109,6 +193,22 @@ ConfigureTextSection(BYTE * Buffer, SIZE_T OptionalHeaderSize, DWORD VirtualAddr
SectionHeader->PointerToRawData = PointerToRawData;
}
+/**
+ * @brief Runs all PE parser unit tests and reports pass/fail results
+ *
+ * Each numbered test case exercises a distinct behaviour of the PE image reader:
+ * 1. A valid PE32+ image initialises successfully and reports 64-bit.
+ * 2. A valid PE32 image initialises successfully and reports 32-bit.
+ * 3. A corrupt DOS magic causes initialisation to fail.
+ * 4. An optional header that is one byte too small causes initialisation to fail.
+ * 5. An e_lfanew value that points past the buffer causes initialisation to fail.
+ * 6. A valid section RVA maps to the correct raw file offset.
+ * 7. Header-range RVA resolution is enforced at SizeOfHeaders boundaries.
+ * 8. An 8-byte section name is always returned null-terminated.
+ * 9. An RVA whose raw mapping extends outside the file is rejected.
+ *
+ * @return BOOLEAN TRUE if all tests pass, FALSE if any test fails
+ */
BOOLEAN
TestPeParser()
{
diff --git a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
index 8de12676..82e9342d 100644
--- a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
+++ b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj
@@ -103,8 +103,8 @@
+
-
@@ -114,11 +114,11 @@
+
-
diff --git a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters
index 0865f36c..883423c6 100644
--- a/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters
+++ b/hyperdbg/hyperdbg-test/hyperdbg-test.vcxproj.filters
@@ -21,6 +21,18 @@
{18515e99-bdbe-465f-9c92-58dc89591116}
+
+ {4905a2c5-31b5-4b16-9f84-d2b3b39726d3}
+
+
+ {2835e8e0-5525-473b-ae43-c498674fb42e}
+
+
+ {b36455ac-6726-4c17-903c-3c3e3de1b783}
+
+
+ {b3920039-7e86-412e-bf10-8a5a7946e102}
+
@@ -44,12 +56,12 @@
code\hardware
-
- code\tests
-
code
+
+ code\components\pe
+
@@ -67,8 +79,8 @@
header
-
- header
+
+ header\components\pe
@@ -76,4 +88,4 @@
code\assembly
-
+
\ No newline at end of file
diff --git a/hyperdbg/hyperdbg-test/pch.h b/hyperdbg/hyperdbg-test/pch.h
index 0e38771e..da9decf2 100644
--- a/hyperdbg/hyperdbg-test/pch.h
+++ b/hyperdbg/hyperdbg-test/pch.h
@@ -44,6 +44,11 @@ using namespace std;
#include "../hyperdbg-test/header/routines.h"
#include "../hyperdbg-test/header/testcases.h"
+//
+// Components
+//
+#include "../include/components/pe/header/pe-image-reader.h"
+
//
// Hardware Debugger Headers
//
diff --git a/hyperdbg/hyperdbg.sln b/hyperdbg/hyperdbg.sln
index 22c5e3ce..fff4dc56 100644
--- a/hyperdbg/hyperdbg.sln
+++ b/hyperdbg/hyperdbg.sln
@@ -62,6 +62,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "headers", "headers", "{D67D
include\SDK\Headers\Ioctls.h = include\SDK\Headers\Ioctls.h
include\SDK\headers\LbrDefinitions.h = include\SDK\headers\LbrDefinitions.h
include\SDK\headers\Pcie.h = include\SDK\headers\Pcie.h
+ include\SDK\headers\PortableExecutable.h = include\SDK\headers\PortableExecutable.h
include\SDK\headers\PtDefinitions.h = include\SDK\headers\PtDefinitions.h
include\SDK\Headers\RequestStructures.h = include\SDK\Headers\RequestStructures.h
include\SDK\Headers\ScriptEngineCommonDefinitions.h = include\SDK\Headers\ScriptEngineCommonDefinitions.h
@@ -314,6 +315,18 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{AD02B9
include\components\callback\hyperlog\header\HyperLogCallback.h = include\components\callback\hyperlog\header\HyperLogCallback.h
EndProjectSection
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "pe", "pe", "{9A0232BB-B06B-47EE-A096-E7B475956437}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "code", "code", "{824DF7C7-18B5-48DE-99D7-AD6B612D6204}"
+ ProjectSection(SolutionItems) = preProject
+ include\components\pe\code\pe-image-reader.cpp = include\components\pe\code\pe-image-reader.cpp
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "header", "header", "{CA2D9C24-F90A-48ED-8ABC-F296674EA2B7}"
+ ProjectSection(SolutionItems) = preProject
+ include\components\pe\header\pe-image-reader.h = include\components\pe\header\pe-image-reader.h
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug|x64 = debug|x64
@@ -418,6 +431,9 @@ Global
{1AA10217-07BF-490B-A688-1D1D6A267D52} = {DF15E9D4-976B-4E1D-B68F-9B67F93654BF}
{78821DCF-DCFE-45B7-A9DD-3543BDF1FB9E} = {1AA10217-07BF-490B-A688-1D1D6A267D52}
{AD02B952-0D75-47FE-8FF7-18B3E081E2C1} = {1AA10217-07BF-490B-A688-1D1D6A267D52}
+ {9A0232BB-B06B-47EE-A096-E7B475956437} = {DF15E9D4-976B-4E1D-B68F-9B67F93654BF}
+ {824DF7C7-18B5-48DE-99D7-AD6B612D6204} = {9A0232BB-B06B-47EE-A096-E7B475956437}
+ {CA2D9C24-F90A-48ED-8ABC-F296674EA2B7} = {9A0232BB-B06B-47EE-A096-E7B475956437}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1444BEC7-11CE-4CA6-B77C-5F98AC9BFAEB}
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-image-reader.cpp b/hyperdbg/include/components/pe/code/pe-image-reader.cpp
similarity index 59%
rename from hyperdbg/libhyperdbg/code/debugger/user-level/pe-image-reader.cpp
rename to hyperdbg/include/components/pe/code/pe-image-reader.cpp
index b147a881..b5abaacd 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-image-reader.cpp
+++ b/hyperdbg/include/components/pe/code/pe-image-reader.cpp
@@ -3,7 +3,7 @@
* @author jtaw5649
* @brief Bounded in-memory Portable Executable reader
* @details
- * @version 0.1
+ * @version 0.19
* @date 2026-06-01
*
* @copyright This project is released under the GNU Public License v3.
@@ -11,14 +11,36 @@
*/
#include "pch.h"
-#include "header/pe-image-reader.h"
-
+/**
+ * @brief Checks whether the byte range [Offset, Offset + Length) lies entirely within an image buffer
+ *
+ * Validates that neither the offset nor the combined offset-plus-length overflows
+ * and that both fall within the bounds of the image.
+ *
+ * @param ImageSize Total size of the image buffer in bytes
+ * @param Offset Starting byte offset to test
+ * @param Length Number of bytes in the range
+ *
+ * @return BOOLEAN TRUE if the range is valid, FALSE if it exceeds the image bounds
+ */
static BOOLEAN
PeImageReaderHasRange(SIZE_T ImageSize, SIZE_T Offset, SIZE_T Length)
{
return Offset <= ImageSize && Length <= ImageSize - Offset;
}
+/**
+ * @brief Adds two SIZE_T values with overflow detection
+ *
+ * Returns FALSE without modifying Result when the addition would overflow;
+ * otherwise writes the sum to *Result and returns TRUE.
+ *
+ * @param Left First operand
+ * @param Right Second operand
+ * @param Result Output pointer that receives the sum on success; must not be NULL
+ *
+ * @return BOOLEAN TRUE if the addition succeeded, FALSE on overflow or NULL pointer
+ */
static BOOLEAN
PeImageReaderAddSize(SIZE_T Left, SIZE_T Right, SIZE_T * Result)
{
@@ -31,6 +53,16 @@ PeImageReaderAddSize(SIZE_T Left, SIZE_T Right, SIZE_T * Result)
return TRUE;
}
+/**
+ * @brief Retrieves the SizeOfHeaders value from the PE optional header
+ *
+ * Reads the field from IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64
+ * depending on the bitness recorded in the reader.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER; must not be NULL
+ *
+ * @return DWORD The SizeOfHeaders value from the optional header
+ */
static DWORD
PeImageReaderGetSizeOfHeaders(PPE_IMAGE_READER Reader)
{
@@ -44,6 +76,20 @@ PeImageReaderGetSizeOfHeaders(PPE_IMAGE_READER Reader)
return ((const IMAGE_OPTIONAL_HEADER64 *)OptionalHeader)->SizeOfHeaders;
}
+/**
+ * @brief Parses and validates all PE headers in an in-memory image buffer
+ *
+ * Verifies the DOS signature, the NT signature, the optional header magic,
+ * and ensures all headers and the section table fit within the supplied buffer.
+ * On success the Reader structure is populated with pointers into ImageBase.
+ *
+ * @param ImageBase Pointer to the start of the image buffer; must not be NULL
+ * @param ImageSize Size of the buffer in bytes
+ * @param Reader Output structure to populate on success; must not be NULL
+ *
+ * @return BOOLEAN TRUE if the image was parsed successfully, FALSE on any
+ * validation failure or NULL argument
+ */
BOOLEAN
PeImageReaderInitialize(const BYTE * ImageBase, SIZE_T ImageSize, PPE_IMAGE_READER Reader)
{
@@ -134,6 +180,16 @@ PeImageReaderInitialize(const BYTE * ImageBase, SIZE_T ImageSize, PPE_IMAGE_READ
return TRUE;
}
+/**
+ * @brief Returns whether the PE image is a 32-bit (PE32) image
+ *
+ * Examines the Is32Bit flag populated by PeImageReaderInitialize.
+ * A return value of FALSE means either the reader is NULL or the image is PE32+.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ *
+ * @return BOOLEAN TRUE for PE32 (32-bit), FALSE for PE32+ (64-bit) or NULL reader
+ */
BOOLEAN
PeImageReaderIs32Bit(PPE_IMAGE_READER Reader)
{
@@ -145,6 +201,20 @@ PeImageReaderIs32Bit(PPE_IMAGE_READER Reader)
return Reader->Is32Bit;
}
+/**
+ * @brief Returns a validated pointer into the image at a raw file offset
+ *
+ * Verifies that the range [Offset, Offset + Length) lies within the image
+ * buffer before setting *Pointer. Use this function when working with raw
+ * file offsets rather than virtual addresses.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER; must not be NULL
+ * @param Offset Raw file offset from the start of the image
+ * @param Length Number of bytes that must be accessible at the offset
+ * @param Pointer Output pointer set to ImageBase + Offset on success; must not be NULL
+ *
+ * @return BOOLEAN TRUE on success, FALSE on invalid arguments or out-of-bounds offset
+ */
BOOLEAN
PeImageReaderGetPointerAtOffset(PPE_IMAGE_READER Reader, SIZE_T Offset, SIZE_T Length, const BYTE ** Pointer)
{
@@ -157,6 +227,19 @@ PeImageReaderGetPointerAtOffset(PPE_IMAGE_READER Reader, SIZE_T Offset, SIZE_T L
return TRUE;
}
+/**
+ * @brief Copies the section name from a section header into a null-terminated buffer
+ *
+ * The PE section name field (IMAGE_SIZEOF_SHORT_NAME bytes) is not required to be
+ * null-terminated when it uses all 8 bytes. This function always appends a null
+ * terminator and truncates to NameBufferSize - 1 characters if necessary.
+ *
+ * @param SectionHeader Pointer to the section header to read; must not be NULL
+ * @param NameBuffer Destination buffer for the null-terminated name; must not be NULL
+ * @param NameBufferSize Size of NameBuffer in bytes; must be at least 1
+ *
+ * @return BOOLEAN TRUE on success, FALSE on NULL arguments or zero-length buffer
+ */
BOOLEAN
PeImageReaderGetSectionName(const IMAGE_SECTION_HEADER * SectionHeader, CHAR * NameBuffer, SIZE_T NameBufferSize)
{
@@ -183,6 +266,23 @@ PeImageReaderGetSectionName(const IMAGE_SECTION_HEADER * SectionHeader, CHAR * N
return TRUE;
}
+/**
+ * @brief Translates a relative virtual address (RVA) to a raw file offset
+ *
+ * First checks whether the RVA falls within the PE headers (before any section),
+ * in which case the file offset equals the RVA. Otherwise iterates the section
+ * table to find the section that contains the range [Rva, Rva + Length) and
+ * computes the corresponding raw offset via PointerToRawData. Returns FALSE if
+ * no section contains the range, if the raw data mapping is out of bounds, or if
+ * any arithmetic overflows.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER; must not be NULL
+ * @param Rva Relative virtual address to translate
+ * @param Length Number of bytes that must be accessible at the translated offset
+ * @param FileOffset Output pointer that receives the raw file offset on success; must not be NULL
+ *
+ * @return BOOLEAN TRUE if the RVA was translated successfully, FALSE otherwise
+ */
BOOLEAN
PeImageReaderRvaToFileOffset(PPE_IMAGE_READER Reader, DWORD Rva, DWORD Length, PSIZE_T FileOffset)
{
diff --git a/hyperdbg/include/components/pe/header/pe-image-reader.h b/hyperdbg/include/components/pe/header/pe-image-reader.h
new file mode 100644
index 00000000..bc4e0852
--- /dev/null
+++ b/hyperdbg/include/components/pe/header/pe-image-reader.h
@@ -0,0 +1,100 @@
+/**
+ * @file pe-image-reader.h
+ * @author jtaw5649
+ * @brief Bounded in-memory Portable Executable reader
+ * @details
+ * @version 0.19
+ * @date 2026-06-01
+ *
+ * @copyright This project is released under the GNU Public License v3.
+ *
+ */
+#pragma once
+
+/*
+typedef struct _IMAGE_DOS_HEADER
+{ // DOS .EXE header
+ WORD e_magic; // Magic number
+ WORD e_cblp; // Bytes on last page of file
+ WORD e_cp; // Pages in file
+ WORD e_crlc; // Relocations
+ WORD e_cparhdr; // Size of header in paragraphs
+ WORD e_minalloc; // Minimum extra paragraphs needed
+ WORD e_maxalloc; // Maximum extra paragraphs needed
+ WORD e_ss; // Initial (relative) SS value
+ WORD e_sp; // Initial SP value
+ WORD e_csum; // Checksum
+ WORD e_ip; // Initial IP value
+ WORD e_cs; // Initial (relative) CS value
+ WORD e_lfarlc; // File address of relocation table
+ WORD e_ovno; // Overlay number
+ WORD e_res[4]; // Reserved words
+ WORD e_oemid; // OEM identifier (for e_oeminfo)
+ WORD e_oeminfo; // OEM information; e_oemid specific
+ WORD e_res2[10]; // Reserved words
+ LONG e_lfanew; // File address of new exe header
+} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
+
+typedef struct _IMAGE_FILE_HEADER
+{
+ WORD Machine;
+ WORD NumberOfSections;
+ DWORD TimeDateStamp;
+ DWORD PointerToSymbolTable;
+ DWORD NumberOfSymbols;
+ WORD SizeOfOptionalHeader;
+ WORD Characteristics;
+} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
+
+#define IMAGE_SIZEOF_SHORT_NAME 8
+
+typedef struct _IMAGE_SECTION_HEADER
+{
+ BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
+ union
+ {
+ DWORD PhysicalAddress;
+ DWORD VirtualSize;
+ } Misc;
+ DWORD VirtualAddress;
+ DWORD SizeOfRawData;
+ DWORD PointerToRawData;
+ DWORD PointerToRelocations;
+ DWORD PointerToLinenumbers;
+ WORD NumberOfRelocations;
+ WORD NumberOfLinenumbers;
+ DWORD Characteristics;
+} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
+
+*/
+
+typedef struct _PE_IMAGE_READER
+{
+ const BYTE * ImageBase;
+ SIZE_T ImageSize;
+ const IMAGE_DOS_HEADER * DosHeader;
+ const BYTE * NtHeaders;
+ const IMAGE_FILE_HEADER * FileHeader;
+ const IMAGE_SECTION_HEADER * SectionHeaders;
+ WORD OptionalHeaderMagic;
+ BOOLEAN Is32Bit;
+} PE_IMAGE_READER, *PPE_IMAGE_READER;
+
+//////////////////////////////////////////////////
+// Functions //
+//////////////////////////////////////////////////
+
+BOOLEAN
+PeImageReaderInitialize(const BYTE * ImageBase, SIZE_T ImageSize, PPE_IMAGE_READER Reader);
+
+BOOLEAN
+PeImageReaderIs32Bit(PPE_IMAGE_READER Reader);
+
+BOOLEAN
+PeImageReaderGetPointerAtOffset(PPE_IMAGE_READER Reader, SIZE_T Offset, SIZE_T Length, const BYTE ** Pointer);
+
+BOOLEAN
+PeImageReaderGetSectionName(const IMAGE_SECTION_HEADER * SectionHeader, CHAR * NameBuffer, SIZE_T NameBufferSize);
+
+BOOLEAN
+PeImageReaderRvaToFileOffset(PPE_IMAGE_READER Reader, DWORD Rva, DWORD Length, PSIZE_T FileOffset);
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/test.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/test.cpp
index aa9291cd..9ac133b8 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/test.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/debugging-commands/test.cpp
@@ -225,7 +225,7 @@ SendCommandAndWaitForResponse:
RtlZeroMemory(Buffer, TEST_CASE_MAXIMUM_BUFFERS_TO_COMMUNICATE);
ReadBytes =
- NamedPipeServerReadClientMessage(PipeHandle, (char *)Buffer, TEST_CASE_MAXIMUM_BUFFERS_TO_COMMUNICATE);
+ NamedPipeServerReadClientMessage(PipeHandle, (CHAR *)Buffer, TEST_CASE_MAXIMUM_BUFFERS_TO_COMMUNICATE);
if (!ReadBytes)
{
diff --git a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pe.cpp b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pe.cpp
index abaef694..7fb5a8f4 100644
--- a/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pe.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/commands/meta-commands/pe.cpp
@@ -11,8 +11,6 @@
*/
#include "pch.h"
-using namespace std;
-
/**
* @brief help of the .pe command
*
@@ -23,8 +21,8 @@ CommandPeHelp()
{
ShowMessages(".pe : parses portable executable (PE) files, displays header metadata, and dumps sections.\n\n");
- ShowMessages("syntax : \t.pe header \n");
- ShowMessages("syntax : \t.pe section \n");
+ ShowMessages("syntax : \t.pe [header] [FilePath (string)]\n");
+ ShowMessages("syntax : \t.pe [section] [SectionName (string)] [FilePath (string)]\n");
ShowMessages("\n.pe section dumps are capped at 1 MiB per matching section and 4 MiB total.\n");
ShowMessages("\n");
diff --git a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
index b535563d..3ce28f1e 100644
--- a/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/user-level/pe-parser.cpp
@@ -11,39 +11,17 @@
*/
#include "pch.h"
-#include
-#include
-#include
-
-#include "header/pe-image-reader.h"
-
-typedef struct _RICH_HEADER_INFO
-{
- int Size;
- char * PtrToBuffer;
- int Entries;
-} RICH_HEADER_INFO, *PRICH_HEADER_INFO;
-
-typedef struct _RICH_HEADER_ENTRY
-{
- WORD ProdID;
- WORD BuildID;
- DWORD UseCount;
-} RICH_HEADER_ENTRY, *PRICH_HEADER_ENTRY;
-
-typedef struct _RICH_HEADER
-{
- PRICH_HEADER_ENTRY Entries;
-} RICH_HEADER, *PRICH_HEADER;
-
-typedef struct _PE_RAW_SECTION_RANGE
-{
- ULONGLONG Start;
- ULONGLONG End;
- const IMAGE_SECTION_HEADER * Section;
-} PE_RAW_SECTION_RANGE, *PPE_RAW_SECTION_RANGE;
-
-static const char *
+/**
+ * @brief Returns a human-readable name for a PE subsystem identifier
+ *
+ * Maps the Subsystem field from IMAGE_OPTIONAL_HEADER to a descriptive string.
+ * Unknown subsystem values return "Unknown".
+ *
+ * @param Subsystem The Subsystem value from the PE optional header
+ *
+ * @return const CHAR* A static string describing the subsystem
+ */
+static const CHAR *
PeGetSubsystemName(WORD Subsystem)
{
switch (Subsystem)
@@ -61,6 +39,15 @@ PeGetSubsystemName(WORD Subsystem)
}
}
+/**
+ * @brief Prints the set DLL characteristics flags from a PE optional header
+ *
+ * Iterates a table of known IMAGE_DLLCHARACTERISTICS_* flag values and prints
+ * the name of each flag that is set in DllCharacteristics, separated by commas.
+ * Prints "None" when no flags are set.
+ *
+ * @param DllCharacteristics The DllCharacteristics field from the PE optional header
+ */
static VOID
PeShowDllCharacteristics(WORD DllCharacteristics)
{
@@ -69,7 +56,7 @@ PeShowDllCharacteristics(WORD DllCharacteristics)
struct DLL_CHARACTERISTIC_NAME
{
WORD Flag;
- const char * Name;
+ const CHAR * Name;
};
static const DLL_CHARACTERISTIC_NAME CommonDllCharacteristics[] = {
@@ -86,11 +73,11 @@ PeShowDllCharacteristics(WORD DllCharacteristics)
{IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE, "Terminal Server Aware"},
};
- for (UINT32 i = 0; i < RTL_NUMBER_OF(CommonDllCharacteristics); i++)
+ for (UINT32 Index = 0; Index < RTL_NUMBER_OF(CommonDllCharacteristics); Index++)
{
- if ((DllCharacteristics & CommonDllCharacteristics[i].Flag) == CommonDllCharacteristics[i].Flag)
+ if ((DllCharacteristics & CommonDllCharacteristics[Index].Flag) == CommonDllCharacteristics[Index].Flag)
{
- ShowMessages("%s%s", AnyFlag ? ", " : "", CommonDllCharacteristics[i].Name);
+ ShowMessages("%s%s", AnyFlag ? ", " : "", CommonDllCharacteristics[Index].Name);
AnyFlag = TRUE;
}
}
@@ -101,6 +88,15 @@ PeShowDllCharacteristics(WORD DllCharacteristics)
}
}
+/**
+ * @brief Prints the raw file offset corresponding to the PE entrypoint RVA
+ *
+ * Resolves AddressOfEntryPoint through the section table to obtain a file offset
+ * and prints it. Prints "not mapped" when the RVA cannot be resolved.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param AddressOfEntryPoint The AddressOfEntryPoint field from the PE optional header
+ */
static VOID
PeShowEntrypointFileOffset(PPE_IMAGE_READER Reader, DWORD AddressOfEntryPoint)
{
@@ -116,10 +112,21 @@ PeShowEntrypointFileOffset(PPE_IMAGE_READER Reader, DWORD AddressOfEntryPoint)
}
}
-static const char *
+/**
+ * @brief Returns the name of a PE data directory by its index
+ *
+ * Maps IMAGE_DIRECTORY_ENTRY_* index values to descriptive strings using
+ * the standard ordering defined in the PE specification. Returns "Unknown"
+ * for indices at or beyond IMAGE_NUMBEROF_DIRECTORY_ENTRIES.
+ *
+ * @param Index Zero-based data directory index (IMAGE_DIRECTORY_ENTRY_*)
+ *
+ * @return const CHAR* A static string naming the data directory
+ */
+static const CHAR *
PeGetDataDirectoryName(UINT32 Index)
{
- static const char * DirectoryNames[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] = {
+ static const CHAR * DirectoryNames[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] = {
"Export Table",
"Import Table",
"Resource Table",
@@ -146,6 +153,18 @@ PeGetDataDirectoryName(UINT32 Index)
return "Unknown";
}
+/**
+ * @brief Adds two DWORD values with overflow detection
+ *
+ * Returns FALSE without modifying Result when the addition would exceed MAXDWORD;
+ * otherwise writes the sum to *Result and returns TRUE.
+ *
+ * @param Left First operand
+ * @param Right Second operand
+ * @param Result Output pointer that receives the sum on success; must not be NULL
+ *
+ * @return BOOLEAN TRUE if the addition succeeded, FALSE on overflow or NULL pointer
+ */
static BOOLEAN
PeAddDword(DWORD Left, DWORD Right, DWORD * Result)
{
@@ -158,6 +177,18 @@ PeAddDword(DWORD Left, DWORD Right, DWORD * Result)
return TRUE;
}
+/**
+ * @brief Adds two ULONGLONG values with overflow detection
+ *
+ * Returns FALSE without modifying Result when the addition would overflow a
+ * 64-bit unsigned integer; otherwise writes the sum to *Result and returns TRUE.
+ *
+ * @param Left First operand
+ * @param Right Second operand
+ * @param Result Output pointer that receives the sum on success; must not be NULL
+ *
+ * @return BOOLEAN TRUE if the addition succeeded, FALSE on overflow or NULL pointer
+ */
static BOOLEAN
PeAddUlonglong(ULONGLONG Left, ULONGLONG Right, ULONGLONG * Result)
{
@@ -170,6 +201,17 @@ PeAddUlonglong(ULONGLONG Left, ULONGLONG Right, ULONGLONG * Result)
return TRUE;
}
+/**
+ * @brief Comparator for sorting PE_RAW_SECTION_RANGE entries by ascending start offset
+ *
+ * Intended for use with qsort(). Entries with the same Start are further ordered
+ * by End in ascending order.
+ *
+ * @param Left Pointer to the first PE_RAW_SECTION_RANGE to compare
+ * @param Right Pointer to the second PE_RAW_SECTION_RANGE to compare
+ *
+ * @return INT Negative if Left < Right, positive if Left > Right, zero if equal
+ */
static INT
PeCompareRawSectionRange(const VOID * Left, const VOID * Right)
{
@@ -199,6 +241,19 @@ PeCompareRawSectionRange(const VOID * Left, const VOID * Right)
return 0;
}
+/**
+ * @brief Checks whether an RVA range is fully contained within another RVA range
+ *
+ * Both ranges are expressed as a base RVA and a size. Returns FALSE if any
+ * addition overflows or if [Rva, Rva+Size) extends outside [RangeRva, RangeRva+RangeSize).
+ *
+ * @param RangeRva Base RVA of the enclosing range
+ * @param RangeSize Size of the enclosing range in bytes
+ * @param Rva Base RVA of the range to test
+ * @param Size Size of the range to test in bytes
+ *
+ * @return BOOLEAN TRUE if [Rva, Rva+Size) lies entirely within [RangeRva, RangeRva+RangeSize)
+ */
static BOOLEAN
PeRvaContainsRange(DWORD RangeRva, DWORD RangeSize, DWORD Rva, DWORD Size)
{
@@ -213,6 +268,19 @@ PeRvaContainsRange(DWORD RangeRva, DWORD RangeSize, DWORD Rva, DWORD Size)
return Rva >= RangeRva && RvaEnd <= RangeEnd;
}
+/**
+ * @brief Returns a validated pointer into the image at the location mapped by an RVA
+ *
+ * Translates Rva to a raw file offset via PeImageReaderRvaToFileOffset and then
+ * validates the range through PeImageReaderGetPointerAtOffset.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param Rva Relative virtual address to look up
+ * @param Length Number of bytes that must be accessible at the resolved offset
+ * @param Pointer Output pointer set to the resolved image location on success; must not be NULL
+ *
+ * @return BOOLEAN TRUE on success, FALSE if the RVA cannot be resolved or is out of bounds
+ */
static BOOLEAN
PeGetPointerAtRva(PPE_IMAGE_READER Reader, DWORD Rva, DWORD Length, const BYTE ** Pointer)
{
@@ -233,6 +301,23 @@ typedef enum _PE_ASCII_STRING_STATUS
PeAsciiStringTruncated,
} PE_ASCII_STRING_STATUS;
+/**
+ * @brief Reads an ASCII string from the image at the given RVA
+ *
+ * Reads up to MaxLength bytes starting at Rva, stopping at the first null
+ * terminator. Non-printable bytes are replaced with '.'. The output buffer is
+ * always null-terminated. Returns PeAsciiStringInvalid if any mapped byte
+ * cannot be resolved, PeAsciiStringOk when the null terminator is found within
+ * MaxLength, and PeAsciiStringTruncated otherwise.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param Rva Starting RVA of the string
+ * @param MaxLength Maximum number of bytes to scan
+ * @param Buffer Destination buffer for the null-terminated output
+ * @param BufferSize Size of Buffer in bytes; must be at least 1
+ *
+ * @return PE_ASCII_STRING_STATUS Result indicating whether the string was read successfully
+ */
static PE_ASCII_STRING_STATUS
PeReadAsciiStringAtRva(PPE_IMAGE_READER Reader, DWORD Rva, DWORD MaxLength, CHAR * Buffer, SIZE_T BufferSize)
{
@@ -269,7 +354,14 @@ PeReadAsciiStringAtRva(PPE_IMAGE_READER Reader, DWORD Rva, DWORD MaxLength, CHAR
return PeAsciiStringTruncated;
}
-static const char *
+/**
+ * @brief Returns a human-readable description of a PE_ASCII_STRING_STATUS value
+ *
+ * @param Status The status value returned by PeReadAsciiStringAtRva or related functions
+ *
+ * @return const CHAR* A static string describing the status
+ */
+static const CHAR *
PeAsciiStatusName(PE_ASCII_STRING_STATUS Status)
{
switch (Status)
@@ -283,6 +375,18 @@ PeAsciiStatusName(PE_ASCII_STRING_STATUS Status)
}
}
+/**
+ * @brief Converts an absolute virtual address to a relative virtual address
+ *
+ * Subtracts ImageBase from Va and checks that the difference fits in a DWORD.
+ * Returns FALSE when Va < ImageBase or when the difference exceeds MAXDWORD.
+ *
+ * @param Va Absolute virtual address to convert
+ * @param ImageBase Base address of the image
+ * @param Rva Output pointer that receives the RVA on success; must not be NULL
+ *
+ * @return BOOLEAN TRUE on success, FALSE when the conversion is not representable
+ */
static BOOLEAN
PeVaToRva(ULONGLONG Va, ULONGLONG ImageBase, DWORD * Rva)
{
@@ -303,6 +407,16 @@ PeVaToRva(ULONGLONG Va, ULONGLONG ImageBase, DWORD * Rva)
return TRUE;
}
+/**
+ * @brief Reads a DWORD from a byte buffer at the specified byte offset
+ *
+ * Uses CopyMemory to avoid strict-aliasing and alignment issues.
+ *
+ * @param Buffer Pointer to the source byte buffer
+ * @param Offset Byte offset within Buffer at which to read
+ *
+ * @return DWORD The 32-bit value read from Buffer + Offset
+ */
static DWORD
PeReadDwordFromBuffer(const BYTE * Buffer, SIZE_T Offset)
{
@@ -312,6 +426,16 @@ PeReadDwordFromBuffer(const BYTE * Buffer, SIZE_T Offset)
return Value;
}
+/**
+ * @brief Reads a WORD from a byte buffer at the specified byte offset
+ *
+ * Uses CopyMemory to avoid strict-aliasing and alignment issues.
+ *
+ * @param Buffer Pointer to the source byte buffer
+ * @param Offset Byte offset within Buffer at which to read
+ *
+ * @return WORD The 16-bit value read from Buffer + Offset
+ */
static WORD
PeReadWordFromBuffer(const BYTE * Buffer, SIZE_T Offset)
{
@@ -321,6 +445,16 @@ PeReadWordFromBuffer(const BYTE * Buffer, SIZE_T Offset)
return Value;
}
+/**
+ * @brief Reads a BYTE from a byte buffer at the specified byte offset
+ *
+ * Uses CopyMemory to provide a consistent read interface.
+ *
+ * @param Buffer Pointer to the source byte buffer
+ * @param Offset Byte offset within Buffer at which to read
+ *
+ * @return BYTE The 8-bit value read from Buffer + Offset
+ */
static BYTE
PeReadByteFromBuffer(const BYTE * Buffer, SIZE_T Offset)
{
@@ -330,6 +464,16 @@ PeReadByteFromBuffer(const BYTE * Buffer, SIZE_T Offset)
return Value;
}
+/**
+ * @brief Reads a ULONGLONG from a byte buffer at the specified byte offset
+ *
+ * Uses CopyMemory to avoid strict-aliasing and alignment issues.
+ *
+ * @param Buffer Pointer to the source byte buffer
+ * @param Offset Byte offset within Buffer at which to read
+ *
+ * @return ULONGLONG The 64-bit value read from Buffer + Offset
+ */
static ULONGLONG
PeReadQwordFromBuffer(const BYTE * Buffer, SIZE_T Offset)
{
@@ -339,12 +483,40 @@ PeReadQwordFromBuffer(const BYTE * Buffer, SIZE_T Offset)
return Value;
}
+/**
+ * @brief Reads a pointer-sized value from a load configuration structure
+ *
+ * Reads a DWORD when Is32Bit is TRUE (PE32 pointer), or a QWORD when FALSE
+ * (PE32+ pointer), returning the result as a ULONGLONG in both cases.
+ *
+ * @param Buffer Pointer to the load configuration byte buffer
+ * @param Offset Byte offset within Buffer of the field to read
+ * @param Is32Bit TRUE to read a 32-bit pointer, FALSE to read a 64-bit pointer
+ *
+ * @return ULONGLONG The pointer value widened to 64 bits
+ */
static ULONGLONG
PeReadLoadConfigPointer(const BYTE * Buffer, SIZE_T Offset, BOOLEAN Is32Bit)
{
return Is32Bit ? PeReadDwordFromBuffer(Buffer, Offset) : PeReadQwordFromBuffer(Buffer, Offset);
}
+/**
+ * @brief Reads an ASCII string from a raw byte pointer up to MaxLength bytes
+ *
+ * Scans StringPointer[0..MaxLength-1] for a null terminator. Non-printable
+ * bytes are replaced with '.'. The output is always null-terminated.
+ * Returns PeAsciiStringOk when the terminator is found, PeAsciiStringTruncated
+ * when MaxLength is exhausted without a terminator, and PeAsciiStringInvalid
+ * on NULL arguments.
+ *
+ * @param StringPointer Pointer to the source ASCII data; must not be NULL
+ * @param MaxLength Maximum number of bytes to scan
+ * @param Buffer Destination buffer for the null-terminated output
+ * @param BufferSize Size of Buffer in bytes; must be at least 1
+ *
+ * @return PE_ASCII_STRING_STATUS Result indicating whether the string was read successfully
+ */
static PE_ASCII_STRING_STATUS
PeReadAsciiStringFromBuffer(const BYTE * StringPointer, DWORD MaxLength, CHAR * Buffer, SIZE_T BufferSize)
{
@@ -373,6 +545,22 @@ PeReadAsciiStringFromBuffer(const BYTE * StringPointer, DWORD MaxLength, CHAR *
return PeAsciiStringTruncated;
}
+/**
+ * @brief Reads an ASCII string located at a fixed offset within a PE data directory
+ *
+ * Computes the target RVA as Directory->VirtualAddress + Offset, clamps the
+ * maximum read length to the remaining bytes in the directory, and delegates
+ * to PeReadAsciiStringAtRva.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param Directory Pointer to the data directory entry that contains the string
+ * @param Offset Byte offset within the directory at which the string begins
+ * @param MaxLength Maximum number of bytes to scan for the null terminator
+ * @param Buffer Destination buffer for the null-terminated output
+ * @param BufferSize Size of Buffer in bytes
+ *
+ * @return PE_ASCII_STRING_STATUS Result indicating whether the string was read successfully
+ */
static PE_ASCII_STRING_STATUS
PeReadAsciiStringInDirectory(PPE_IMAGE_READER Reader,
const IMAGE_DATA_DIRECTORY * Directory,
@@ -392,6 +580,20 @@ PeReadAsciiStringInDirectory(PPE_IMAGE_READER Reader,
return PeReadAsciiStringAtRva(Reader, StringRva, Remaining < MaxLength ? Remaining : MaxLength, Buffer, BufferSize);
}
+/**
+ * @brief Computes the standard PE file checksum
+ *
+ * Implements the algorithm used by the Windows PE loader: sums all 16-bit
+ * words of the image (treating the checksum field itself as zero), folds the
+ * carry, and adds the total image size. The result matches the value stored
+ * in the optional header CheckSum field for well-formed images.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param ChecksumOffset Raw file offset of the 4-byte checksum field (excluded from summation)
+ * @param Checksum Output pointer that receives the computed checksum on success
+ *
+ * @return BOOLEAN TRUE on success, FALSE on NULL arguments or invalid checksum offset
+ */
static BOOLEAN
PeComputeChecksum(PPE_IMAGE_READER Reader, SIZE_T ChecksumOffset, DWORD * Checksum)
{
@@ -428,6 +630,17 @@ PeComputeChecksum(PPE_IMAGE_READER Reader, SIZE_T ChecksumOffset, DWORD * Checks
return TRUE;
}
+/**
+ * @brief Prints the stored and computed PE optional header checksums
+ *
+ * Displays HeaderChecksum as read from the optional header and, when the image
+ * is small enough, also computes and displays the expected value via
+ * PeComputeChecksum. Skips computation for images larger than 64 MiB.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER (may be NULL to skip computation)
+ * @param HeaderChecksum Checksum value as stored in the PE optional header
+ * @param ChecksumOffset Raw file offset of the checksum field within the image
+ */
static VOID
PeShowChecksum(PPE_IMAGE_READER Reader, DWORD HeaderChecksum, SIZE_T ChecksumOffset)
{
@@ -451,6 +664,17 @@ PeShowChecksum(PPE_IMAGE_READER Reader, DWORD HeaderChecksum, SIZE_T ChecksumOff
}
}
+/**
+ * @brief Prints the contents of the PE certificate (security) directory
+ *
+ * The certificate directory is stored at a raw file offset rather than an RVA.
+ * Iterates WIN_CERTIFICATE entries, printing the file offset, length, revision,
+ * and type of each. Stops when the directory is empty, invalid, or a certificate
+ * length or alignment error is detected.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param SecurityDirectory Pointer to the IMAGE_DIRECTORY_ENTRY_SECURITY data directory entry
+ */
static VOID
PeShowCertificateTable(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * SecurityDirectory)
{
@@ -518,6 +742,17 @@ PeShowCertificateTable(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * Sec
}
}
+/**
+ * @brief Prints base relocation blocks and per-type entry counts
+ *
+ * Iterates IMAGE_BASE_RELOCATION blocks within the .reloc directory,
+ * printing the page RVA, block size, and entry count for each. Accumulates
+ * a per-type summary and emits warnings for malformed or oversized data.
+ * Processing stops at 0x10000 blocks or 0x100000 entries.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param RelocDirectory Pointer to the IMAGE_DIRECTORY_ENTRY_BASERELOC data directory entry
+ */
static VOID
PeShowBaseRelocations(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * RelocDirectory)
{
@@ -654,6 +889,16 @@ PeShowBaseRelocations(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * Relo
}
}
+/**
+ * @brief Prints bound import descriptors and their forwarder references
+ *
+ * Iterates IMAGE_BOUND_IMPORT_DESCRIPTOR entries, printing the module name,
+ * timestamp, and forwader reference count for each. Also expands forwader
+ * references inline. Processing stops after 0x1000 descriptors.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param BoundImportDirectory Pointer to the IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT data directory entry
+ */
static VOID
PeShowBoundImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * BoundImportDirectory)
{
@@ -697,11 +942,11 @@ PeShowBoundImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * BoundIm
CHAR ModuleName[MaxNameLength + 1] = {0};
PE_ASCII_STRING_STATUS NameStatus = PeReadAsciiStringInDirectory(Reader,
- BoundImportDirectory,
- OffsetModuleName,
- MaxNameLength,
- ModuleName,
- sizeof(ModuleName));
+ BoundImportDirectory,
+ OffsetModuleName,
+ MaxNameLength,
+ ModuleName,
+ sizeof(ModuleName));
ShowMessages("\n[%u] module %s timestamp %#x forwarder refs %u",
DescriptorCount,
@@ -761,6 +1006,17 @@ PeShowBoundImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * BoundIm
}
}
+/**
+ * @brief Computes the 64-bit FNV-1a hash of a byte buffer
+ *
+ * Uses the standard FNV-1a parameters: offset basis 14695981039346656037
+ * and prime 1099511628211. Suitable for non-cryptographic fingerprinting.
+ *
+ * @param Data Pointer to the input data
+ * @param Size Number of bytes to hash
+ *
+ * @return ULONGLONG The 64-bit FNV-1a hash value
+ */
static ULONGLONG
PeFnv1a64(const BYTE * Data, DWORD Size)
{
@@ -775,6 +1031,19 @@ PeFnv1a64(const BYTE * Data, DWORD Size)
return Hash;
}
+/**
+ * @brief Computes the Shannon entropy of a byte buffer
+ *
+ * Calculates the frequency of each byte value (0-255) and applies the
+ * standard information-entropy formula. A return value near 8.0 indicates
+ * high entropy (e.g. compressed or encrypted data); values near 0.0 indicate
+ * low entropy (e.g. sparse, mostly-zero data).
+ *
+ * @param Data Pointer to the input data
+ * @param Size Number of bytes to analyse
+ *
+ * @return double Shannon entropy in bits per byte (0.0 to 8.0)
+ */
static double
PeCalculateEntropy(const BYTE * Data, DWORD Size)
{
@@ -798,6 +1067,15 @@ PeCalculateEntropy(const BYTE * Data, DWORD Size)
return Entropy;
}
+/**
+ * @brief Reads a 16-bit word from the image at the location mapped by an RVA
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param Rva Relative virtual address to read from
+ * @param Value Output pointer that receives the WORD value on success; must not be NULL
+ *
+ * @return BOOLEAN TRUE on success, FALSE if the RVA cannot be resolved or Value is NULL
+ */
static BOOLEAN
PeReadWordAtRva(PPE_IMAGE_READER Reader, DWORD Rva, WORD * Value)
{
@@ -812,6 +1090,19 @@ PeReadWordAtRva(PPE_IMAGE_READER Reader, DWORD Rva, WORD * Value)
return TRUE;
}
+/**
+ * @brief Reads an import/export thunk value (DWORD or QWORD) from an RVA
+ *
+ * Reads sizeof(DWORD) bytes when Is32Bit is TRUE, or sizeof(ULONGLONG) bytes
+ * when FALSE, and widens the result to a ULONGLONG.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param Rva Relative virtual address of the thunk entry
+ * @param Is32Bit TRUE to read a 32-bit thunk, FALSE to read a 64-bit thunk
+ * @param Value Output pointer that receives the thunk value on success; must not be NULL
+ *
+ * @return BOOLEAN TRUE on success, FALSE if the RVA cannot be resolved or Value is NULL
+ */
static BOOLEAN
PeReadThunkAtRva(PPE_IMAGE_READER Reader, DWORD Rva, BOOLEAN Is32Bit, ULONGLONG * Value)
{
@@ -837,6 +1128,15 @@ PeReadThunkAtRva(PPE_IMAGE_READER Reader, DWORD Rva, BOOLEAN Is32Bit, ULONGLONG
return TRUE;
}
+/**
+ * @brief Prints a named resource type identifier and its occurrence count
+ *
+ * Maps well-known RT_* integer type identifiers (1-12, 14, 16, 24) to
+ * human-readable names. Unknown or unnamed type IDs are silently ignored.
+ *
+ * @param TypeId Numeric resource type identifier (RT_* value)
+ * @param Count Number of resources of this type found in the resource directory
+ */
static VOID
PeShowResourceTypeCount(DWORD TypeId, DWORD Count)
{
@@ -900,6 +1200,18 @@ PeShowResourceTypeCount(DWORD TypeId, DWORD Count)
}
}
+/**
+ * @brief Traverses and prints the PE resource directory tree
+ *
+ * Performs an iterative depth-first walk of the three-level resource directory
+ * (type / name or id / language), printing directory and data-entry statistics.
+ * Accumulates per-type counts for well-known resource types and reports total
+ * declared and mapped data bytes. Processing is capped at 0x4000 nodes and
+ * 0x10000 entries to prevent runaway on corrupt images.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param ResourceDirectory Pointer to the IMAGE_DIRECTORY_ENTRY_RESOURCE data directory entry
+ */
static VOID
PeShowResources(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ResourceDirectory)
{
@@ -1196,6 +1508,20 @@ PeShowResources(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ResourceDi
delete[] Visited;
}
+/**
+ * @brief Prints RUNTIME_FUNCTION entries from the x64 exception directory
+ *
+ * Decodes IMAGE_RUNTIME_FUNCTION_ENTRY records for AMD64 images, printing
+ * the begin address, end address, unwind RVA, and key unwind info fields
+ * for the first 0x20 entries. For non-AMD64 machines the directory size
+ * is reported without per-entry decoding. Processing is capped at 0x100000
+ * entries.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param ExceptionDirectory Pointer to the IMAGE_DIRECTORY_ENTRY_EXCEPTION data directory entry
+ * @param Machine Machine type from the PE file header (IMAGE_FILE_MACHINE_*)
+ * @param Is32Bit TRUE if the PE image is 32-bit
+ */
static VOID
PeShowExceptions(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ExceptionDirectory, WORD Machine, BOOLEAN Is32Bit)
{
@@ -1339,6 +1665,20 @@ PeShowExceptions(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * Exception
}
}
+/**
+ * @brief Resolves a delay-import address field to a relative virtual address
+ *
+ * Handles both the legacy VA-based format (UsesRva == FALSE) and the newer
+ * RVA-based format (UsesRva == TRUE). For VA-based descriptors the address is
+ * converted via PeVaToRva using the supplied image base.
+ *
+ * @param Address Raw address value read from the delay-import descriptor
+ * @param UsesRva TRUE if the descriptor uses RVAs, FALSE if it uses VAs
+ * @param ImageBase Image base used for VA-to-RVA conversion when UsesRva is FALSE
+ * @param Rva Output pointer that receives the resolved RVA on success; must not be NULL
+ *
+ * @return BOOLEAN TRUE on success, FALSE when the address cannot be converted to an RVA
+ */
static BOOLEAN
PeResolveDelayImportAddress(ULONGLONG Address, BOOLEAN UsesRva, ULONGLONG ImageBase, DWORD * Rva)
{
@@ -1361,6 +1701,18 @@ PeResolveDelayImportAddress(ULONGLONG Address, BOOLEAN UsesRva, ULONGLONG ImageB
return PeVaToRva(Address, ImageBase, Rva);
}
+/**
+ * @brief Prints delay-import descriptors and their imported function names or ordinals
+ *
+ * Iterates ImgDelayDescr records, resolving DLL names and import thunk arrays.
+ * Supports both legacy VA-based and RVA-based descriptor formats. Processing
+ * is capped at 0x1000 descriptors and 0x2000 total imported symbols.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param DelayImportDirectory Pointer to the IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT data directory entry
+ * @param Is32Bit TRUE if the PE image is 32-bit
+ * @param ImageBase Preferred image base used for VA-to-RVA conversion
+ */
static VOID
PeShowDelayImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * DelayImportDirectory, BOOLEAN Is32Bit, ULONGLONG ImageBase)
{
@@ -1451,10 +1803,10 @@ PeShowDelayImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * DelayIm
CHAR DllName[MaxDllNameLength + 1] = {0};
PE_ASCII_STRING_STATUS DllNameStatus = PeReadAsciiStringAtRva(Reader,
- NameRva,
- MaxDllNameLength,
- DllName,
- sizeof(DllName));
+ NameRva,
+ MaxDllNameLength,
+ DllName,
+ sizeof(DllName));
if (DllNameStatus != PeAsciiStringOk)
{
ShowMessages("\n[%u] DLL name %s", DescriptorIndex, PeAsciiStatusName(DllNameStatus));
@@ -1529,10 +1881,10 @@ PeShowDelayImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * DelayIm
CHAR ImportName[MaxImportNameLength + 1] = {0};
PE_ASCII_STRING_STATUS ImportNameStatus = PeReadAsciiStringAtRva(Reader,
- ImportNameRva,
- MaxImportNameLength,
- ImportName,
- sizeof(ImportName));
+ ImportNameRva,
+ MaxImportNameLength,
+ ImportName,
+ sizeof(ImportName));
if (ImportNameStatus != PeAsciiStringOk)
{
ShowMessages("\n%-36s%#x, %s", "Warning, invalid delay import name RVA :", ImportNameRva, PeAsciiStatusName(ImportNameStatus));
@@ -1565,6 +1917,19 @@ PeShowDelayImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * DelayIm
}
}
+/**
+ * @brief Prints the RVA and size of an IMAGE_DATA_DIRECTORY embedded within the CLR runtime header
+ *
+ * Reads two consecutive DWORDs from the CLR header buffer at Offset to obtain
+ * a sub-directory RVA and size. Also reports whether the range is mapped
+ * within the image.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param Header Pointer to the CLR runtime header byte buffer
+ * @param AvailableSize Number of validated bytes available in Header
+ * @param Offset Byte offset within Header of the IMAGE_DATA_DIRECTORY to read
+ * @param Label Column label to print before the values
+ */
static VOID
PeShowClrDirectoryBounds(PPE_IMAGE_READER Reader, const BYTE * Header, DWORD AvailableSize, SIZE_T Offset, const CHAR * Label)
{
@@ -1584,6 +1949,16 @@ PeShowClrDirectoryBounds(PPE_IMAGE_READER Reader, const BYTE * Header, DWORD Ava
}
}
+/**
+ * @brief Prints CLR (.NET) runtime header information
+ *
+ * Reads the IMAGE_COR20_HEADER from the CLR data directory, printing the
+ * runtime version, flags, entry point token or RVA, and the bounds of each
+ * embedded sub-directory (metadata, resources, strong name, etc.).
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param ClrDirectory Pointer to the IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR data directory entry
+ */
static VOID
PeShowClrRuntime(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ClrDirectory)
{
@@ -1641,6 +2016,18 @@ PeShowClrRuntime(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ClrDirect
PeShowClrDirectoryBounds(Reader, Header, AvailableSize, 64, "Managed native header :");
}
+/**
+ * @brief Prints Thread Local Storage (TLS) directory fields and TLS callback addresses
+ *
+ * Reads IMAGE_TLS_DIRECTORY32 or IMAGE_TLS_DIRECTORY64 depending on Is32Bit and
+ * prints all fields. Then walks the null-terminated callback VA array, converting
+ * each entry to an RVA and file offset. Processing stops at 0x200 callbacks.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param TlsDirectory Pointer to the IMAGE_DIRECTORY_ENTRY_TLS data directory entry
+ * @param Is32Bit TRUE if the PE image is 32-bit
+ * @param ImageBase Preferred image base used for VA-to-RVA conversion
+ */
static VOID
PeShowTls(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * TlsDirectory, BOOLEAN Is32Bit, ULONGLONG ImageBase)
{
@@ -1739,6 +2126,17 @@ PeShowTls(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * TlsDirectory, BO
ShowMessages("\n%-36s%#x", "Warning, TLS callback cap reached :", MaxCallbacks);
}
+/**
+ * @brief Prints CodeView debug information embedded in a debug directory entry
+ *
+ * Handles both the RSDS (PDB 7.0) and NB10 (PDB 2.0) CodeView formats.
+ * For RSDS entries, prints the GUID, age, and PDB path. For NB10 entries,
+ * prints the offset, signature, age, and PDB path. Silently returns for
+ * non-CodeView entries or entries with insufficient data.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param Entry Pointer to the IMAGE_DEBUG_DIRECTORY entry to decode
+ */
static VOID
PeShowDebugCodeView(PPE_IMAGE_READER Reader, const IMAGE_DEBUG_DIRECTORY * Entry)
{
@@ -1818,6 +2216,17 @@ PeShowDebugCodeView(PPE_IMAGE_READER Reader, const IMAGE_DEBUG_DIRECTORY * Entry
}
}
+/**
+ * @brief Prints all IMAGE_DEBUG_DIRECTORY entries in the debug data directory
+ *
+ * Iterates the debug directory, printing characteristics, timestamp, version,
+ * type, size, and address fields for each entry. Also validates the raw data
+ * bounds and delegates to PeShowDebugCodeView for CodeView entries.
+ * Processing is capped at 0x1000 entries.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param DebugDirectory Pointer to the IMAGE_DIRECTORY_ENTRY_DEBUG data directory entry
+ */
static VOID
PeShowDebug(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * DebugDirectory)
{
@@ -1892,12 +2301,35 @@ PeShowDebug(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * DebugDirectory
}
}
+/**
+ * @brief Checks whether a load configuration structure contains a specific field
+ *
+ * Returns TRUE when the range [Offset, Offset + FieldSize) lies entirely within
+ * the first AvailableSize bytes of the load config buffer.
+ *
+ * @param AvailableSize Number of bytes available in the load config buffer
+ * @param Offset Byte offset of the field within the load config structure
+ * @param FieldSize Size of the field in bytes
+ *
+ * @return BOOLEAN TRUE if the field is present, FALSE if it is beyond AvailableSize
+ */
static BOOLEAN
PeLoadConfigHasField(DWORD AvailableSize, SIZE_T Offset, SIZE_T FieldSize)
{
return Offset <= AvailableSize && FieldSize <= AvailableSize - Offset;
}
+/**
+ * @brief Prints a DWORD field from the load config structure if it is present
+ *
+ * Uses PeLoadConfigHasField to verify the field is within AvailableSize before
+ * reading and printing the value with the supplied label.
+ *
+ * @param Config Pointer to the load configuration byte buffer
+ * @param AvailableSize Number of validated bytes in Config
+ * @param Offset Byte offset of the DWORD field within Config
+ * @param Label Column label to print before the value
+ */
static VOID
PeShowLoadConfigDword(const BYTE * Config, DWORD AvailableSize, SIZE_T Offset, const CHAR * Label)
{
@@ -1907,6 +2339,18 @@ PeShowLoadConfigDword(const BYTE * Config, DWORD AvailableSize, SIZE_T Offset, c
}
}
+/**
+ * @brief Prints a pointer-sized field from the load config structure if it is present
+ *
+ * Reads sizeof(DWORD) or sizeof(ULONGLONG) depending on Is32Bit, verifies
+ * presence with PeLoadConfigHasField, and prints the value as a hex address.
+ *
+ * @param Config Pointer to the load configuration byte buffer
+ * @param AvailableSize Number of validated bytes in Config
+ * @param Offset Byte offset of the pointer field within Config
+ * @param Label Column label to print before the value
+ * @param Is32Bit TRUE to read a 32-bit pointer, FALSE for a 64-bit pointer
+ */
static VOID
PeShowLoadConfigPointer(const BYTE * Config, DWORD AvailableSize, SIZE_T Offset, const CHAR * Label, BOOLEAN Is32Bit)
{
@@ -1918,6 +2362,18 @@ PeShowLoadConfigPointer(const BYTE * Config, DWORD AvailableSize, SIZE_T Offset,
}
}
+/**
+ * @brief Prints a count field (pointer-sized) from the load config structure if present
+ *
+ * Behaves identically to PeShowLoadConfigPointer but formats the value as a
+ * decimal count rather than a hex address.
+ *
+ * @param Config Pointer to the load configuration byte buffer
+ * @param AvailableSize Number of validated bytes in Config
+ * @param Offset Byte offset of the count field within Config
+ * @param Label Column label to print before the value
+ * @param Is32Bit TRUE to read a 32-bit count, FALSE for a 64-bit count
+ */
static VOID
PeShowLoadConfigCount(const BYTE * Config, DWORD AvailableSize, SIZE_T Offset, const CHAR * Label, BOOLEAN Is32Bit)
{
@@ -1929,6 +2385,15 @@ PeShowLoadConfigCount(const BYTE * Config, DWORD AvailableSize, SIZE_T Offset, c
}
}
+/**
+ * @brief Prints the names of set guard control-flow flags from a load config guard flags field
+ *
+ * Iterates a table of known guard flag bitmasks and prints the name of each
+ * set bit. Reports "None" when no known flags are set, and appends the
+ * unknown bitmask when unrecognised bits are present.
+ *
+ * @param GuardFlags The GuardFlags field value from the load configuration structure
+ */
static VOID
PeShowLoadConfigGuardFlags(DWORD GuardFlags)
{
@@ -1938,7 +2403,7 @@ PeShowLoadConfigGuardFlags(DWORD GuardFlags)
struct GUARD_FLAG_NAME
{
DWORD Flag;
- const char * Name;
+ const CHAR * Name;
};
static const GUARD_FLAG_NAME GuardFlagNames[] = {
@@ -1983,6 +2448,18 @@ PeShowLoadConfigGuardFlags(DWORD GuardFlags)
}
}
+/**
+ * @brief Prints extended load config fields introduced in Windows 8.1 and later
+ *
+ * Handles guard address-taken IAT, guard long-jump tables, dynamic value
+ * relocation, CHPE metadata, RF (return-flow) guards, EH continuation tables,
+ * XFG, CastGuard, and memcpy pointer fields. Each field is printed only when
+ * AvailableSize covers its offset.
+ *
+ * @param Config Pointer to the load configuration byte buffer
+ * @param AvailableSize Number of validated bytes in Config
+ * @param Is32Bit TRUE for PE32 field offsets, FALSE for PE32+ field offsets
+ */
static VOID
PeShowLoadConfigModernFields(const BYTE * Config, DWORD AvailableSize, BOOLEAN Is32Bit)
{
@@ -2012,6 +2489,18 @@ PeShowLoadConfigModernFields(const BYTE * Config, DWORD AvailableSize, BOOLEAN I
PeShowLoadConfigPointer(Config, AvailableSize, Is32Bit ? 188 : 312, "Guard memcpy pointer :", Is32Bit);
}
+/**
+ * @brief Prints the load configuration directory
+ *
+ * Reads the self-describing size field at the start of the load config
+ * structure, clamps to the directory bounds, and prints security cookie,
+ * SEH handler table, guard CF fields, guard flags, and extended modern
+ * fields via helper functions.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param LoadConfigDirectory Pointer to the IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG data directory entry
+ * @param Is32Bit TRUE if the PE image is 32-bit
+ */
static VOID
PeShowLoadConfig(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * LoadConfigDirectory, BOOLEAN Is32Bit)
{
@@ -2086,6 +2575,17 @@ PeShowLoadConfig(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * LoadConfi
PeShowLoadConfigModernFields(Config, AvailableSize, Is32Bit);
}
+/**
+ * @brief Prints a summary of all PE data directory entries
+ *
+ * Iterates IMAGE_NUMBEROF_DIRECTORY_ENTRIES slots, printing the name, RVA
+ * (or file offset for the certificate entry), size, and mapping status of
+ * each. Entries beyond NumberOfRvaAndSizes are marked as "not declared".
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param Directories Pointer to the data directory array from the optional header
+ * @param NumberOfRvaAndSizes Value of NumberOfRvaAndSizes from the optional header
+ */
static VOID
PeShowDataDirectories(PPE_IMAGE_READER Reader,
const IMAGE_DATA_DIRECTORY * Directories,
@@ -2100,8 +2600,8 @@ PeShowDataDirectories(PPE_IMAGE_READER Reader,
for (UINT32 Index = 0; Index < IMAGE_NUMBEROF_DIRECTORY_ENTRIES; Index++)
{
- const char * Name = PeGetDataDirectoryName(Index);
- const char * AddressLabel = Index == IMAGE_DIRECTORY_ENTRY_SECURITY ? "file offset" : "RVA";
+ const CHAR * Name = PeGetDataDirectoryName(Index);
+ const CHAR * AddressLabel = Index == IMAGE_DIRECTORY_ENTRY_SECURITY ? "file offset" : "RVA";
if (Index >= NumberOfRvaAndSizes)
{
@@ -2167,6 +2667,23 @@ PeShowDataDirectories(PPE_IMAGE_READER Reader,
}
}
+/**
+ * @brief Prints overlay data information and PE layout warnings
+ *
+ * Identifies data appended after all mapped sections (overlay), checks for
+ * section overlaps and gaps, validates SizeOfImage, and emits warnings for
+ * mismatched optional header magic/machine combinations, sections that extend
+ * beyond SizeOfImage, and inconsistent section raw data boundaries.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param Machine Machine type from the PE file header
+ * @param OptionalHeaderMagic Magic value from the PE optional header
+ * @param AddressOfEntryPoint AddressOfEntryPoint from the PE optional header
+ * @param SizeOfImage SizeOfImage from the PE optional header
+ * @param SizeOfHeaders SizeOfHeaders from the PE optional header
+ * @param Directories Pointer to the data directory array
+ * @param NumberOfRvaAndSizes Value of NumberOfRvaAndSizes from the optional header
+ */
static VOID
PeShowOverlayAndWarnings(PPE_IMAGE_READER Reader,
WORD Machine,
@@ -2197,10 +2714,10 @@ PeShowOverlayAndWarnings(PPE_IMAGE_READER Reader,
ShowMessages("\n%-36s%s", "Warning :", "PE32 optional header with 64-bit machine type");
}
- for (UINT32 i = 0; i < Reader->FileHeader->NumberOfSections; i++)
+ for (UINT32 SectionIndex = 0; SectionIndex < Reader->FileHeader->NumberOfSections; SectionIndex++)
{
CHAR SectionName[IMAGE_SIZEOF_SHORT_NAME + 1];
- const IMAGE_SECTION_HEADER * Section = &Reader->SectionHeaders[i];
+ const IMAGE_SECTION_HEADER * Section = &Reader->SectionHeaders[SectionIndex];
DWORD VirtualSpan = Section->Misc.VirtualSize > Section->SizeOfRawData ? Section->Misc.VirtualSize : Section->SizeOfRawData;
DWORD VirtualEnd = 0;
@@ -2251,9 +2768,9 @@ PeShowOverlayAndWarnings(PPE_IMAGE_READER Reader,
}
else
{
- for (UINT32 i = 0; i < Reader->FileHeader->NumberOfSections; i++)
+ for (UINT32 SectionIndex = 0; SectionIndex < Reader->FileHeader->NumberOfSections; SectionIndex++)
{
- const IMAGE_SECTION_HEADER * Section = &Reader->SectionHeaders[i];
+ const IMAGE_SECTION_HEADER * Section = &Reader->SectionHeaders[SectionIndex];
ULONGLONG End;
if (Section->SizeOfRawData == 0 ||
@@ -2275,24 +2792,24 @@ PeShowOverlayAndWarnings(PPE_IMAGE_READER Reader,
qsort(Ranges, Count, sizeof(Ranges[0]), PeCompareRawSectionRange);
- for (UINT32 i = 1; i < Count; i++)
+ for (UINT32 RangeIndex = 1; RangeIndex < Count; RangeIndex++)
{
- if (Ranges[i].Start < Ranges[MaxEndIndex].End)
+ if (Ranges[RangeIndex].Start < Ranges[MaxEndIndex].End)
{
CHAR LeftName[IMAGE_SIZEOF_SHORT_NAME + 1];
CHAR RightName[IMAGE_SIZEOF_SHORT_NAME + 1];
PeImageReaderGetSectionName(Ranges[MaxEndIndex].Section, LeftName, sizeof(LeftName));
- PeImageReaderGetSectionName(Ranges[i].Section, RightName, sizeof(RightName));
+ PeImageReaderGetSectionName(Ranges[RangeIndex].Section, RightName, sizeof(RightName));
ShowMessages("\n%-36sraw data overlap detected between '%s' and '%s'; additional overlaps may be omitted",
"Warning :",
LeftName,
RightName);
}
- if (Ranges[i].End > Ranges[MaxEndIndex].End)
+ if (Ranges[RangeIndex].End > Ranges[MaxEndIndex].End)
{
- MaxEndIndex = i;
+ MaxEndIndex = RangeIndex;
}
}
}
@@ -2306,9 +2823,9 @@ PeShowOverlayAndWarnings(PPE_IMAGE_READER Reader,
BOOLEAN EntrypointFound = FALSE;
const IMAGE_SECTION_HEADER * EntrypointSection = NULL;
- for (UINT32 i = 0; i < Reader->FileHeader->NumberOfSections; i++)
+ for (UINT32 SectionIndex = 0; SectionIndex < Reader->FileHeader->NumberOfSections; SectionIndex++)
{
- const IMAGE_SECTION_HEADER * Section = &Reader->SectionHeaders[i];
+ const IMAGE_SECTION_HEADER * Section = &Reader->SectionHeaders[SectionIndex];
DWORD VirtualSpan = Section->Misc.VirtualSize > Section->SizeOfRawData ? Section->Misc.VirtualSize : Section->SizeOfRawData;
DWORD VirtualEnd = 0;
@@ -2366,6 +2883,19 @@ PeShowOverlayAndWarnings(PPE_IMAGE_READER Reader,
}
}
+/**
+ * @brief Prints all import descriptors and their imported function names or ordinals
+ *
+ * Iterates IMAGE_IMPORT_DESCRIPTOR records, resolving DLL names and walking
+ * the original-first-thunk (or first-thunk) arrays to print each imported
+ * symbol with its hint and IAT RVA. Warns when the null terminator descriptor
+ * is not found within the declared directory size. Processing is capped at
+ * 0x1000 descriptors and 0x2000 total imports.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param ImportDirectory Pointer to the IMAGE_DIRECTORY_ENTRY_IMPORT data directory entry
+ * @param Is32Bit TRUE if the PE image is 32-bit
+ */
static VOID
PeShowImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ImportDirectory, BOOLEAN Is32Bit)
{
@@ -2437,10 +2967,10 @@ PeShowImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ImportDirect
CHAR DllName[MaxDllNameLength + 1] = {0};
PE_ASCII_STRING_STATUS DllNameStatus = PeReadAsciiStringAtRva(Reader,
- Descriptor->Name,
- MaxDllNameLength,
- DllName,
- sizeof(DllName));
+ Descriptor->Name,
+ MaxDllNameLength,
+ DllName,
+ sizeof(DllName));
if (DllNameStatus != PeAsciiStringOk)
{
ShowMessages("\n[%u] DLL name %s", DescriptorIndex, PeAsciiStatusName(DllNameStatus));
@@ -2515,10 +3045,10 @@ PeShowImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ImportDirect
CHAR ImportName[MaxImportNameLength + 1] = {0};
PE_ASCII_STRING_STATUS ImportNameStatus = PeReadAsciiStringAtRva(Reader,
- ImportNameRva,
- MaxImportNameLength,
- ImportName,
- sizeof(ImportName));
+ ImportNameRva,
+ MaxImportNameLength,
+ ImportName,
+ sizeof(ImportName));
if (ImportNameStatus != PeAsciiStringOk)
{
ShowMessages("\n%-36s%#x, %s", "Warning, invalid import name RVA :", ImportNameRva, PeAsciiStatusName(ImportNameStatus));
@@ -2553,6 +3083,22 @@ PeShowImports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ImportDirect
}
}
+/**
+ * @brief Validates and retrieves a pointer to a PE export table array
+ *
+ * Computes the total byte size of the table as Count * EntrySize, verifies
+ * that the multiplication does not overflow, and then resolves the table RVA
+ * via PeGetPointerAtRva. When Count is zero *Pointer is set to NULL and TRUE
+ * is returned without any range check.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param TableRva RVA of the export table array
+ * @param Count Number of entries in the table
+ * @param EntrySize Size of each entry in bytes
+ * @param Pointer Output pointer set to the validated table location on success
+ *
+ * @return BOOLEAN TRUE on success, FALSE on overflow or if the RVA is not mapped
+ */
static BOOLEAN
PeValidateExportTable(PPE_IMAGE_READER Reader, DWORD TableRva, DWORD Count, DWORD EntrySize, const BYTE ** Pointer)
{
@@ -2573,6 +3119,20 @@ PeValidateExportTable(PPE_IMAGE_READER Reader, DWORD TableRva, DWORD Count, DWOR
return PeGetPointerAtRva(Reader, TableRva, TableSize, Pointer);
}
+/**
+ * @brief Prints one export entry including its ordinal, name, and function RVA or forwarder
+ *
+ * If FunctionRva falls within the export directory's RVA range the entry is
+ * treated as a forwarder string and that string is read and displayed.
+ * Otherwise the raw function RVA is printed.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param ExportDirectory Pointer to the IMAGE_DIRECTORY_ENTRY_EXPORT data directory entry
+ * @param Index Zero-based display index of this export entry
+ * @param Ordinal Export ordinal (base-adjusted)
+ * @param Name Export name string, or an error description if not available
+ * @param FunctionRva RVA of the exported function or forwarder string
+ */
static VOID
PeShowExportEntry(PPE_IMAGE_READER Reader,
const IMAGE_DATA_DIRECTORY * ExportDirectory,
@@ -2590,10 +3150,10 @@ PeShowExportEntry(PPE_IMAGE_READER Reader,
CHAR Forwarder[MaxForwarderLength + 1] = {0};
PE_ASCII_STRING_STATUS ForwarderStatus = PeReadAsciiStringAtRva(Reader,
- FunctionRva,
- ForwarderMaxLength,
- Forwarder,
- sizeof(Forwarder));
+ FunctionRva,
+ ForwarderMaxLength,
+ Forwarder,
+ sizeof(Forwarder));
if (ForwarderStatus == PeAsciiStringOk)
{
ShowMessages("\n[%u] ordinal %u name %s forwarder %s", Index, Ordinal, Name, Forwarder);
@@ -2609,6 +3169,18 @@ PeShowExportEntry(PPE_IMAGE_READER Reader,
ShowMessages("\n[%u] ordinal %u name %s RVA %#x", Index, Ordinal, Name, FunctionRva);
}
+/**
+ * @brief Prints the export directory including the export address, name, and ordinal tables
+ *
+ * Reads the IMAGE_EXPORT_DIRECTORY header, validates the three export tables
+ * (AddressOfFunctions, AddressOfNames, AddressOfNameOrdinals), and iterates
+ * all exported functions. Named exports are matched via the name-ordinal table;
+ * unnamed exports are printed with their ordinal. Forwarder strings are handled
+ * via PeShowExportEntry. Processing is capped at 0x2000 total exports.
+ *
+ * @param Reader Pointer to an initialized PE_IMAGE_READER
+ * @param ExportDirectory Pointer to the IMAGE_DIRECTORY_ENTRY_EXPORT data directory entry
+ */
static VOID
PeShowExports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ExportDirectory)
{
@@ -2645,10 +3217,10 @@ PeShowExports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ExportDirect
CHAR DllName[MaxDllNameLength + 1] = {0};
PE_ASCII_STRING_STATUS DllNameStatus = PeReadAsciiStringAtRva(Reader,
- Directory->Name,
- MaxDllNameLength,
- DllName,
- sizeof(DllName));
+ Directory->Name,
+ MaxDllNameLength,
+ DllName,
+ sizeof(DllName));
ShowMessages("\n%-36s%s", "DLL name :", DllNameStatus == PeAsciiStringOk ? DllName : PeAsciiStatusName(DllNameStatus));
ShowMessages("\n%-36s%u", "Ordinal base :", Directory->Base);
ShowMessages("\n%-36s%u", "Address table count :", Directory->NumberOfFunctions);
@@ -2659,20 +3231,20 @@ PeShowExports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ExportDirect
const BYTE * OrdinalTablePointer = NULL;
BOOLEAN AddressTableValid = PeValidateExportTable(Reader,
- Directory->AddressOfFunctions,
- Directory->NumberOfFunctions,
- sizeof(DWORD),
- &AddressTablePointer);
+ Directory->AddressOfFunctions,
+ Directory->NumberOfFunctions,
+ sizeof(DWORD),
+ &AddressTablePointer);
BOOLEAN NamePointerTableValid = PeValidateExportTable(Reader,
Directory->AddressOfNames,
Directory->NumberOfNames,
sizeof(DWORD),
&NamePointerTablePointer);
BOOLEAN OrdinalTableValid = PeValidateExportTable(Reader,
- Directory->AddressOfNameOrdinals,
- Directory->NumberOfNames,
- sizeof(WORD),
- &OrdinalTablePointer);
+ Directory->AddressOfNameOrdinals,
+ Directory->NumberOfNames,
+ sizeof(WORD),
+ &OrdinalTablePointer);
if (!AddressTableValid)
{
@@ -2729,10 +3301,10 @@ PeShowExports(PPE_IMAGE_READER Reader, const IMAGE_DATA_DIRECTORY * ExportDirect
CHAR ExportName[MaxExportNameLength + 1] = {0};
PE_ASCII_STRING_STATUS ExportNameStatus = PeReadAsciiStringAtRva(Reader,
- NameRva,
- MaxExportNameLength,
- ExportName,
- sizeof(ExportName));
+ NameRva,
+ MaxExportNameLength,
+ ExportName,
+ sizeof(ExportName));
if (ExportNameStatus != PeAsciiStringOk)
{
ShowMessages("\n%-36s%#x, %s", "Warning, invalid export name RVA :", NameRva, PeAsciiStatusName(ExportNameStatus));
@@ -2848,25 +3420,25 @@ FindRichHeader(PIMAGE_DOS_HEADER DosHeader, DWORD SearchSize, DWORD StartOffset,
// Search for "Rich" signature
// We need 4 bytes for "Rich" and 4 bytes for the key before the PE header.
//
- for (DWORD i = StartOffset; i + 8 <= SearchLimit; ++i)
+ for (DWORD Offset = StartOffset; Offset + 8 <= SearchLimit; ++Offset)
{
//
// Check for "Rich" signature (4 ASCII bytes)
//
- if (BaseAddr[i] == 'R' &&
- BaseAddr[i + 1] == 'i' &&
- BaseAddr[i + 2] == 'c' &&
- BaseAddr[i + 3] == 'h')
+ if (BaseAddr[Offset] == 'R' &&
+ BaseAddr[Offset + 1] == 'i' &&
+ BaseAddr[Offset + 2] == 'c' &&
+ BaseAddr[Offset + 3] == 'h')
{
//
// Extract the 4-byte XOR key that immediately follows "Rich"
//
- memcpy(Key, BaseAddr + i + 4, 4);
+ memcpy(Key, BaseAddr + Offset + 4, 4);
//
// Return the offset where "Rich" signature was found
//
- return i;
+ return Offset;
}
}
@@ -3054,7 +3626,7 @@ DecryptRichHeader(CHAR Key[], INT Index, CHAR * DataPtr, INT DataSize)
//
while (IndexPointer >= 0)
{
- char TmpChar[4];
+ CHAR TmpChar[4];
//
// Read 4 bytes and decrypt them with the XOR key
@@ -3248,7 +3820,7 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
if (DosHeader->e_lfanew > 0 && (ULONGLONG)DosHeader->e_lfanew <= (ULONGLONG)MAXDWORD)
{
- char * DataPtr = NULL;
+ CHAR * DataPtr = NULL;
DWORD BytesRead = 0;
DWORD RichReadSize = (DWORD)DosHeader->e_lfanew;
DWORD SearchOffset = 0;
@@ -3264,7 +3836,7 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
if (RichReadSize >= 8)
{
- DataPtr = new (std::nothrow) char[RichReadSize];
+ DataPtr = new (std::nothrow) CHAR[RichReadSize];
if (DataPtr == NULL)
{
RichHeaderStatus = "allocation failed";
@@ -3278,8 +3850,8 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
goto SkipRichHeader;
}
- BOOL result = ReadFile(FileHandle, DataPtr, RichReadSize, &BytesRead, NULL);
- if (!result || BytesRead != RichReadSize)
+ BOOL Result = ReadFile(FileHandle, DataPtr, RichReadSize, &BytesRead, NULL);
+ if (!Result || BytesRead != RichReadSize)
{
RichHeaderStatus = "read failed";
delete[] DataPtr;
@@ -3288,7 +3860,7 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
for (;;)
{
- char * richHeaderPtr = NULL;
+ CHAR * RichHeaderPtr = NULL;
RichHeaderOffset = FindRichHeader(DosHeader, RichReadSize, SearchOffset, Key);
if (RichHeaderOffset < 0)
@@ -3299,8 +3871,8 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
HadCandidate = TRUE;
RichHeaderStatus = RichSearchCapped ? "malformed candidate in first 1 MiB" : "malformed";
- int RichHeaderSize = DecryptRichHeader(Key, RichHeaderOffset, DataPtr, (INT)RichReadSize);
- int IndexPointer = RichHeaderOffset - RichHeaderSize;
+ INT RichHeaderSize = DecryptRichHeader(Key, RichHeaderOffset, DataPtr, (INT)RichReadSize);
+ INT IndexPointer = RichHeaderOffset - RichHeaderSize;
if (RichHeaderSize < 16 || RichHeaderSize > MaxRichHeaderSize || ((RichHeaderSize - 16) % 8) != 0 ||
(RichHeaderSize - 16) / 8 == 0 || (RichHeaderSize - 16) / 8 > MaxRichHeaderEntries ||
@@ -3310,23 +3882,23 @@ PeShowSectionInformationAndDump(const WCHAR * AddressOfFile,
continue;
}
- richHeaderPtr = new (std::nothrow) char[RichHeaderSize];
- if (richHeaderPtr == NULL)
+ RichHeaderPtr = new (std::nothrow) CHAR[RichHeaderSize];
+ if (RichHeaderPtr == NULL)
{
RichHeaderStatus = "allocation failed";
break;
}
- memcpy(richHeaderPtr, DataPtr + IndexPointer, RichHeaderSize);
+ memcpy(RichHeaderPtr, DataPtr + IndexPointer, RichHeaderSize);
- if (!FindRichEntries(richHeaderPtr, RichHeaderSize, Key, &PeFileRichHeaderInfo))
+ if (!FindRichEntries(RichHeaderPtr, RichHeaderSize, Key, &PeFileRichHeaderInfo))
{
- delete[] richHeaderPtr;
+ delete[] RichHeaderPtr;
SearchOffset = (DWORD)RichHeaderOffset + 1;
continue;
}
- richHeaderPtr = NULL;
+ RichHeaderPtr = NULL;
if (PeFileRichHeaderInfo.Entries > MaxRichHeaderEntries || PeFileRichHeaderInfo.Entries >= INT_MAX / (INT)sizeof(RICH_HEADER_ENTRY) - 1)
{
@@ -3866,13 +4438,13 @@ SkipRichHeader:
if (Is32Bit)
{
- PeHexDump((char *)Pointer,
+ PeHexDump((CHAR *)Pointer,
DumpSize,
(ULONGLONG)OpHeader32.ImageBase + SecHeader->VirtualAddress);
}
else
{
- PeHexDump((char *)Pointer,
+ PeHexDump((CHAR *)Pointer,
DumpSize,
OpHeader64.ImageBase + SecHeader->VirtualAddress);
}
diff --git a/hyperdbg/libhyperdbg/header/pe-image-reader.h b/hyperdbg/libhyperdbg/header/pe-image-reader.h
deleted file mode 100644
index 88c07d9f..00000000
--- a/hyperdbg/libhyperdbg/header/pe-image-reader.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * @file pe-image-reader.h
- * @author jtaw5649
- * @brief Bounded in-memory Portable Executable reader
- * @details
- * @version 0.1
- * @date 2026-06-01
- *
- * @copyright This project is released under the GNU Public License v3.
- *
- */
-#pragma once
-
-//////////////////////////////////////////////////
-// Structures //
-//////////////////////////////////////////////////
-
-typedef struct _PE_IMAGE_READER
-{
- const BYTE * ImageBase;
- SIZE_T ImageSize;
- const IMAGE_DOS_HEADER * DosHeader;
- const BYTE * NtHeaders;
- const IMAGE_FILE_HEADER * FileHeader;
- const IMAGE_SECTION_HEADER * SectionHeaders;
- WORD OptionalHeaderMagic;
- BOOLEAN Is32Bit;
-} PE_IMAGE_READER, *PPE_IMAGE_READER;
-
-//////////////////////////////////////////////////
-// Functions //
-//////////////////////////////////////////////////
-
-BOOLEAN
-PeImageReaderInitialize(const BYTE * ImageBase, SIZE_T ImageSize, PPE_IMAGE_READER Reader);
-
-BOOLEAN
-PeImageReaderIs32Bit(PPE_IMAGE_READER Reader);
-
-BOOLEAN
-PeImageReaderGetPointerAtOffset(PPE_IMAGE_READER Reader, SIZE_T Offset, SIZE_T Length, const BYTE ** Pointer);
-
-BOOLEAN
-PeImageReaderGetSectionName(const IMAGE_SECTION_HEADER * SectionHeader, CHAR * NameBuffer, SIZE_T NameBufferSize);
-
-BOOLEAN
-PeImageReaderRvaToFileOffset(PPE_IMAGE_READER Reader, DWORD Rva, DWORD Length, PSIZE_T FileOffset);
diff --git a/hyperdbg/libhyperdbg/header/pe-parser.h b/hyperdbg/libhyperdbg/header/pe-parser.h
index c324a6c2..af5ca293 100644
--- a/hyperdbg/libhyperdbg/header/pe-parser.h
+++ b/hyperdbg/libhyperdbg/header/pe-parser.h
@@ -11,6 +11,36 @@
*/
#pragma once
+//////////////////////////////////////////////////
+// Structures //
+//////////////////////////////////////////////////
+
+typedef struct _RICH_HEADER_INFO
+{
+ int Size;
+ CHAR * PtrToBuffer;
+ int Entries;
+} RICH_HEADER_INFO, *PRICH_HEADER_INFO;
+
+typedef struct _RICH_HEADER_ENTRY
+{
+ WORD ProdID;
+ WORD BuildID;
+ DWORD UseCount;
+} RICH_HEADER_ENTRY, *PRICH_HEADER_ENTRY;
+
+typedef struct _RICH_HEADER
+{
+ PRICH_HEADER_ENTRY Entries;
+} RICH_HEADER, *PRICH_HEADER;
+
+typedef struct _PE_RAW_SECTION_RANGE
+{
+ ULONGLONG Start;
+ ULONGLONG End;
+ const IMAGE_SECTION_HEADER * Section;
+} PE_RAW_SECTION_RANGE, *PPE_RAW_SECTION_RANGE;
+
//////////////////////////////////////////////////
// Functions //
//////////////////////////////////////////////////
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
index 783d87aa..ec6a41f3 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj
@@ -127,6 +127,7 @@
+
@@ -150,7 +151,6 @@
-
@@ -163,6 +163,7 @@
+
@@ -221,7 +222,6 @@
-
diff --git a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
index 1b4f5f17..99d0aa4a 100644
--- a/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
+++ b/hyperdbg/libhyperdbg/libhyperdbg.vcxproj.filters
@@ -90,6 +90,18 @@
{8e3c36aa-4263-4c94-9910-884ad9652921}
+
+ {5b7dcc48-4010-40db-973f-bf46eb1e810b}
+
+
+ {b6d17c7a-e6e7-490b-b581-c6a06d0d61a9}
+
+
+ {a5552ded-23bb-45ad-85c2-d8d85a5b4e49}
+
+
+ {da7e68cc-540c-4efc-b4de-c23b4b13e2ec}
+
@@ -146,9 +158,6 @@
header
-
- header
-
header
@@ -194,6 +203,9 @@
header\platform\windows-only
+
+ header\components\pe
+
@@ -466,9 +478,6 @@
code\debugger\user-level
-
- code\debugger\user-level
-
code\debugger\commands\meta-commands
@@ -640,10 +649,13 @@
code\platform\windows-only
+
+ code\components\pe
+
code\assembly
-
+
\ No newline at end of file
diff --git a/hyperdbg/libhyperdbg/pch.h b/hyperdbg/libhyperdbg/pch.h
index 7e662946..dffab754 100644
--- a/hyperdbg/libhyperdbg/pch.h
+++ b/hyperdbg/libhyperdbg/pch.h
@@ -180,6 +180,11 @@ typedef const wchar_t *LPCWCHAR, *PCWCHAR;
#include "header/rev-ctrl.h"
#include "header/assembler.h"
+//
+// Components
+//
+#include "../include/components/pe/header/pe-image-reader.h"
+
//
// hwdbg
//
From ffb0f8ac1de1e2fccb34272f5edd2012ff5700a5 Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 2 Jun 2026 19:51:27 +0200
Subject: [PATCH 235/323] fix build error on script engine refactor for Linux
---
.../include/platform/user/code/platform-lib-calls.c | 12 ++++++++----
hyperdbg/script-engine/header/pch.h | 7 ++++++-
hyperdbg/script-engine/script-engine.vcxproj | 2 ++
hyperdbg/script-engine/script-engine.vcxproj.filters | 9 +++++++++
4 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/hyperdbg/include/platform/user/code/platform-lib-calls.c b/hyperdbg/include/platform/user/code/platform-lib-calls.c
index 56f78020..803a253a 100644
--- a/hyperdbg/include/platform/user/code/platform-lib-calls.c
+++ b/hyperdbg/include/platform/user/code/platform-lib-calls.c
@@ -9,7 +9,11 @@
* @copyright This project is released under the GNU Public License v3.
*
*/
-#include "platform/user/header/platform-lib-calls.h"
+#include "pch.h"
+
+#if defined(__linux__)
+# include "../header/platform-lib-calls.h"
+#endif // defined(__linux__)
/**
* @brief Platform independent wrapper for vsprintf_s / vsnprintf
@@ -28,7 +32,7 @@ PlatformVsnprintf(char * Buffer, SIZE_T BufferSize, const char * Format, va_list
#elif defined(__linux__)
return vsnprintf(Buffer, BufferSize, Format, ArgList);
#else
-# error "Unsupported platform"
+# error "Unsupported platform"
#endif
}
@@ -46,7 +50,7 @@ PlatformStrDup(const char * Str)
#elif defined(__linux__)
return strdup(Str);
#else
-# error "Unsupported platform"
+# error "Unsupported platform"
#endif
}
@@ -64,6 +68,6 @@ PlatformZeroMemory(PVOID Buffer, SIZE_T Size)
#elif defined(__linux__)
memset(Buffer, 0, Size);
#else
-# error "Unsupported platform"
+# error "Unsupported platform"
#endif
}
diff --git a/hyperdbg/script-engine/header/pch.h b/hyperdbg/script-engine/header/pch.h
index aed90315..e51ebe45 100644
--- a/hyperdbg/script-engine/header/pch.h
+++ b/hyperdbg/script-engine/header/pch.h
@@ -30,7 +30,7 @@
// Windows Header Files
//
#ifdef _WIN32
-#include
+# include
#endif
#include
@@ -54,6 +54,11 @@
#include "parse-table.h"
#include "hardware.h"
+//
+// Platform-specific library calls
+//
+#include "platform/user/header/platform-lib-calls.h"
+
//
// Import/export definitions
//
diff --git a/hyperdbg/script-engine/script-engine.vcxproj b/hyperdbg/script-engine/script-engine.vcxproj
index 3d3b8b73..dfe4b2d0 100644
--- a/hyperdbg/script-engine/script-engine.vcxproj
+++ b/hyperdbg/script-engine/script-engine.vcxproj
@@ -128,6 +128,7 @@ exit /b 0
+
@@ -139,6 +140,7 @@ exit /b 0
+
diff --git a/hyperdbg/script-engine/script-engine.vcxproj.filters b/hyperdbg/script-engine/script-engine.vcxproj.filters
index 597ae621..c41bb19a 100644
--- a/hyperdbg/script-engine/script-engine.vcxproj.filters
+++ b/hyperdbg/script-engine/script-engine.vcxproj.filters
@@ -12,6 +12,9 @@
{53ae7bcb-e612-4a1a-89db-de1e77f2d730}
+
+ {45bab125-0b6b-4791-bb0e-eace92a93baa}
+
@@ -41,6 +44,9 @@
header
+
+ header\platform
+
@@ -70,5 +76,8 @@
code
+
+ code\platform
+
\ No newline at end of file
From 4774db37bdf52b21f9a9c217b2c445cd432edc27 Mon Sep 17 00:00:00 2001
From: sina
Date: Tue, 2 Jun 2026 19:57:05 +0200
Subject: [PATCH 236/323] add items to changelog and readme
---
CHANGELOG.md | 1 +
README.md | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1462173d..a5c13bf2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -40,6 +40,7 @@ New release of the HyperDbg Debugger.
- Fix the '!hide' command's HyperEvade activation guard thanks to [@jtaw5649](https://github.com/jtaw5649) ([link](https://github.com/HyperDbg/HyperDbg/pull/593))
- Fix synchronous debugger device IOCTL handles thanks to [@jtaw5649](https://github.com/jtaw5649) ([link](https://github.com/HyperDbg/HyperDbg/pull/595))
- PE parser ('.pe' command) now supports richer DOS/NT/COFF/optional-header output, section bounds checking, data directory reporting, import/export parsing, TLS/debug/PDB/load-config metadata, overlay reporting, and malformed metadata warnings thanks to [@jtaw5649](https://github.com/jtaw5649) ([link](https://github.com/HyperDbg/HyperDbg/pull/598))([link](https://docs.hyperdbg.org/commands/meta-commands/.pe))
+- Building the script engine module on Linux (GCC) thanks to [@maxraulea](https://github.com/maxraulea) ([link](https://github.com/HyperDbg/HyperDbg/pull/596))
## [0.18.1.0] - 2026-04-09
New release of the HyperDbg Debugger.
diff --git a/README.md b/README.md
index 98b06c23..22adbb57 100644
--- a/README.md
+++ b/README.md
@@ -178,7 +178,7 @@ You can also read [this article](https://research.hyperdbg.org/debugger/kernel-d
* Attaching to the User-mode Process and Preventing Execution [link ]
* Intercepting Execution of XSETBV Instructions [link ]
* Writing Library Script Files [link ]
-* Enhanced Portable Executable (PE) Parser [link ]
+* Enhanced Portable Executable (PE) Parser [link ]
* Tracing Branches using Last Branch Record (LBR) [link ][link ][link ][link ][link ][link ][link ]
## How does it work?
From d2bc99189b506ab5ef44892a0c7a18093760cb13 Mon Sep 17 00:00:00 2001
From: sina
Date: Wed, 3 Jun 2026 17:18:35 +0200
Subject: [PATCH 237/323] add example for loading HyperDbg from VMI mode using
libhyperdbg
---
CHANGELOG.md | 1 +
.../user/hyperdbg_app/code/hyperdbg-app.cpp | 178 +++++++++++-------
2 files changed, 110 insertions(+), 69 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a5c13bf2..5f9ac26a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -26,6 +26,7 @@ New release of the HyperDbg Debugger.
- Initial codes for the HyperTrace project by using Intel Processor Trace (PT), thanks to [@masoudrahimi01](https://github.com/masoudrahimi01) ([link](https://github.com/HyperDbg/HyperDbg/pull/589))
- Exported SDK APIs for loading the 'kd' and the 'trace' modules
- Added tests for checking PE parser in 'hyperdbg-test' project
+- Added example for loading HyperDbg in VMI mode directly from libhyperdbg
### Changed
- Fix the problem of not applying the EAX index in the CPUID event extension command ([link](https://docs.hyperdbg.org/commands/extension-commands/cpuid#parameters))
diff --git a/examples/user/hyperdbg_app/code/hyperdbg-app.cpp b/examples/user/hyperdbg_app/code/hyperdbg-app.cpp
index 2aedaa33..153b64cb 100644
--- a/examples/user/hyperdbg_app/code/hyperdbg-app.cpp
+++ b/examples/user/hyperdbg_app/code/hyperdbg-app.cpp
@@ -21,10 +21,10 @@ PVOID g_SharedMessageBuffer = NULL;
* @return int
*/
int
-hyperdbg_show_messages(const char * Text)
+hyperdbg_show_messages(const char* Text)
{
- printf("%s", Text);
- return 0;
+ printf("%s", Text);
+ return 0;
}
/**
@@ -36,8 +36,8 @@ hyperdbg_show_messages(const char * Text)
int
hyperdbg_show_messages_shared_buffer()
{
- printf("%s", (char *)g_SharedMessageBuffer);
- return 0;
+ printf("%s", (char*)g_SharedMessageBuffer);
+ return 0;
}
/**
@@ -47,70 +47,94 @@ hyperdbg_show_messages_shared_buffer()
* was error
*/
int
-hyperdbg_load()
+hyperdbg_load_debugger_mode()
{
- char CpuId[13] = {0};
+ char CpuId[13] = { 0 };
- //
- // Read the vendor string
- //
- hyperdbg_u_read_vendor_string(CpuId);
+ //
+ // Read the vendor string
+ //
+ hyperdbg_u_read_vendor_string(CpuId);
- printf("current processor vendor is : %s\n", CpuId);
+ printf("current processor vendor is : %s\n", CpuId);
- if (strcmp(CpuId, "GenuineIntel") == 0)
- {
- printf("virtualization technology is vt-x\n");
- }
- else
- {
- printf("this program is not designed to run in a non-VT-x "
- "environment !\n");
- return 1;
- }
+ if (strcmp(CpuId, "GenuineIntel") == 0)
+ {
+ printf("virtualization technology is vt-x\n");
+ }
+ else
+ {
+ printf("this program is not designed to run in a non-VT-x "
+ "environment !\n");
+ return 1;
+ }
- //
- // Detect if the processor supports vmx operation
- //
- if (hyperdbg_u_detect_vmx_support())
- {
- printf("vmx operation is supported by your processor\n");
- }
- else
- {
+ //
+ // Detect if the processor supports vmx operation
+ //
+ if (hyperdbg_u_detect_vmx_support())
+ {
+ printf("vmx operation is supported by your processor\n");
+ }
+ else
+ {
#ifdef HYPERDBG_ENV_WINDOWS
- printf("vmx operation is not supported by your processor "
- "(if you are using an Intel processor, it might be because VBS is not disabled!)\n");
+ printf("vmx operation is not supported by your processor "
+ "(if you are using an Intel processor, it might be because VBS is not disabled!)\n");
#endif
- return 1;
- }
+ return 1;
+ }
- //
- // Set callback function for showing messages
- //
- hyperdbg_u_set_text_message_callback(hyperdbg_show_messages);
+ //
+ // Set callback function for showing messages
+ //
+ hyperdbg_u_set_text_message_callback(hyperdbg_show_messages);
- //
- // Test interpreter with shared buffer
- //
- // g_SharedMessageBuffer = hyperdbg_u_set_text_message_callback_using_shared_buffer(hyperdbg_show_messages_shared_buffer);
+ //
+ // Test interpreter
+ //
+ hyperdbg_u_connect_remote_debugger_using_named_pipe("\\\\.\\pipe\\HyperDbgPipe", TRUE);
+ Sleep(10000);
+ hyperdbg_u_run_command((CHAR*)"r");
+ hyperdbg_u_run_command((CHAR*)".start path c:\\Windows\\system32\\calc.exe");
+ hyperdbg_u_continue_debuggee();
+ hyperdbg_u_continue_debuggee();
+ hyperdbg_u_continue_debuggee();
+ hyperdbg_u_continue_debuggee();
+ hyperdbg_u_continue_debuggee();
+ hyperdbg_u_continue_debuggee();
+ hyperdbg_u_continue_debuggee();
- //
- // Test interpreter
- //
- hyperdbg_u_connect_remote_debugger_using_named_pipe("\\\\.\\pipe\\HyperDbgPipe", TRUE);
- Sleep(10000);
- hyperdbg_u_run_command((CHAR *)"r");
- hyperdbg_u_run_command((CHAR *)".start path c:\\Windows\\system32\\calc.exe");
- hyperdbg_u_continue_debuggee();
- hyperdbg_u_continue_debuggee();
- hyperdbg_u_continue_debuggee();
- hyperdbg_u_continue_debuggee();
- hyperdbg_u_continue_debuggee();
- hyperdbg_u_continue_debuggee();
- hyperdbg_u_continue_debuggee();
+ return 0;
+}
- return 0;
+
+/**
+ * @brief Load the driver
+ *
+ * @return int return zero if it was successful or non-zero if there
+ * was error
+ */
+int
+hyperdbg_load_vmi_mode()
+{
+
+ //
+ // Set callback function for showing messages
+ //
+ hyperdbg_u_set_text_message_callback(hyperdbg_show_messages);
+
+
+ //
+ // Test interpreter
+ //
+ if (hyperdbg_u_install_kd_driver() == 1 || hyperdbg_u_load_vmm() == 1)
+ {
+ printf("failed to install or load the driver\n");
+ return 1;
+ }
+
+ return 0;
}
/**
@@ -121,15 +145,31 @@ hyperdbg_load()
int
main()
{
- if (hyperdbg_load() == 0)
- {
- //
- // HyperDbg driver loaded successfully
- //
- // hyperdbg_unload();
- }
- else
- {
- printf("err, in loading HyperDbg\n");
- }
+ //
+ // Load the driver in the vmi mode
+ //
+ if (hyperdbg_load_vmi_mode() == 0)
+ {
+
+ //
+ // *** HyperDbg driver loaded successfully ***
+ //
+
+ //
+ // Run a test command
+ //
+ hyperdbg_u_run_command((CHAR*)"lm");
+
+ //
+ // Unload the driver
+ //
+ hyperdbg_u_unload_vmm();
+ hyperdbg_u_unload_kd();
+ hyperdbg_u_stop_kd_driver();
+ hyperdbg_u_uninstall_kd_driver();
+ }
+ else
+ {
+ printf("err, in loading HyperDbg\n");
+ }
}
From b6b832051867af5d35a681f1c0fffee7893dd277 Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 4 Jun 2026 00:06:41 +0200
Subject: [PATCH 238/323] moving pool mananger from hyperhv to hyperkd
---
CHANGELOG.md | 1 +
.../hyperhv/code/hooks/ept-hook/EptHook.c | 50 ++--
hyperdbg/hyperhv/code/interface/Callback.c | 65 +++++
hyperdbg/hyperhv/code/vmm/ept/Ept.c | 2 +-
hyperdbg/hyperhv/code/vmm/vmx/Vmx.c | 14 -
hyperdbg/hyperhv/header/interface/Callback.h | 13 +
hyperdbg/hyperhv/hyperhv.vcxproj | 2 -
hyperdbg/hyperhv/hyperhv.vcxproj.filters | 6 -
hyperdbg/hyperhv/pch.h | 1 -
.../hyperkd/code/debugger/core/Debugger.c | 256 +++++++++++-------
.../code/debugger}/memory/PoolManager.c | 2 +-
hyperdbg/hyperkd/code/driver/Loader.c | 126 +++++++--
.../hyperkd/header/debugger/core/Debugger.h | 9 +
.../header/debugger}/memory/PoolManager.h | 25 +-
hyperdbg/hyperkd/header/driver/Loader.h | 6 +
hyperdbg/hyperkd/header/globals/Global.h | 2 +-
hyperdbg/hyperkd/header/pch.h | 1 +
hyperdbg/hyperkd/hyperkd.vcxproj | 2 +
hyperdbg/hyperkd/hyperkd.vcxproj.filters | 6 +
hyperdbg/include/SDK/headers/ErrorCodes.h | 12 +
.../SDK/imports/kernel/HyperDbgVmmImports.h | 19 --
hyperdbg/include/SDK/modules/VMM.h | 25 ++
.../code/debugger/core/debugger.cpp | 10 +
23 files changed, 457 insertions(+), 198 deletions(-)
rename hyperdbg/{hyperhv/code => hyperkd/code/debugger}/memory/PoolManager.c (99%)
rename hyperdbg/{hyperhv/header => hyperkd/header/debugger}/memory/PoolManager.h (88%)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5f9ac26a..4a6ad9ac 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -42,6 +42,7 @@ New release of the HyperDbg Debugger.
- Fix synchronous debugger device IOCTL handles thanks to [@jtaw5649](https://github.com/jtaw5649) ([link](https://github.com/HyperDbg/HyperDbg/pull/595))
- PE parser ('.pe' command) now supports richer DOS/NT/COFF/optional-header output, section bounds checking, data directory reporting, import/export parsing, TLS/debug/PDB/load-config metadata, overlay reporting, and malformed metadata warnings thanks to [@jtaw5649](https://github.com/jtaw5649) ([link](https://github.com/HyperDbg/HyperDbg/pull/598))([link](https://docs.hyperdbg.org/commands/meta-commands/.pe))
- Building the script engine module on Linux (GCC) thanks to [@maxraulea](https://github.com/maxraulea) ([link](https://github.com/HyperDbg/HyperDbg/pull/596))
+- Pool manager moved from 'hyperhv' to 'hyperkd'
## [0.18.1.0] - 2026-04-09
New release of the HyperDbg Debugger.
diff --git a/hyperdbg/hyperhv/code/hooks/ept-hook/EptHook.c b/hyperdbg/hyperhv/code/hooks/ept-hook/EptHook.c
index 561212b7..dc2b4fd8 100644
--- a/hyperdbg/hyperhv/code/hooks/ept-hook/EptHook.c
+++ b/hyperdbg/hyperhv/code/hooks/ept-hook/EptHook.c
@@ -80,22 +80,22 @@ EptHookReservePreallocatedPoolsForEptHooks(UINT32 Count)
// Request pages to be allocated for converting 2MB to 4KB pages
// Each core needs its own splitting page-tables
//
- PoolManagerRequestAllocation(sizeof(VMM_EPT_DYNAMIC_SPLIT), Count * ProcessorsCount, SPLIT_2MB_PAGING_TO_4KB_PAGE);
+ PoolManagerCallbackRequestAllocation(sizeof(VMM_EPT_DYNAMIC_SPLIT), Count * ProcessorsCount, SPLIT_2MB_PAGING_TO_4KB_PAGE);
//
// Request pages to be allocated for paged hook details
//
- PoolManagerRequestAllocation(sizeof(EPT_HOOKED_PAGE_DETAIL), Count, TRACKING_HOOKED_PAGES);
+ PoolManagerCallbackRequestAllocation(sizeof(EPT_HOOKED_PAGE_DETAIL), Count, TRACKING_HOOKED_PAGES);
//
// Request pages to be allocated for Trampoline of Executable hooked pages
//
- PoolManagerRequestAllocation(MAX_EXEC_TRAMPOLINE_SIZE, Count, EXEC_TRAMPOLINE);
+ PoolManagerCallbackRequestAllocation(MAX_EXEC_TRAMPOLINE_SIZE, Count, EXEC_TRAMPOLINE);
//
// Request pages to be allocated for detour hooked pages details
//
- PoolManagerRequestAllocation(sizeof(HIDDEN_HOOKS_DETOUR_DETAILS), Count, DETOUR_HOOK_DETAILS);
+ PoolManagerCallbackRequestAllocation(sizeof(HIDDEN_HOOKS_DETOUR_DETAILS), Count, DETOUR_HOOK_DETAILS);
}
/**
@@ -120,16 +120,16 @@ EptHookAllocateExtraHookingPagesForMemoryMonitorsAndExecEptHooks(UINT32 Count)
// Request pages to be allocated for converting 2MB to 4KB pages
// Each core needs its own splitting page-tables
//
- PoolManagerRequestAllocation(sizeof(VMM_EPT_DYNAMIC_SPLIT),
- Count * ProcessorsCount,
- SPLIT_2MB_PAGING_TO_4KB_PAGE);
+ PoolManagerCallbackRequestAllocation(sizeof(VMM_EPT_DYNAMIC_SPLIT),
+ Count * ProcessorsCount,
+ SPLIT_2MB_PAGING_TO_4KB_PAGE);
//
// Request pages to be allocated for paged hook details
//
- PoolManagerRequestAllocation(sizeof(EPT_HOOKED_PAGE_DETAIL),
- Count,
- TRACKING_HOOKED_PAGES);
+ PoolManagerCallbackRequestAllocation(sizeof(EPT_HOOKED_PAGE_DETAIL),
+ Count,
+ TRACKING_HOOKED_PAGES);
}
/**
@@ -199,7 +199,7 @@ EptHookCreateHookPage(_Inout_ VIRTUAL_MACHINE_STATE * VCpu,
//
// Save the detail of hooked page to keep track of it
//
- HookedPage = (EPT_HOOKED_PAGE_DETAIL *)PoolManagerRequestPool(TRACKING_HOOKED_PAGES, TRUE, sizeof(EPT_HOOKED_PAGE_DETAIL));
+ HookedPage = (EPT_HOOKED_PAGE_DETAIL *)PoolManagerCallbackRequestPool(TRACKING_HOOKED_PAGES, TRUE, sizeof(EPT_HOOKED_PAGE_DETAIL));
if (!HookedPage)
{
@@ -281,7 +281,7 @@ EptHookCreateHookPage(_Inout_ VIRTUAL_MACHINE_STATE * VCpu,
//
if (!EptSplitLargePage(g_GuestState[i].EptPageTable, TRUE, PhysicalBaseAddress))
{
- PoolManagerFreePool((UINT64)HookedPage);
+ PoolManagerCallbackFreePool((UINT64)HookedPage);
//
// Here also other previous pools should be specified, but we forget it for now
@@ -302,7 +302,7 @@ EptHookCreateHookPage(_Inout_ VIRTUAL_MACHINE_STATE * VCpu,
//
if (!TargetPage)
{
- PoolManagerFreePool((UINT64)HookedPage);
+ PoolManagerCallbackFreePool((UINT64)HookedPage);
//
// Here also other previous pools should be specified, but we forget it for now
@@ -907,7 +907,7 @@ EptHookInstructionMemory(PEPT_HOOKED_PAGE_DETAIL Hook,
//
// Allocate some executable memory for the trampoline
//
- Hook->Trampoline = (CHAR *)PoolManagerRequestPool(EXEC_TRAMPOLINE, TRUE, MAX_EXEC_TRAMPOLINE_SIZE);
+ Hook->Trampoline = (CHAR *)PoolManagerCallbackRequestPool(EXEC_TRAMPOLINE, TRUE, MAX_EXEC_TRAMPOLINE_SIZE);
if (!Hook->Trampoline)
{
@@ -956,7 +956,7 @@ EptHookInstructionMemory(PEPT_HOOKED_PAGE_DETAIL Hook,
// function that changes the original function and if our structure is no ready after this
// function then we probably see BSOD on other cores
//
- DetourHookDetails = (HIDDEN_HOOKS_DETOUR_DETAILS *)PoolManagerRequestPool(DETOUR_HOOK_DETAILS, TRUE, sizeof(HIDDEN_HOOKS_DETOUR_DETAILS));
+ DetourHookDetails = (HIDDEN_HOOKS_DETOUR_DETAILS *)PoolManagerCallbackRequestPool(DETOUR_HOOK_DETAILS, TRUE, sizeof(HIDDEN_HOOKS_DETOUR_DETAILS));
DetourHookDetails->HookedFunctionAddress = TargetFunction;
DetourHookDetails->ReturnAddress = Hook->Trampoline;
@@ -1104,7 +1104,7 @@ EptHookPerformPageHookMonitorAndInlineHook(VIRTUAL_MACHINE_STATE * VCpu,
//
// Save the detail of hooked page to keep track of it
//
- HookedPage = (EPT_HOOKED_PAGE_DETAIL *)PoolManagerRequestPool(TRACKING_HOOKED_PAGES, TRUE, sizeof(EPT_HOOKED_PAGE_DETAIL));
+ HookedPage = (EPT_HOOKED_PAGE_DETAIL *)PoolManagerCallbackRequestPool(TRACKING_HOOKED_PAGES, TRUE, sizeof(EPT_HOOKED_PAGE_DETAIL));
if (!HookedPage)
{
@@ -1155,7 +1155,7 @@ EptHookPerformPageHookMonitorAndInlineHook(VIRTUAL_MACHINE_STATE * VCpu,
if (!HookedPage->StartOfTargetPhysicalAddress)
{
- PoolManagerFreePool((UINT64)HookedPage);
+ PoolManagerCallbackFreePool((UINT64)HookedPage);
VmmCallbackSetLastError(DEBUGGER_ERROR_INVALID_ADDRESS);
return FALSE;
@@ -1183,7 +1183,7 @@ EptHookPerformPageHookMonitorAndInlineHook(VIRTUAL_MACHINE_STATE * VCpu,
if (!HookedPage->EndOfTargetPhysicalAddress)
{
- PoolManagerFreePool((UINT64)HookedPage);
+ PoolManagerCallbackFreePool((UINT64)HookedPage);
VmmCallbackSetLastError(DEBUGGER_ERROR_INVALID_ADDRESS);
return FALSE;
@@ -1244,7 +1244,7 @@ EptHookPerformPageHookMonitorAndInlineHook(VIRTUAL_MACHINE_STATE * VCpu,
//
if (!EptHookInstructionMemory(HookedPage, ProcessCr3, TargetAddress, (PVOID)TargetAddressInSafeMemory, HookFunction))
{
- PoolManagerFreePool((UINT64)HookedPage);
+ PoolManagerCallbackFreePool((UINT64)HookedPage);
VmmCallbackSetLastError(DEBUGGER_ERROR_COULD_NOT_BUILD_THE_EPT_HOOK);
return FALSE;
@@ -1258,7 +1258,7 @@ EptHookPerformPageHookMonitorAndInlineHook(VIRTUAL_MACHINE_STATE * VCpu,
//
if (!EptSplitLargePage(g_GuestState[i].EptPageTable, TRUE, PhysicalBaseAddress))
{
- PoolManagerFreePool((UINT64)HookedPage);
+ PoolManagerCallbackFreePool((UINT64)HookedPage);
//
// Here also other previous pools should be specified, but we forget it for now
@@ -1278,7 +1278,7 @@ EptHookPerformPageHookMonitorAndInlineHook(VIRTUAL_MACHINE_STATE * VCpu,
//
if (!TargetPage)
{
- PoolManagerFreePool((UINT64)HookedPage);
+ PoolManagerCallbackFreePool((UINT64)HookedPage);
//
// Here also other previous pools should be specified, but we forget it for now
@@ -1862,7 +1862,7 @@ EptHookRemoveEntryAndFreePoolFromEptHook2sDetourList(UINT64 Address)
//
// Free the pool in next ioctl
//
- if (!PoolManagerFreePool((UINT64)CurrentHookedDetails))
+ if (!PoolManagerCallbackFreePool((UINT64)CurrentHookedDetails))
{
LogError("Err, something goes wrong, the pool not found in the list of previously allocated pools by pool manager");
}
@@ -1964,7 +1964,7 @@ EptHookUnHookSingleAddressDetoursAndMonitor(PEPT_HOOKED_PAGE_DETAIL
// we add the hooked entry to the list
// of pools that will be deallocated on next IOCTL
//
- if (!PoolManagerFreePool((UINT64)HookedEntry))
+ if (!PoolManagerCallbackFreePool((UINT64)HookedEntry))
{
LogError("Err, something goes wrong, the pool not found in the list of previously allocated pools by pool manager");
return FALSE;
@@ -2113,7 +2113,7 @@ EptHookUnHookSingleAddressHiddenBreakpoint(PEPT_HOOKED_PAGE_DETAIL H
// we add the hooked entry to the list
// of pools that will be deallocated on next IOCTL
//
- if (!PoolManagerFreePool((UINT64)HookedEntry))
+ if (!PoolManagerCallbackFreePool((UINT64)HookedEntry))
{
LogError("Err, something goes wrong, the pool not found in the list of previously allocated pools by pool manager");
}
@@ -2485,7 +2485,7 @@ EptHookUnHookAll()
// As we are in vmx-root here, we add the hooked entry to the list
// of pools that will be deallocated on next IOCTL
//
- if (!PoolManagerFreePool((UINT64)CurrEntity))
+ if (!PoolManagerCallbackFreePool((UINT64)CurrEntity))
{
LogError("Err, something goes wrong, the pool not found in the list of previously allocated pools by pool manager");
}
diff --git a/hyperdbg/hyperhv/code/interface/Callback.c b/hyperdbg/hyperhv/code/interface/Callback.c
index cd924a0a..9e9a7492 100644
--- a/hyperdbg/hyperhv/code/interface/Callback.c
+++ b/hyperdbg/hyperhv/code/interface/Callback.c
@@ -284,6 +284,71 @@ DebuggingCallbackCheckThreadInterception(UINT32 CoreId)
return g_Callbacks.DebuggingCallbackCheckThreadInterception(CoreId);
}
+/**
+ * @brief routine callback to request pool allocation
+ *
+ * @param Size
+ * @param Count
+ * @param Intention The intention of the buffer (buffer tag)
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+PoolManagerCallbackRequestAllocation(SIZE_T Size, UINT32 Count, POOL_ALLOCATION_INTENTION Intention)
+{
+ if (g_Callbacks.PoolManagerRequestAllocation == NULL)
+ {
+ //
+ // ignore it as it's not handled
+ //
+ return FALSE;
+ }
+ return g_Callbacks.PoolManagerRequestAllocation(Size, Count, Intention);
+}
+
+/**
+ * @brief routine callback to request pool
+ *
+ * @param Intention The intention why we need this pool for (buffer tag)
+ * @param RequestNewPool Create a request to allocate a new pool with the same size, next time
+ * that it's safe to allocate (this way we never ran out of pools for this "Intention")
+ * @param Size If the RequestNewPool is true the we should specify a size for the new pool
+ *
+ * @return UINT64 Returns a pool address or returns null if there was an error
+ */
+UINT64
+PoolManagerCallbackRequestPool(POOL_ALLOCATION_INTENTION Intention, BOOLEAN RequestNewPool, UINT32 Size)
+{
+ if (g_Callbacks.PoolManagerRequestPool == NULL)
+ {
+ //
+ // ignore it as it's not handled
+ //
+ return 0;
+ }
+ return g_Callbacks.PoolManagerRequestPool(Intention, RequestNewPool, Size);
+}
+
+/**
+ * @brief routine callback to free pool
+ *
+ * @param AddressToFree
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+PoolManagerCallbackFreePool(UINT64 AddressToFree)
+{
+ if (g_Callbacks.PoolManagerFreePool == NULL)
+ {
+ //
+ // ignore it as it's not handled
+ //
+ return FALSE;
+ }
+ return g_Callbacks.PoolManagerFreePool(AddressToFree);
+}
+
/**
* @brief routine callback to handle cr3 process change
*
diff --git a/hyperdbg/hyperhv/code/vmm/ept/Ept.c b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
index c07ff4f8..f237b710 100644
--- a/hyperdbg/hyperhv/code/vmm/ept/Ept.c
+++ b/hyperdbg/hyperhv/code/vmm/ept/Ept.c
@@ -502,7 +502,7 @@ EptSplitLargePage(PVMM_EPT_PAGE_TABLE EptPageTable,
//
if (UsePreAllocatedBuffer)
{
- NewSplit = (PVMM_EPT_DYNAMIC_SPLIT)PoolManagerRequestPool(SPLIT_2MB_PAGING_TO_4KB_PAGE, TRUE, sizeof(VMM_EPT_DYNAMIC_SPLIT));
+ NewSplit = (PVMM_EPT_DYNAMIC_SPLIT)PoolManagerCallbackRequestPool(SPLIT_2MB_PAGING_TO_4KB_PAGE, TRUE, sizeof(VMM_EPT_DYNAMIC_SPLIT));
}
else
{
diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
index ef43a11e..ab4eab29 100644
--- a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
+++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c
@@ -317,15 +317,6 @@ VmxPerformVirtualizationOnAllCores()
LogDebugInfo("MTRR memory map built successfully");
}
- //
- // Initialize Pool Manager
- //
- if (!PoolManagerInitialize())
- {
- LogError("Err, could not initialize pool manager");
- return FALSE;
- }
-
if (!EptLogicalProcessorInitialize())
{
//
@@ -1158,11 +1149,6 @@ VmxPerformTermination()
PlatformMemFreePool(g_EptState);
g_EptState = NULL;
- //
- // Free the Pool manager
- //
- PoolManagerUninitialize();
-
//
// Uninitialize memory mapper
//
diff --git a/hyperdbg/hyperhv/header/interface/Callback.h b/hyperdbg/hyperhv/header/interface/Callback.h
index 4673930f..ce02087f 100644
--- a/hyperdbg/hyperhv/header/interface/Callback.h
+++ b/hyperdbg/hyperhv/header/interface/Callback.h
@@ -72,6 +72,19 @@ DebuggingCallbackHandleDebugBreakpointException(UINT32 CoreId);
BOOLEAN
DebuggingCallbackCheckThreadInterception(UINT32 CoreId);
+//
+// Pool Manager Callbacks
+//
+
+BOOLEAN
+PoolManagerCallbackRequestAllocation(SIZE_T Size, UINT32 Count, POOL_ALLOCATION_INTENTION Intention);
+
+UINT64
+PoolManagerCallbackRequestPool(POOL_ALLOCATION_INTENTION Intention, BOOLEAN RequestNewPool, UINT32 Size);
+
+BOOLEAN
+PoolManagerCallbackFreePool(UINT64 AddressToFree);
+
//
// Interception Callbacks
//
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj b/hyperdbg/hyperhv/hyperhv.vcxproj
index b007446c..f2dc2413 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj
@@ -165,7 +165,6 @@
-
@@ -272,7 +271,6 @@
-
diff --git a/hyperdbg/hyperhv/hyperhv.vcxproj.filters b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
index 2ef34332..f8fcb900 100644
--- a/hyperdbg/hyperhv/hyperhv.vcxproj.filters
+++ b/hyperdbg/hyperhv/hyperhv.vcxproj.filters
@@ -203,9 +203,6 @@
code\memory
-
- code\memory
-
code\components\registers
@@ -394,9 +391,6 @@
header\memory
-
- header\memory
-
header\vmm\vmx
diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h
index c988ebad..43398529 100644
--- a/hyperdbg/hyperhv/pch.h
+++ b/hyperdbg/hyperhv/pch.h
@@ -95,7 +95,6 @@
#include "memory/MemoryMapper.h"
#include "interface/Dispatch.h"
#include "common/Msr.h"
-#include "memory/PoolManager.h"
#include "common/Trace.h"
#include "assembly/InlineAsm.h"
#include "vmm/ept/Vpid.h"
diff --git a/hyperdbg/hyperkd/code/debugger/core/Debugger.c b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
index ac9b3d0b..db729fbd 100644
--- a/hyperdbg/hyperkd/code/debugger/core/Debugger.c
+++ b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
@@ -47,41 +47,106 @@ DebuggerSetLastError(UINT32 LastError)
}
/**
- * @brief Initialize Debugger Structures and Routines
+ * @brief Initialize script engine global variables and per-core stack buffers
*
* @return BOOLEAN Shows whether the initialization process was successful
* or not
*/
BOOLEAN
-DebuggerInitialize()
+DebuggerInitializeScriptEngine()
{
ULONG ProcessorsCount = KeQueryActiveProcessorCount(0);
PROCESSOR_DEBUGGING_STATE * CurrentDebuggerState = NULL;
//
- // Also allocate the debugging state
+ // Initialize script engines global variables holder
//
- if (!GlobalDebuggingStateAllocateZeroedMemory())
+ if (!g_ScriptGlobalVariables)
{
+ g_ScriptGlobalVariables = PlatformMemAllocateNonPagedPool(MAX_VAR_COUNT * sizeof(UINT64));
+ }
+
+ if (!g_ScriptGlobalVariables)
+ {
+ //
+ // Out of resource, initialization of script engine's global variable holders failed
+ //
return FALSE;
}
//
- // Allocate buffer for saving events
+ // Zero the global variables memory
//
- if (GlobalEventsAllocateZeroedMemory() == FALSE)
- {
- return FALSE;
- }
+ RtlZeroMemory(g_ScriptGlobalVariables, MAX_VAR_COUNT * sizeof(UINT64));
//
- // Set the core's IDs
+ // Initialize the local and temp variables
//
- for (UINT32 i = 0; i < ProcessorsCount; i++)
+ for (SIZE_T i = 0; i < ProcessorsCount; i++)
{
- g_DbgState[i].CoreId = i;
+ CurrentDebuggerState = &g_DbgState[i];
+
+ if (!CurrentDebuggerState->ScriptEngineCoreSpecificStackBuffer)
+ {
+ CurrentDebuggerState->ScriptEngineCoreSpecificStackBuffer = PlatformMemAllocateNonPagedPool(MAX_STACK_BUFFER_COUNT * sizeof(UINT64));
+ }
+
+ if (!CurrentDebuggerState->ScriptEngineCoreSpecificStackBuffer)
+ {
+ //
+ // Out of resource, initialization of script engine's stack buffer holders failed
+ //
+ return FALSE;
+ }
+
+ //
+ // Zero stack buffer memory
+ //
+ RtlZeroMemory(CurrentDebuggerState->ScriptEngineCoreSpecificStackBuffer, MAX_STACK_BUFFER_COUNT * sizeof(UINT64));
}
+ return TRUE;
+}
+
+/**
+ * @brief Initialize trap flag state and breakpoint related structures
+ *
+ * @return BOOLEAN Shows whether the initialization process was successful
+ * or not
+ */
+BOOLEAN
+DebuggerInitializeTrapsAndBreakpoints()
+{
+ //
+ // Zero the TRAP FLAG state memory
+ //
+ RtlZeroMemory(&g_TrapFlagState, sizeof(DEBUGGER_TRAP_FLAG_STATE));
+
+ //
+ // Request pages for breakpoint detail
+ //
+ PoolManagerRequestAllocation(sizeof(DEBUGGEE_BP_DESCRIPTOR),
+ MAXIMUM_BREAKPOINTS_WITHOUT_CONTINUE,
+ BREAKPOINT_DEFINITION_STRUCTURE);
+
+ //
+ // Initialize list of breakpoints and breakpoint id
+ //
+ g_MaximumBreakpointId = 0;
+ InitializeListHead(&g_BreakpointsListHead);
+
+ return TRUE;
+}
+
+/**
+ * @brief Initialize VMX event related state
+ *
+ * @return BOOLEAN Shows whether the initialization process was successful
+ * or not
+ */
+BOOLEAN
+DebuggerInitializeVmxEvents()
+{
//
// Initialize lists relating to the debugger events store
//
@@ -114,9 +179,9 @@ DebuggerInitialize()
InitializeListHead(&g_Events->XsetbvInstructionExecutionEventsHead);
//
- // Enabled Debugger Events
+ // Initialize NMI broadcasting mechanism
//
- g_EnableDebuggerEvents = TRUE;
+ VmFuncVmxBroadcastInitialize();
//
// Set initial state of triggering events for VMCALLs
@@ -124,90 +189,10 @@ DebuggerInitialize()
VmFuncSetTriggerEventForVmcalls(FALSE);
//
- // Set initial state of triggering events for VMCALLs
+ // Set initial state of triggering events for CPUIDs
//
VmFuncSetTriggerEventForCpuids(FALSE);
- //
- // Initialize script engines global variables holder
- //
- if (!g_ScriptGlobalVariables)
- {
- g_ScriptGlobalVariables = PlatformMemAllocateNonPagedPool(MAX_VAR_COUNT * sizeof(UINT64));
- }
-
- if (!g_ScriptGlobalVariables)
- {
- //
- // Out of resource, initialization of script engine's global variable holders failed
- //
- return FALSE;
- }
-
- //
- // Zero the global variables memory
- //
- RtlZeroMemory(g_ScriptGlobalVariables, MAX_VAR_COUNT * sizeof(UINT64));
-
- //
- // Zero the TRAP FLAG state memory
- //
- RtlZeroMemory(&g_TrapFlagState, sizeof(DEBUGGER_TRAP_FLAG_STATE));
-
- //
- // Initialize the local and temp variables
- //
- for (SIZE_T i = 0; i < ProcessorsCount; i++)
- {
- CurrentDebuggerState = &g_DbgState[i];
-
- if (!CurrentDebuggerState->ScriptEngineCoreSpecificStackBuffer)
- {
- CurrentDebuggerState->ScriptEngineCoreSpecificStackBuffer = PlatformMemAllocateNonPagedPool(MAX_STACK_BUFFER_COUNT * sizeof(UINT64));
- }
-
- if (!CurrentDebuggerState->ScriptEngineCoreSpecificStackBuffer)
- {
- //
- // Out of resource, initialization of script engine's stack buffer holders failed
- //
- return FALSE;
- }
-
- //
- // Zero stack buffer memory
- //
- RtlZeroMemory(CurrentDebuggerState->ScriptEngineCoreSpecificStackBuffer, MAX_STACK_BUFFER_COUNT * sizeof(UINT64));
- }
-
- //
- // Request pages for breakpoint detail
- //
- PoolManagerRequestAllocation(sizeof(DEBUGGEE_BP_DESCRIPTOR),
- MAXIMUM_BREAKPOINTS_WITHOUT_CONTINUE,
- BREAKPOINT_DEFINITION_STRUCTURE);
-
- //
- // Initialize list of breakpoints and breakpoint id
- //
- g_MaximumBreakpointId = 0;
- InitializeListHead(&g_BreakpointsListHead);
-
- //
- // Initialize NMI broadcasting mechanism
- //
- VmFuncVmxBroadcastInitialize();
-
- //
- // Initialize attaching mechanism,
- // we'll use the functionalities of the attaching in reading modules
- // of user mode applications (other than attaching mechanism itself)
- //
- if (!AttachingInitialize())
- {
- return FALSE;
- }
-
//
// Pre-allocate pools for possible EPT hooks
//
@@ -222,6 +207,78 @@ DebuggerInitialize()
//
}
+ //
+ // Enabled Debugger VMX Events
+ //
+ g_EnableDebuggerVmxEvents = TRUE;
+
+ return TRUE;
+}
+
+BOOLEAN
+DebuggerInitialize()
+{
+ ULONG ProcessorsCount = KeQueryActiveProcessorCount(0);
+
+ //
+ // Also allocate the debugging state
+ //
+ if (!GlobalDebuggingStateAllocateZeroedMemory())
+ {
+ return FALSE;
+ }
+
+ //
+ // Allocate buffer for saving events
+ //
+ if (GlobalEventsAllocateZeroedMemory() == FALSE)
+ {
+ return FALSE;
+ }
+
+ //
+ // Set the core's IDs
+ //
+ for (UINT32 i = 0; i < ProcessorsCount; i++)
+ {
+ g_DbgState[i].CoreId = i;
+ }
+
+ //
+ // Initialize Pool Manager
+ //
+ if (!PoolManagerInitialize())
+ {
+ LogError("Err, could not initialize pool manager");
+ return FALSE;
+ }
+
+ //
+ // Initialize script engine global variables and per-core stack buffers
+ //
+ if (!DebuggerInitializeScriptEngine())
+ {
+ return FALSE;
+ }
+
+ //
+ // Initialize trap flag state and breakpoint related structures
+ //
+ if (!DebuggerInitializeTrapsAndBreakpoints())
+ {
+ return FALSE;
+ }
+
+ //
+ // Initialize attaching mechanism,
+ // we'll use the functionalities of the attaching in reading modules
+ // of user mode applications (other than attaching mechanism itself)
+ //
+ if (!AttachingInitialize())
+ {
+ return FALSE;
+ }
+
return TRUE;
}
@@ -253,7 +310,7 @@ DebuggerUninitialize()
//
// Disable triggering events
//
- g_EnableDebuggerEvents = FALSE;
+ g_EnableDebuggerVmxEvents = FALSE;
//
// Clear all events (Check if the kernel debugger is enable
@@ -288,6 +345,11 @@ DebuggerUninitialize()
//
VmFuncVmxBroadcastUninitialize();
+ //
+ // Free the Pool manager
+ //
+ PoolManagerUninitialize();
+
//
// Free g_Events
//
@@ -1087,7 +1149,7 @@ DebuggerTriggerEvents(VMM_EVENT_TYPE_ENUM EventType,
//
// Check if triggering debugging actions are allowed or not
//
- if (!g_EnableDebuggerEvents || g_InterceptBreakpointsAndEventsForCommandsInRemoteComputer)
+ if (!g_EnableDebuggerVmxEvents || g_InterceptBreakpointsAndEventsForCommandsInRemoteComputer)
{
//
// Debugger is not enabled
diff --git a/hyperdbg/hyperhv/code/memory/PoolManager.c b/hyperdbg/hyperkd/code/debugger/memory/PoolManager.c
similarity index 99%
rename from hyperdbg/hyperhv/code/memory/PoolManager.c
rename to hyperdbg/hyperkd/code/debugger/memory/PoolManager.c
index 1a101067..dbd45d0c 100644
--- a/hyperdbg/hyperhv/code/memory/PoolManager.c
+++ b/hyperdbg/hyperkd/code/debugger/memory/PoolManager.c
@@ -307,7 +307,7 @@ PoolManagerCheckAndPerformAllocationAndDeallocation()
//
// let's make sure we're on vmx non-root and also we have new allocation
//
- if (VmxGetCurrentExecutionMode() == TRUE)
+ if (VmFuncVmxGetCurrentExecutionMode() == TRUE)
{
//
// allocation's can't be done from vmx root
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index 0239dfa9..e8455f71 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -150,17 +150,26 @@ LoaderInitHyperLog()
}
/**
- * @brief Initialize the VMM and Debugger
+ * @brief Initialize the VMM
*
* @param InitVmmPacket The packet to fill the result of the initialization
*
* @return BOOLEAN
*/
BOOLEAN
-LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
+LoaderInitVmm(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
{
VMM_CALLBACKS VmmCallbacks = {0};
+ //
+ // Check if KD is not already initialized, if so we cannot initialize VMM
+ //
+ if (!g_KdInitialized)
+ {
+ InitVmmPacket->KernelStatus = DEBUGGER_ERROR_VMM_CANNOT_BE_INITIALIZED_IF_DEBUGGER_IS_NOT_LOADED;
+ return FALSE;
+ }
+
//
// Check if HyperTrace is already initialized, if so we cannot initialize VMM
//
@@ -206,6 +215,13 @@ LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
VmmCallbacks.KdCheckAndHandleNmiCallback = KdCheckAndHandleNmiCallback;
VmmCallbacks.KdQueryDebuggerQueryThreadOrProcessTracingDetailsByCoreId = KdQueryDebuggerQueryThreadOrProcessTracingDetailsByCoreId;
+ //
+ // Fill the pool manager callbacks
+ //
+ VmmCallbacks.PoolManagerRequestAllocation = PoolManagerRequestAllocation;
+ VmmCallbacks.PoolManagerRequestPool = PoolManagerRequestPool;
+ VmmCallbacks.PoolManagerFreePool = PoolManagerFreePool;
+
//
// Fill the interception callbacks
//
@@ -218,29 +234,20 @@ LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
{
LogDebugInfo("HyperDbg's hypervisor loaded successfully");
+ //
+ // Initialize VMX event related state from the debugger
+ //
+ if (!DebuggerInitializeVmxEvents())
+ {
+ return FALSE;
+ }
+
//
// VMM module initialized
//
- g_AllowVmmIoctls = TRUE;
+ g_VmmInitialized = TRUE;
- //
- // Initialize the debugger
- //
- if (DebuggerInitialize())
- {
- LogDebugInfo("HyperDbg's debugger loaded successfully");
-
- //
- // Set the kernel status to success
- //
- InitVmmPacket->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
-
- return TRUE;
- }
- else
- {
- LogError("Err, HyperDbg's debugger was not loaded");
- }
+ return TRUE;
}
else
{
@@ -250,6 +257,83 @@ LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
return FALSE;
}
+/**
+ * @brief Initialize the debugger
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+LoaderInitKd()
+{
+ //
+ // If the debugger is already initialized, we don't need to initialize it again
+ // and simply return true
+ //
+ if (g_KdInitialized)
+ {
+ return TRUE;
+ }
+
+ //
+ // The debugger is not initialized, so we try to initialize it
+ //
+ if (DebuggerInitialize())
+ {
+ LogDebugInfo("HyperDbg's debugger loaded successfully");
+
+ //
+ // KD module initialized
+ //
+ g_KdInitialized = TRUE;
+
+ return TRUE;
+ }
+
+ LogError("Err, HyperDbg's debugger was not loaded");
+ return FALSE;
+}
+
+/**
+ * @brief Initialize the VMM and Debugger
+ *
+ * @param InitVmmPacket The packet to fill the result of the initialization
+ *
+ * @return BOOLEAN
+ */
+BOOLEAN
+LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
+{
+ //
+ // First we need to initialize the debugger
+ // because the VMM relies on the debugger for some of its functionalities,
+ // so if we cannot initialize the debugger we cannot initialize the VMM
+ //
+ if (!LoaderInitKd())
+ {
+ //
+ // Unable to initialize the debugger, so we cannot initialize the VMM, and we return false
+ //
+ InitVmmPacket->KernelStatus = DEBUGGER_ERROR_CANNOT_INITIALIZE_DEBUGGER;
+
+ return FALSE;
+ }
+
+ //
+ // Now we can initialize the VMM
+ //
+ if (!LoaderInitVmm(InitVmmPacket))
+ {
+ return FALSE;
+ }
+
+ //
+ // Set the kernel status to success
+ //
+ InitVmmPacket->KernelStatus = DEBUGGER_OPERATION_WAS_SUCCESSFUL;
+
+ return TRUE;
+}
+
/**
* @brief Uninitialize the log tracer
*
diff --git a/hyperdbg/hyperkd/header/debugger/core/Debugger.h b/hyperdbg/hyperkd/header/debugger/core/Debugger.h
index c6013525..a8fe8f2e 100644
--- a/hyperdbg/hyperkd/header/debugger/core/Debugger.h
+++ b/hyperdbg/hyperkd/header/debugger/core/Debugger.h
@@ -188,6 +188,15 @@ DebuggerGetLastError();
VOID
DebuggerSetLastError(UINT32 LastError);
+BOOLEAN
+DebuggerInitializeScriptEngine();
+
+BOOLEAN
+DebuggerInitializeTrapsAndBreakpoints();
+
+BOOLEAN
+DebuggerInitializeVmxEvents();
+
BOOLEAN
DebuggerInitialize();
diff --git a/hyperdbg/hyperhv/header/memory/PoolManager.h b/hyperdbg/hyperkd/header/debugger/memory/PoolManager.h
similarity index 88%
rename from hyperdbg/hyperhv/header/memory/PoolManager.h
rename to hyperdbg/hyperkd/header/debugger/memory/PoolManager.h
index 5c5dbc7b..ba8581cb 100644
--- a/hyperdbg/hyperhv/header/memory/PoolManager.h
+++ b/hyperdbg/hyperkd/header/debugger/memory/PoolManager.h
@@ -114,18 +114,23 @@ static VOID PlmgrFreeRequestNewAllocation(VOID);
// Public Interfaces
//
-/**
- * @brief Initializes the Pool Manager and pre-allocate some pools
- *
- * @return BOOLEAN
- */
BOOLEAN
PoolManagerInitialize();
-/**
- * @brief De-allocate all the allocated pools
- *
- * @return VOID
- */
VOID
PoolManagerUninitialize();
+
+VOID
+PoolManagerShowPreAllocatedPools();
+
+BOOLEAN
+PoolManagerCheckAndPerformAllocationAndDeallocation();
+
+BOOLEAN
+PoolManagerRequestAllocation(SIZE_T Size, UINT32 Count, POOL_ALLOCATION_INTENTION Intention);
+
+UINT64
+PoolManagerRequestPool(POOL_ALLOCATION_INTENTION Intention, BOOLEAN RequestNewPool, UINT32 Size);
+
+BOOLEAN
+PoolManagerFreePool(UINT64 AddressToFree);
diff --git a/hyperdbg/hyperkd/header/driver/Loader.h b/hyperdbg/hyperkd/header/driver/Loader.h
index ff112c85..32a29e7e 100644
--- a/hyperdbg/hyperkd/header/driver/Loader.h
+++ b/hyperdbg/hyperkd/header/driver/Loader.h
@@ -19,6 +19,12 @@
BOOLEAN
LoaderInitHyperLog();
+BOOLEAN
+LoaderInitKd();
+
+BOOLEAN
+LoaderInitVmm(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket);
+
BOOLEAN
LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket);
diff --git a/hyperdbg/hyperkd/header/globals/Global.h b/hyperdbg/hyperkd/header/globals/Global.h
index 68f7b133..02195709 100644
--- a/hyperdbg/hyperkd/header/globals/Global.h
+++ b/hyperdbg/hyperkd/header/globals/Global.h
@@ -130,7 +130,7 @@ UINT32 g_LastError;
* @brief Determines whether the debugger events should be active or not
*
*/
-BOOLEAN g_EnableDebuggerEvents;
+BOOLEAN g_EnableDebuggerVmxEvents;
/**
* @brief List header of breakpoints for debugger-mode
diff --git a/hyperdbg/hyperkd/header/pch.h b/hyperdbg/hyperkd/header/pch.h
index 8da24baa..630ee6b9 100644
--- a/hyperdbg/hyperkd/header/pch.h
+++ b/hyperdbg/hyperkd/header/pch.h
@@ -115,6 +115,7 @@
#include "header/debugger/memory/Memory.h"
#include "header/common/Common.h"
#include "header/common/Synchronization.h"
+#include "header/debugger/memory/PoolManager.h"
#include "header/debugger/memory/Allocations.h"
#include "header/debugger/kernel-level/Kd.h"
#include "header/debugger/user-level/Ud.h"
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj b/hyperdbg/hyperkd/hyperkd.vcxproj
index 2438e56a..c7a6d222 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj
@@ -137,6 +137,7 @@
+
@@ -185,6 +186,7 @@
+
diff --git a/hyperdbg/hyperkd/hyperkd.vcxproj.filters b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
index 375ef4fa..55eeeb30 100644
--- a/hyperdbg/hyperkd/hyperkd.vcxproj.filters
+++ b/hyperdbg/hyperkd/hyperkd.vcxproj.filters
@@ -279,6 +279,9 @@
code\platform
+
+ code\debugger\memory
+
@@ -422,6 +425,9 @@
header\platform
+
+ header\debugger\memory
+
diff --git a/hyperdbg/include/SDK/headers/ErrorCodes.h b/hyperdbg/include/SDK/headers/ErrorCodes.h
index b205383f..bf31a55c 100644
--- a/hyperdbg/include/SDK/headers/ErrorCodes.h
+++ b/hyperdbg/include/SDK/headers/ErrorCodes.h
@@ -641,6 +641,18 @@
*/
#define DEBUGGER_ERROR_VMM_CANNOT_BE_INITIALIZED_IF_HYPERTRACE_IS_LOADED 0xc0000063
+/**
+ * @brief error, VMM cannot be initialized if the debugger is not loaded
+ *
+ */
+#define DEBUGGER_ERROR_VMM_CANNOT_BE_INITIALIZED_IF_DEBUGGER_IS_NOT_LOADED 0xc0000064
+
+/**
+ * @brief error, cannot initialize the debugger
+ *
+ */
+#define DEBUGGER_ERROR_CANNOT_INITIALIZE_DEBUGGER 0xc0000065
+
//
// WHEN YOU ADD ANYTHING TO THIS LIST OF ERRORS, THEN
// MAKE SURE TO ADD AN ERROR MESSAGE TO ShowErrorMessage(UINT32 Error)
diff --git a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
index b24083d5..a82400cc 100644
--- a/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
+++ b/hyperdbg/include/SDK/imports/kernel/HyperDbgVmmImports.h
@@ -756,25 +756,6 @@ ReadPhysicalMemoryUsingMapIoSpace(PVOID PhysicalAddress, PVOID Buffer, SIZE_T Bu
IMPORT_EXPORT_VMM BOOLEAN
WritePhysicalMemoryUsingMapIoSpace(PVOID PhysicalAddress, PVOID Buffer, SIZE_T BufferSize);
-//////////////////////////////////////////////////
-// Pool Manager //
-//////////////////////////////////////////////////
-
-IMPORT_EXPORT_VMM BOOLEAN
-PoolManagerCheckAndPerformAllocationAndDeallocation();
-
-IMPORT_EXPORT_VMM BOOLEAN
-PoolManagerRequestAllocation(SIZE_T Size, UINT32 Count, POOL_ALLOCATION_INTENTION Intention);
-
-IMPORT_EXPORT_VMM UINT64
-PoolManagerRequestPool(POOL_ALLOCATION_INTENTION Intention, BOOLEAN RequestNewPool, UINT32 Size);
-
-IMPORT_EXPORT_VMM BOOLEAN
-PoolManagerFreePool(UINT64 AddressToFree);
-
-IMPORT_EXPORT_VMM VOID
-PoolManagerShowPreAllocatedPools();
-
//////////////////////////////////////////////////
// VMX Registers Modification //
//////////////////////////////////////////////////
diff --git a/hyperdbg/include/SDK/modules/VMM.h b/hyperdbg/include/SDK/modules/VMM.h
index ed20c43c..0b818ab3 100644
--- a/hyperdbg/include/SDK/modules/VMM.h
+++ b/hyperdbg/include/SDK/modules/VMM.h
@@ -82,6 +82,24 @@ typedef BOOLEAN (*DEBUGGING_CALLBACK_HANDLE_DEBUG_BREAKPOINT_EXCEPTION)(UINT32 C
*/
typedef BOOLEAN (*DEBUGGING_CALLBACK_CHECK_THREAD_INTERCEPTION)(UINT32 CoreId);
+/**
+ * @brief Request pool allocation
+ *
+ */
+typedef BOOLEAN (*POOL_MANAGER_REQUEST_ALLOCATION)(SIZE_T Size, UINT32 Count, POOL_ALLOCATION_INTENTION Intention);
+
+/**
+ * @brief Request pool
+ *
+ */
+typedef UINT64 (*POOL_MANAGER_REQUEST_POOL)(POOL_ALLOCATION_INTENTION Intention, BOOLEAN RequestNewPool, UINT32 Size);
+
+/**
+ * @brief Free pool
+ *
+ */
+typedef BOOLEAN (*POOL_MANAGER_FREE_POOL)(UINT64 AddressToFree);
+
/**
* @brief Handle registered MTF callback
*
@@ -202,6 +220,13 @@ typedef struct _VMM_CALLBACKS
DEBUGGING_CALLBACK_HANDLE_DEBUG_BREAKPOINT_EXCEPTION DebuggingCallbackHandleDebugBreakpointException; // Fixed
DEBUGGING_CALLBACK_CHECK_THREAD_INTERCEPTION DebuggingCallbackCheckThreadInterception; // Fixed
+ //
+ // Pool manager callbacks
+ //
+ POOL_MANAGER_REQUEST_ALLOCATION PoolManagerRequestAllocation; // Fixed
+ POOL_MANAGER_REQUEST_POOL PoolManagerRequestPool; // Fixed
+ POOL_MANAGER_FREE_POOL PoolManagerFreePool; // Fixed
+
//
// Interception callbacks
//
diff --git a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
index fdc35c08..72b1a3ff 100644
--- a/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
+++ b/hyperdbg/libhyperdbg/code/debugger/core/debugger.cpp
@@ -626,6 +626,16 @@ ShowErrorMessage(UINT32 Error)
Error);
break;
+ case DEBUGGER_ERROR_VMM_CANNOT_BE_INITIALIZED_IF_DEBUGGER_IS_NOT_LOADED:
+ ShowMessages("err, the VMM module cannot be initialized because the debugger is not loaded (%x)\n",
+ Error);
+ break;
+
+ case DEBUGGER_ERROR_CANNOT_INITIALIZE_DEBUGGER:
+ ShowMessages("err, cannot initialize the debugger (%x)\n",
+ Error);
+ break;
+
default:
ShowMessages("err, error not found (%x)\n",
Error);
From adfe5f7d1476f924bd50cbb1c735ccf2a388372c Mon Sep 17 00:00:00 2001
From: sina
Date: Thu, 4 Jun 2026 00:55:05 +0200
Subject: [PATCH 239/323] uninit VMM and KD separately
---
.../hyperdbg_driver/code/driver/Driver.c | 2 +-
.../hyperdbg_driver/code/driver/Loader.c | 2 +-
.../hyperdbg_driver/header/driver/Loader.h | 2 +-
.../hyperkd/code/debugger/core/Debugger.c | 44 ++++++++----
hyperdbg/hyperkd/code/driver/Driver.c | 2 +-
hyperdbg/hyperkd/code/driver/Ioctl.c | 25 +++----
hyperdbg/hyperkd/code/driver/Loader.c | 72 +++++++++++++++++--
.../hyperkd/header/debugger/core/Debugger.h | 5 +-
hyperdbg/hyperkd/header/driver/Loader.h | 17 ++---
9 files changed, 122 insertions(+), 49 deletions(-)
diff --git a/examples/kernel/hyperdbg_driver/code/driver/Driver.c b/examples/kernel/hyperdbg_driver/code/driver/Driver.c
index 9a44e862..b4092073 100644
--- a/examples/kernel/hyperdbg_driver/code/driver/Driver.c
+++ b/examples/kernel/hyperdbg_driver/code/driver/Driver.c
@@ -106,7 +106,7 @@ DrvUnload(PDRIVER_OBJECT DriverObject)
//
// Unloading VMM and Debugger
//
- LoaderUninitializeLogTracer();
+ LoaderUninitLogTracer();
}
/**
diff --git a/examples/kernel/hyperdbg_driver/code/driver/Loader.c b/examples/kernel/hyperdbg_driver/code/driver/Loader.c
index a49fe01f..7a2ed944 100644
--- a/examples/kernel/hyperdbg_driver/code/driver/Loader.c
+++ b/examples/kernel/hyperdbg_driver/code/driver/Loader.c
@@ -101,7 +101,7 @@ LoaderInitVmmAndReversingMachine()
* @return VOID
*/
VOID
-LoaderUninitializeLogTracer()
+LoaderUninitLogTracer()
{
LogDebugInfo("Unloading HyperDbg's debugger...\n");
diff --git a/examples/kernel/hyperdbg_driver/header/driver/Loader.h b/examples/kernel/hyperdbg_driver/header/driver/Loader.h
index c12b0d12..7ead903c 100644
--- a/examples/kernel/hyperdbg_driver/header/driver/Loader.h
+++ b/examples/kernel/hyperdbg_driver/header/driver/Loader.h
@@ -17,7 +17,7 @@
//////////////////////////////////////////////////
VOID
-LoaderUninitializeLogTracer();
+LoaderUninitLogTracer();
BOOLEAN
LoaderInitVmmAndReversingMachine();
diff --git a/hyperdbg/hyperkd/code/debugger/core/Debugger.c b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
index db729fbd..156ecdc8 100644
--- a/hyperdbg/hyperkd/code/debugger/core/Debugger.c
+++ b/hyperdbg/hyperkd/code/debugger/core/Debugger.c
@@ -139,13 +139,13 @@ DebuggerInitializeTrapsAndBreakpoints()
}
/**
- * @brief Initialize VMX event related state
+ * @brief Initialize VMM operations (events and related operations)
*
* @return BOOLEAN Shows whether the initialization process was successful
* or not
*/
BOOLEAN
-DebuggerInitializeVmxEvents()
+DebuggerInitializeVmmOperations()
{
//
// Initialize lists relating to the debugger events store
@@ -215,6 +215,12 @@ DebuggerInitializeVmxEvents()
return TRUE;
}
+/**
+ * @brief Initialize Debugger Structures and Routines
+ *
+ * @return BOOLEAN Shows whether the initialization process was successful
+ * or not
+ */
BOOLEAN
DebuggerInitialize()
{
@@ -283,17 +289,13 @@ DebuggerInitialize()
}
/**
- * @brief Uninitialize Debugger Structures and Routines
+ * @brief Uninitialize Debugger VMM Operations (Events and other related operations)
*
+ * @return VOID
*/
VOID
-DebuggerUninitialize()
+DebuggerUninitializeVmmOperations()
{
- ULONG ProcessorsCount;
- PROCESSOR_DEBUGGING_STATE * CurrentDebuggerState = NULL;
-
- ProcessorsCount = KeQueryActiveProcessorCount(0);
-
//
// *** Disable, terminate and clear all the events ***
//
@@ -325,11 +327,6 @@ DebuggerUninitialize()
DebuggerClearAllEvents(FALSE, FALSE);
}
- //
- // Uninitialize the HyperTrace (if it was initialized)
- //
- HyperTraceUnInit();
-
//
// Uninitialize kernel debugger
//
@@ -344,6 +341,25 @@ DebuggerUninitialize()
// Uninitialize NMI broadcasting mechanism
//
VmFuncVmxBroadcastUninitialize();
+}
+
+/**
+ * @brief Uninitialize Debugger Structures and Routines
+ *
+ * @return VOID
+ */
+VOID
+DebuggerUninitialize()
+{
+ ULONG ProcessorsCount;
+ PROCESSOR_DEBUGGING_STATE * CurrentDebuggerState = NULL;
+
+ ProcessorsCount = KeQueryActiveProcessorCount(0);
+
+ //
+ // Uninitialize the HyperTrace (if it was initialized)
+ //
+ HyperTraceUnInit();
//
// Free the Pool manager
diff --git a/hyperdbg/hyperkd/code/driver/Driver.c b/hyperdbg/hyperkd/code/driver/Driver.c
index 48059898..053eb828 100644
--- a/hyperdbg/hyperkd/code/driver/Driver.c
+++ b/hyperdbg/hyperkd/code/driver/Driver.c
@@ -103,7 +103,7 @@ DrvUnload(PDRIVER_OBJECT DriverObject)
//
// Unloading Log Tracer
//
- LoaderUninitializeLogTracer();
+ LoaderUninitLogTracer();
}
/**
diff --git a/hyperdbg/hyperkd/code/driver/Ioctl.c b/hyperdbg/hyperkd/code/driver/Ioctl.c
index c74b1742..39150f4b 100644
--- a/hyperdbg/hyperkd/code/driver/Ioctl.c
+++ b/hyperdbg/hyperkd/code/driver/Ioctl.c
@@ -145,13 +145,13 @@ IoctlCheckIoctlAllowed(ULONG Ioctl)
NTSTATUS
DrvDispatchBasicIoControl(PIRP Irp, PIO_STACK_LOCATION IrpStack, BOOLEAN * DoNotChangeInformation)
{
- PREGISTER_NOTIFY_BUFFER RegisterEventRequest;
- PDEBUGGER_INIT_VMM_PACKET InitVmmRequest;
+ PREGISTER_NOTIFY_BUFFER RegisterEventRequest;
+ PDEBUGGER_INIT_VMM_PACKET InitVmmRequest;
PDEBUGGER_INIT_HYPERTRACE_PACKET InitHyperTraceRequest;
- ULONG InBuffLength;
- ULONG OutBuffLength;
- NTSTATUS Status = STATUS_SUCCESS;
- UINT32 Ioctl = IrpStack->Parameters.DeviceIoControl.IoControlCode;
+ ULONG InBuffLength;
+ ULONG OutBuffLength;
+ NTSTATUS Status = STATUS_SUCCESS;
+ UINT32 Ioctl = IrpStack->Parameters.DeviceIoControl.IoControlCode;
switch (Ioctl)
{
@@ -172,9 +172,9 @@ DrvDispatchBasicIoControl(PIRP Irp, PIO_STACK_LOCATION IrpStack, BOOLEAN * DoNot
}
//
- // Initialize the vmm and the debugger
+ // Initialize the debugger and the vmm
//
- if (LoaderInitVmmAndDebugger(InitVmmRequest))
+ if (LoaderInitDebuggerAndVmm(InitVmmRequest))
{
Status = STATUS_SUCCESS;
}
@@ -379,14 +379,9 @@ DrvDispatchVmmIoControl(PIRP Irp, PIO_STACK_LOCATION IrpStack, BOOLEAN * DoNotCh
case IOCTL_TERMINATE_VMX:
//
- // Uninitialize the debugger and its sub-mechanisms
+ // Uninitialize the VMM and the debugger
//
- DebuggerUninitialize();
-
- //
- // Terminate VMX
- //
- VmFuncUninitVmm();
+ LoaderUninitVmmAndDebugger();
Status = STATUS_SUCCESS;
diff --git a/hyperdbg/hyperkd/code/driver/Loader.c b/hyperdbg/hyperkd/code/driver/Loader.c
index e8455f71..ac431eb8 100644
--- a/hyperdbg/hyperkd/code/driver/Loader.c
+++ b/hyperdbg/hyperkd/code/driver/Loader.c
@@ -235,9 +235,9 @@ LoaderInitVmm(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
LogDebugInfo("HyperDbg's hypervisor loaded successfully");
//
- // Initialize VMX event related state from the debugger
+ // Initialize VMM opeartions (event related state from the debugger)
//
- if (!DebuggerInitializeVmxEvents())
+ if (!DebuggerInitializeVmmOperations())
{
return FALSE;
}
@@ -294,14 +294,14 @@ LoaderInitKd()
}
/**
- * @brief Initialize the VMM and Debugger
+ * @brief Initialize the debugger and the vmm
*
* @param InitVmmPacket The packet to fill the result of the initialization
*
* @return BOOLEAN
*/
BOOLEAN
-LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
+LoaderInitDebuggerAndVmm(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
{
//
// First we need to initialize the debugger
@@ -334,13 +334,75 @@ LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
return TRUE;
}
+/**
+ * @brief Uninitialize the VMM
+ *
+ * @return VOID
+ */
+VOID
+LoaderUninitVmm()
+{
+ //
+ // Mark VMM as uninitialized before uninitializing it to avoid any potential reentrancy issues during the uninitialization process
+ //
+ g_VmmInitialized = FALSE;
+
+ //
+ // First remove all VMM related state from the debugger
+ //
+ DebuggerUninitializeVmmOperations();
+
+ //
+ // Terminate VMM and its sub-mechanisms
+ //
+ VmFuncUninitVmm();
+}
+
+/**
+ * @brief Uninitialize the debugger
+ *
+ * @return VOID
+ */
+VOID
+LoaderUninitKd()
+{
+ //
+ // Mark KD as uninitialized before uninitializing it to avoid any potential reentrancy issues during the uninitialization process
+ //
+ g_KdInitialized = FALSE;
+
+ //
+ // Uninitialize the debugger and its sub-mechanisms
+ //
+ DebuggerUninitialize();
+}
+
+/**
+ * @brief Uninitialize the VMM and the debugger
+ *
+ * @return VOID
+ */
+VOID
+LoaderUninitVmmAndDebugger()
+{
+ //
+ // Uninitialize the VMM first because it relies on the debugger for some
+ //
+ LoaderUninitVmm();
+
+ //
+ // Uninitialize the debugger
+ //
+ LoaderUninitKd();
+}
+
/**
* @brief Uninitialize the log tracer
*
* @return VOID
*/
VOID
-LoaderUninitializeLogTracer()
+LoaderUninitLogTracer()
{
#if !UseDbgPrintInsteadOfUsermodeMessageTracking
diff --git a/hyperdbg/hyperkd/header/debugger/core/Debugger.h b/hyperdbg/hyperkd/header/debugger/core/Debugger.h
index a8fe8f2e..3553e20a 100644
--- a/hyperdbg/hyperkd/header/debugger/core/Debugger.h
+++ b/hyperdbg/hyperkd/header/debugger/core/Debugger.h
@@ -195,11 +195,14 @@ BOOLEAN
DebuggerInitializeTrapsAndBreakpoints();
BOOLEAN
-DebuggerInitializeVmxEvents();
+DebuggerInitializeVmmOperations();
BOOLEAN
DebuggerInitialize();
+VOID
+DebuggerUninitializeVmmOperations();
+
VOID
DebuggerUninitialize();
diff --git a/hyperdbg/hyperkd/header/driver/Loader.h b/hyperdbg/hyperkd/header/driver/Loader.h
index 32a29e7e..9a5dc75a 100644
--- a/hyperdbg/hyperkd/header/driver/Loader.h
+++ b/hyperdbg/hyperkd/header/driver/Loader.h
@@ -19,17 +19,14 @@
BOOLEAN
LoaderInitHyperLog();
-BOOLEAN
-LoaderInitKd();
-
-BOOLEAN
-LoaderInitVmm(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket);
-
-BOOLEAN
-LoaderInitVmmAndDebugger(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket);
-
BOOLEAN
LoaderInitHyperTrace(PDEBUGGER_INIT_HYPERTRACE_PACKET InitHyperTracePacket, BOOLEAN RunningOnHypervisorEnvironment);
+BOOLEAN
+LoaderInitDebuggerAndVmm(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket);
+
VOID
-LoaderUninitializeLogTracer();
+LoaderUninitVmmAndDebugger();
+
+VOID
+LoaderUninitLogTracer();
From 2dc1a26f1c658865bd6115120204bbaf609a18c1 Mon Sep 17 00:00:00 2001
From: Masoud Rahimi Jafari
Date: Thu, 4 Jun 2026 01:55:42 +0200
Subject: [PATCH 240/323] Added user app example for pt tracing
---
.../user/hyperdbg_app/code/hyperdbg-app.cpp | 404 ++++++++++++++----
.../user/hyperdbg_app/hyperdbg_app.vcxproj | 19 +-
hyperdbg/hyperkd/code/driver/Ioctl.c | 114 +++++
hyperdbg/include/SDK/headers/Ioctls.h | 8 +
.../include/SDK/headers/RequestStructures.h | 6 +-
.../SDK/imports/user/HyperDbgLibImports.h | 10 +
.../commands/extension-commands/pt.cpp | 49 +++
hyperdbg/libhyperdbg/code/export/export.cpp | 28 ++
hyperdbg/libhyperdbg/header/debugger.h | 6 +
9 files changed, 558 insertions(+), 86 deletions(-)
diff --git a/examples/user/hyperdbg_app/code/hyperdbg-app.cpp b/examples/user/hyperdbg_app/code/hyperdbg-app.cpp
index 2aedaa33..0a5d4e42 100644
--- a/examples/user/hyperdbg_app/code/hyperdbg-app.cpp
+++ b/examples/user/hyperdbg_app/code/hyperdbg-app.cpp
@@ -1,8 +1,18 @@
/**
* @file hyperdbg-app.cpp
* @author Sina Karvandi (sina@hyperdbg.org)
- * @brief Controller of the reversing machine's module
+ * @brief Run a target executable under Intel PT (via HyperDbg's hypertrace
+ * engine) and decode the captured trace with libipt.
* @details
+ * Flow:
+ * 1. load the HyperDbg VMM (local / VMI mode)
+ * 2. create the target process suspended
+ * 3. !pt filter for that process only (CR3 filter, resolved from PID)
+ * 4. !pt enable + pt_mmap (map per-CPU PT buffers into this process)
+ * 5. resume the target and wait for it to finish
+ * 6. !pt pause + !pt size (snapshot per-CPU valid byte counts)
+ * 7. decode every per-CPU buffer with libipt and print the packets
+ * 8. !pt disable (tears the mappings + buffers down) + unload VMM
*
* @version 0.2
* @date 2023-02-01
@@ -12,13 +22,20 @@
*/
#include "pch.h"
-PVOID g_SharedMessageBuffer = NULL;
+#include
+
+//
+// libipt (Intel Processor Trace decoder).
+//
+// The include / library directories come from the 'LibIptDir' MSBuild macro
+// defined in hyperdbg_app.vcxproj — set it to your libipt install root (the
+// folder that contains 'include\intel-pt.h' and 'lib\libipt.lib'), and make
+// sure 'libipt.dll' is reachable at run time (next to the .exe or on PATH).
+//
+#include
/**
- * @brief Show messages
- *
- * @param Text
- * @return int
+ * @brief Show messages coming from HyperDbg (driver + library)
*/
int
hyperdbg_show_messages(const char * Text)
@@ -28,87 +45,308 @@ hyperdbg_show_messages(const char * Text)
}
/**
- * @brief Show messages (shared buffer)
- *
- * @param Text
- * @return int
+ * @brief Human-readable name for a PT packet type
*/
-int
-hyperdbg_show_messages_shared_buffer()
+static const char *
+PtPacketName(enum pt_packet_type Type)
{
- printf("%s", (char *)g_SharedMessageBuffer);
+ switch (Type)
+ {
+ case ppt_psb: return "PSB";
+ case ppt_psbend: return "PSBEND";
+ case ppt_pad: return "PAD";
+ case ppt_fup: return "FUP";
+ case ppt_tip: return "TIP";
+ case ppt_tip_pge: return "TIP.PGE";
+ case ppt_tip_pgd: return "TIP.PGD";
+ case ppt_tnt_8: return "TNT-8";
+ case ppt_tnt_64: return "TNT-64";
+ case ppt_mode: return "MODE";
+ case ppt_pip: return "PIP";
+ case ppt_vmcs: return "VMCS";
+ case ppt_cbr: return "CBR";
+ case ppt_tsc: return "TSC";
+ case ppt_tma: return "TMA";
+ case ppt_mtc: return "MTC";
+ case ppt_cyc: return "CYC";
+ case ppt_stop: return "STOP";
+ case ppt_ovf: return "OVF";
+ case ppt_mnt: return "MNT";
+ case ppt_exstop: return "EXSTOP";
+ case ppt_ptw: return "PTW";
+ default: return "UNKNOWN";
+ }
+}
+
+/**
+ * @brief Pretty-print a single decoded PT packet
+ */
+static void
+PtPrintPacket(UINT32 Cpu, const struct pt_packet * Packet)
+{
+ switch (Packet->type)
+ {
+ case ppt_pad:
+ //
+ // Padding — skip to keep the dump readable
+ //
+ break;
+ case ppt_fup:
+ case ppt_tip:
+ case ppt_tip_pge:
+ case ppt_tip_pgd:
+ printf(" [cpu %u] %-8s ip=0x%016llx\n", Cpu, PtPacketName(Packet->type), (unsigned long long)Packet->payload.ip.ip);
+ break;
+ case ppt_tnt_8:
+ case ppt_tnt_64:
+ printf(" [cpu %u] %-8s taken/not-taken bits=%u\n", Cpu, PtPacketName(Packet->type), Packet->payload.tnt.bit_size);
+ break;
+ case ppt_pip:
+ printf(" [cpu %u] %-8s cr3=0x%016llx\n", Cpu, PtPacketName(Packet->type), (unsigned long long)Packet->payload.pip.cr3);
+ break;
+ case ppt_tsc:
+ printf(" [cpu %u] %-8s tsc=%llu\n", Cpu, PtPacketName(Packet->type), (unsigned long long)Packet->payload.tsc.tsc);
+ break;
+ case ppt_cbr:
+ printf(" [cpu %u] %-8s ratio=%u\n", Cpu, PtPacketName(Packet->type), Packet->payload.cbr.ratio);
+ break;
+ default:
+ printf(" [cpu %u] %-8s\n", Cpu, PtPacketName(Packet->type));
+ break;
+ }
+}
+
+/**
+ * @brief Decode one CPU's raw PT byte stream with libipt and print packets
+ *
+ * @param Cpu logical processor index (for labelling)
+ * @param Buf start of the mapped PT buffer (main + overflow)
+ * @param Size number of valid bytes to decode
+ */
+static void
+PtDecodeBuffer(UINT32 Cpu, const UINT8 * Buf, UINT64 Size)
+{
+ struct pt_config Config;
+ struct pt_packet_decoder * Decoder;
+ UINT64 Count = 0;
+ int Status;
+
+ printf("\n==== core %u : decoding %llu bytes ====\n", Cpu, (unsigned long long)Size);
+
+ memset(&Config, 0, sizeof(Config));
+ Config.size = sizeof(Config);
+ Config.begin = (uint8_t *)Buf;
+ Config.end = (uint8_t *)Buf + Size;
+
+ Decoder = pt_pkt_alloc_decoder(&Config);
+ if (Decoder == NULL)
+ {
+ printf(" err, could not allocate libipt packet decoder\n");
+ return;
+ }
+
+ //
+ // Sync to the first PSB in the stream. The buffer is circular, so the
+ // very start may be mid-packet garbage — sync_forward skips to a real
+ // packet boundary.
+ //
+ Status = pt_pkt_sync_forward(Decoder);
+ if (Status < 0)
+ {
+ printf(" no synchronization point found (%s)\n", pt_errstr(pt_errcode(Status)));
+ pt_pkt_free_decoder(Decoder);
+ return;
+ }
+
+ for (;;)
+ {
+ struct pt_packet Packet;
+
+ Status = pt_pkt_next(Decoder, &Packet, sizeof(Packet));
+ if (Status < 0)
+ {
+ if (Status == -pte_eos)
+ {
+ //
+ // End of stream
+ //
+ break;
+ }
+
+ //
+ // Decode error — try to resync at the next PSB
+ //
+ Status = pt_pkt_sync_forward(Decoder);
+ if (Status < 0)
+ {
+ break;
+ }
+ continue;
+ }
+
+ PtPrintPacket(Cpu, &Packet);
+ Count++;
+ }
+
+ printf(" ---- core %u : %llu packets decoded ----\n", Cpu, (unsigned long long)Count);
+ pt_pkt_free_decoder(Decoder);
+}
+
+/**
+ * @brief Send a single PT operation and report failures
+ */
+static BOOLEAN
+PtDo(HYPERTRACE_PT_OPERATION_REQUEST_TYPE Type, UINT32 TargetPid)
+{
+ HYPERTRACE_PT_OPERATION_PACKETS Op = {0};
+
+ Op.PtOperationType = Type;
+
+ if (Type == HYPERTRACE_PT_OPERATION_REQUEST_TYPE_FILTER)
+ {
+ //
+ // Trace user-mode execution of the target process only. The kernel
+ // resolves TargetProcessId to the right CR3 for the requested mode
+ // (the KVA-shadow user CR3 here, since we trace user mode) and
+ // programs the PT CR3 filter, so other processes are not traced.
+ //
+ Op.TraceUser = 1;
+ Op.TraceKernel = 0;
+ Op.TargetProcessId = TargetPid;
+ }
+
+ return hyperdbg_u_pt_operation(&Op);
+}
+
+/**
+ * @brief Run the target under Intel PT and decode the result
+ */
+static int
+RunAndTrace(const char * TargetPath)
+{
+ STARTUPINFOA Si = {0};
+ PROCESS_INFORMATION Pi = {0};
+ HYPERTRACE_PT_MMAP_PACKETS Mmap = {0};
+ HYPERTRACE_PT_OPERATION_PACKETS Size = {0};
+
+ Si.cb = sizeof(Si);
+
+ //
+ // Create the target suspended so PT is armed before its first instruction
+ //
+ if (!CreateProcessA(TargetPath, NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &Si, &Pi))
+ {
+ printf("err, could not start '%s' (0x%x)\n", TargetPath, GetLastError());
+ return 1;
+ }
+
+ printf("started '%s' (pid %u), arming Intel PT...\n", TargetPath, Pi.dwProcessId);
+
+ //
+ // 1) Filter for this process, 2) enable tracing, 3) map the buffers
+ //
+ if (!PtDo(HYPERTRACE_PT_OPERATION_REQUEST_TYPE_FILTER, Pi.dwProcessId) ||
+ !PtDo(HYPERTRACE_PT_OPERATION_REQUEST_TYPE_ENABLE, 0))
+ {
+ printf("err, could not enable Intel PT\n");
+ TerminateProcess(Pi.hProcess, 1);
+ goto Cleanup;
+ }
+
+ if (!hyperdbg_u_pt_mmap(&Mmap))
+ {
+ printf("err, pt_mmap failed\n");
+ PtDo(HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE, 0);
+ TerminateProcess(Pi.hProcess, 1);
+ goto Cleanup;
+ }
+
+ printf("Intel PT enabled, %u per-CPU buffers mapped:\n", Mmap.NumCpus);
+ for (UINT32 i = 0; i < Mmap.NumCpus; i++)
+ {
+ printf(" core %u : va=0x%016llx size=0x%llx\n",
+ Mmap.Cpus[i].CpuId,
+ (unsigned long long)Mmap.Cpus[i].UserVa,
+ (unsigned long long)Mmap.Cpus[i].Size);
+ }
+
+ //
+ // Let the target run to completion
+ //
+ printf("resuming target and waiting for it to finish...\n");
+ ResumeThread(Pi.hThread);
+ WaitForSingleObject(Pi.hProcess, INFINITE);
+ printf("target finished, pausing Intel PT\n");
+
+ //
+ // Stop tracing (flushes hardware buffers), then snapshot byte counts
+ //
+ PtDo(HYPERTRACE_PT_OPERATION_REQUEST_TYPE_PAUSE, 0);
+
+ Size.PtOperationType = HYPERTRACE_PT_OPERATION_REQUEST_TYPE_SIZE;
+ if (!hyperdbg_u_pt_operation(&Size))
+ {
+ printf("err, could not query PT sizes\n");
+ PtDo(HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE, 0);
+ goto Cleanup;
+ }
+
+ //
+ // Decode each CPU's trace (match the mmap descriptor by CpuId)
+ //
+ for (UINT32 i = 0; i < Mmap.NumCpus; i++)
+ {
+ UINT32 Cpu = Mmap.Cpus[i].CpuId;
+ UINT64 Bytes = (Cpu < Size.NumCpus) ? Size.BytesPerCpu[Cpu] : 0;
+
+ if (Bytes == 0)
+ {
+ continue;
+ }
+
+ if (Bytes > Mmap.Cpus[i].Size)
+ {
+ Bytes = Mmap.Cpus[i].Size;
+ }
+
+ PtDecodeBuffer(Cpu, (const UINT8 *)(ULONG_PTR)Mmap.Cpus[i].UserVa, Bytes);
+ }
+
+ //
+ // Disable PT (this also tears down the user mappings)
+ //
+ PtDo(HYPERTRACE_PT_OPERATION_REQUEST_TYPE_DISABLE, 0);
+
+Cleanup:
+ CloseHandle(Pi.hThread);
+ CloseHandle(Pi.hProcess);
return 0;
}
/**
- * @brief Load the driver
+ * @brief Load the HyperDbg VMM in local (VMI) mode
*
- * @return int return zero if it was successful or non-zero if there
- * was error
+ * @return int zero on success
*/
-int
+static int
hyperdbg_load()
{
- char CpuId[13] = {0};
-
- //
- // Read the vendor string
- //
- hyperdbg_u_read_vendor_string(CpuId);
-
- printf("current processor vendor is : %s\n", CpuId);
-
- if (strcmp(CpuId, "GenuineIntel") == 0)
- {
- printf("virtualization technology is vt-x\n");
- }
- else
- {
- printf("this program is not designed to run in a non-VT-x "
- "environment !\n");
- return 1;
- }
-
- //
- // Detect if the processor supports vmx operation
- //
- if (hyperdbg_u_detect_vmx_support())
- {
- printf("vmx operation is supported by your processor\n");
- }
- else
- {
-#ifdef HYPERDBG_ENV_WINDOWS
- printf("vmx operation is not supported by your processor "
- "(if you are using an Intel processor, it might be because VBS is not disabled!)\n");
-#endif
- return 1;
- }
-
- //
- // Set callback function for showing messages
- //
hyperdbg_u_set_text_message_callback(hyperdbg_show_messages);
- //
- // Test interpreter with shared buffer
- //
- // g_SharedMessageBuffer = hyperdbg_u_set_text_message_callback_using_shared_buffer(hyperdbg_show_messages_shared_buffer);
+ if (!hyperdbg_u_detect_vmx_support())
+ {
+ printf("err, vmx operation is not supported on this processor\n");
+ return 1;
+ }
//
- // Test interpreter
+ // Install + load the VMM driver (mirrors the CLI's 'load vmm')
//
- hyperdbg_u_connect_remote_debugger_using_named_pipe("\\\\.\\pipe\\HyperDbgPipe", TRUE);
- Sleep(10000);
- hyperdbg_u_run_command((CHAR *)"r");
- hyperdbg_u_run_command((CHAR *)".start path c:\\Windows\\system32\\calc.exe");
- hyperdbg_u_continue_debuggee();
- hyperdbg_u_continue_debuggee();
- hyperdbg_u_continue_debuggee();
- hyperdbg_u_continue_debuggee();
- hyperdbg_u_continue_debuggee();
- hyperdbg_u_continue_debuggee();
- hyperdbg_u_continue_debuggee();
+ if (hyperdbg_u_install_vmm_driver() != 0 || hyperdbg_u_load_vmm() != 0)
+ {
+ printf("err, could not load the HyperDbg VMM\n");
+ return 1;
+ }
return 0;
}
@@ -119,17 +357,25 @@ hyperdbg_load()
* @return int
*/
int
-main()
+main(int argc, char ** argv)
{
- if (hyperdbg_load() == 0)
+ if (argc < 2)
{
- //
- // HyperDbg driver loaded successfully
- //
- // hyperdbg_unload();
+ printf("usage: %s